Zentyal bare metal

Im Kontext des Projektes Homeserver NXT verfolgte ich zuerst eine monolithische (in Nachhinein: blöde) Denke. Firewall, Fileserver und Nameserver integriert Zentyal. Zentyal basiert auf Ubuntu – also wäre da auch der Gameserver integrierbar gewesen. Dazu: eine hübsche, moderne Weboberfläche zur Administration vom Sofa aus. Das wollte ich mir zumindest mal ansehen.

Der erste Versuch, Zentyal direkt auf die Zotac ID88 zu bekommen, klemmte schon am Kernel des Installers, der nicht erkennen wollte, dass ich von USB installierte und nicht von CD. Die Meldung war, wenn ich mich richtig erinnere

Your installation CD-couldn’t be mounted. This probably means that the CD-ROM was not in the drive. If so you can insert it and try again.

Retry mounting the CD-ROM?

Dieser Fehlermeldung kann man abhelfen, wenn man die zentyal.iso mit auf den Stick kopiert, von dem aus man installieren will.

Taucht dann die Fehlermeldung auf, wechselt man mit Alt F2 auf eine Shell, aktiviert diese mit Enter und erstellt sich zuerst ein Verzeichnis, in das man den USB Stick mounten kann:

mkdir /media/stick

mount -t vfat /dev/sdb /media/stick

Dann erstellt man sich ein Loop Device und wirft über dieses dem Ubuntu/Zentyal Installer die gewünschte CD-Rom zum Fraß vor:

mount -t iso9660 -o loop /media/stick/zentyal.iso /cdrom

Mit Alt F1 kommt man zurück zum Installer und kann diesem nun vergaukeln, alles wäre OK.

Zentyal kommt so zwar auf die ID88 – aber das hilft nicht viel, weil die Chips des NICs zu neu sind.

Welcher Idiot kauft auch Hardware mit Realtek Chips?

Sofern man unbedingt die alte Ubuntu 12.04 LTS / Zentyal Distri auf der ID88 haben muss, dann darf man ab hier die Realtek NICs umschiffen, bis ein neuerer Kernel und Treiber an Bord sind. Der einfachste Weg ist, sich die WLAN Karte der ID88 (Intel) zu konfigurieren und über diese dann weiter zu arbeiten. Wie das geht wird hier beschrieben (man kann sich bei den nötigen Schritten auch mit einem lokalen Repo auf USB Stick helfen) – aber ich hatte da schon eingesehen, dass die Idee, Zentyal direkt auf das Metall zu werfen, zu unflexibel ist.

Also kam ein aktueller Ubuntu 13.10 Server (der sich reibungslos vom USB Stick installieren lässt) an Bord, VirtualBox dazu und Zentyal in eine VM. Aber das ist wiederum im nächsten Post beschrieben …

Homeserver NXT

Bin grad kaum zum Bloggen gekommen, weil mein Kopf voll war mit Heimnetzkram. Da ist aber nun der Knoten geplatzt und in den nächsten Posts schildere ich dann Schritt für Schritt, wie ich dieses aufgesetzt habe.

Angefangen hatte alles damit, dass meine Smoothwall auf ihrem P III langsam zu lahm wurde. Je älter die Kinder desto mehr Geräte im Haus und desto heftiger die Belastung auch für die Firewall. Außerdem wollte ich ausmisten. In den letzten Jahren hatte sich eine solch große Zahl an Computern bei mir im Arbeitszimmer versammelt, dass auf dem Fußboden schon kein Platz mehr war.

Altehardwarestapel im Kellerflur

Jedes Stück Hardware hatte einen Platz im Hinterkopf, irgendein Projekt, das ich unbedingt mal machen wollte … aber die Zeit war nie da. Am Ende standen da 8 ungenutzte Rechner der Pentium IV Klasse rum, dazu Tastaturen, Mäuse, Bildschirme, weitere Netzwerk- und Grafikkarten … Nerdbastelkram eben. Nichts, was man heute noch wirklich haben will und auch nichts, was ich als Firewall nutzen wollte, weil selbst der Sparsamste von diesen Kisten (ein FSC mit Siemens-Mainboard) noch 90 Watt die Stunde beim Nixtun verbriet.

Energiesparend und vor allem auch möglichst klein sollte die neue Lösung sein.

Zuerst dachte ich an einen Nachbau des in der c’t beschriebenen 11-Watt-Servers, konnte aber das Netzteil nicht auftreiben. Auf der Suche nach einem Standort für diesen Rechner in meinem Arbeitszimmer fiel mir auf, dass diese Kiste schon wieder in Midi-Tower-Größe anrücken würde. Möglichst klein wäre das auch nicht.

Ein Raspberry Pi dann also? Dem traute ich nicht zu, als Firewall ausreichend zügig zu arbeiten. Außerdem trieb mich die Idee um, doch noch andere Dienste zu betreiben. Die Projekteideen – einst für die P4 Hardware vorgesehen – ploppten immer wieder aus dem Hinterkopf wieder ins Bewusstsein und verhinderte eine schnelle Entscheidung zwischen Mini und Midi …

Ein permanent laufenden Fileserver als Backup-Rechner und Tauschordner, ein eigener Nameserver als Ergänzung zur Firewall für eine noch bessere Kontrolle der Webzugriffe und noch weniger Schnüffelei von Außen … und für uns Jungs und Freunde noch ein dezidierter Gameserver für Minecraft, OpenArena und World of Padman.

Am Ende und nach viel Hin und Her wurde es nun ein Zotac ID 88 mit Core i3-3220T CPU mit 16 GB Ram und einer WD NAS Festplatte mit 1 TB. Der schluckt Idle 18 Watt und unter Last bisher nicht mehr als 23 Watt, was ein wenig unter dem Verbrauch der alten Firewall liegt. Dem Basteltrieb ist damit eine physikalische Grenze gesetzt: Erweiterungen sind unmöglich, das Kästchen ist voll.

Installiert sind inzwischen IPFire als Firewall, ein Fileserver unter Samba und ein Nameserver mit Bind. Der Gameserver muss bis zu den Ferien warten.

Unter dem Tag homeserver nxt geht es dann bald weiter mit Hinweisen zur Einrichtung und meinen Erfahrungen …

WDR4900 WAF=0

wdr4900_leds

Oha. Der WAF beim TPLink WDR4900 ist sehr, sehr niedrig. Das liegt vor allem an den grell blauen LEDs des Geräts und dessen Unsitte auf dem Uplink dauernd zu blinken.

Zwar bietet OpenWrt theoretisch die Möglichkeit, die LEDs zu steuern – aber eben nur die, die vom System auch erkannt werden.

An vier von den blauen Dingern komm ich ran (und dann wären da noch zwei grüne für USB Aktivitäten) – aber eben nicht an die LEDs des Switches.

Jetzt hilft nur noch schwarzes Isolierband 🙁

wdr4900_leds [ODT] [180 kb]

wdr4900_leds [PDF] [180 kb]

OpenWRT auf TL-WDR4900 N900

Im Prinzip läuft bei der Installation von OpenWRT auf dem TPLink WDR4900 alles wie gewohnt: einfach rund.

Leider fällt bei diesem Router aber beim OpenWRT Release Barrier Breaker der Aufruf des Web-Interfaces Luci auf die Nase und meldet:

/usr/lib/lua/luci/dispatcher.lua:284: No valid theme found

Bei mir lag das daran, dass das Default Theme nicht installiert war, weil ich mir gleich das Paket luci-theme-bootstrap gezogen hatte.

Ein

opkg install luci-theme-openwrt

schafft Abhilfe.

Das Theme Bootstrap (svn-r9934-1) lässt sich aber bei mir auch im Anschluss hieran nicht aktivieren. In Luci wird es nicht einmal als Auswahlmöglichkeit angezeigt.

WOL

Im BIOS zuerst die entsprechende Funktion aktivieren. Dann das ethtool installieren

sudo apt-get install ethtool

und auf die Netzwerkkarte (hier ETH0) loslassen:

sudo ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: g
        Wake-on: g
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: yes

Der momentane Zustand bei meiner Karte für ETH0 ist der Zeile Support Wake-on: g zu entnehmen. Das kleine g steht für Wake on MagicPacket ™ – siehe man page zum ethtool.

Das setzt man einmal händisch mit

sudo ethtool -s eth0 wol g

und trägt diese Zeile ohne sudo auch in die /etc/rc.local vor dem exit 0 ein.

In die /etc/init.d/halt kommt noch ein

NETDOWN=no

statt des vorhandenen yes, damit die Karte nicht abgeschaltet wird, wenn der Rechner runter fährt.

Man notiert sich nun die MAC Adresse der ETH0 (ifconfig eth0) und ein shutdown -h knippst den Rechner aus … Jetzt kann man testen, ob man dieses Gerät auch wieder über’s Netz wach bekommt. Hierzu benötigt man das Paket etherwake

sudo apt-get install etherwake

Ein WOL Paket auf die MAC 00:30:05:83:0d:74 wird gesendet mit

sudo etherwake 00:30:05:83:0d:74

… und dann kann man mit Hoffen beginnen. Oder mit debuggen. Je nach Netzwerkkarte.

Wenn es funktioniert, dann kann man sich einen Alias in der .bashrc oder .bash_aliases hierzu anlegen, der einem das Memory zur MAC Adresse abnimmt

alias fscon=’sudo etherwake 00:30:05:83:0d:74′

Wer über einen WLAN AP oder das Internet WOL Pakete versenden will, kann Pech haben – diese können nicht über jedes Gerät geroutet werden. Router, die directed broadcasts unterstützen, können aber entsprechend konfiguriert werden.

Ein Script fährt nun unseren Backup-/Spiele-/Tauschordner-Server am späten Abend runter – und ein Befehl holt diesen wieder her, wenn er gebraucht wird. Ist schon vor dem späten Abend klar, dass er ausgeschaltet werden kann, dann hilft eine alias Definition in der .bashrc weiter:

alias fscoff=’ssh -t benutzer@192.168.0.112 „sudo shutdown -h now“‚

Man wird dann zwei mal nach dem Passwort gefragt – einmal für SSH und dann noch für das sudo. Das können nun auch die Kinder, mit diesen beiden Aliasen umgehen: fscon schaltet die Kiste ein – fscoff schaltet sie wieder ab. Und vom gesparten Strom gehen wir essen.

Thunderbird Kalender Rettung

Ralfs Thunderbird Kalender hatte von einem Tag auf den anderen alle Termine vergessen und egal was wir hier versuchten – ich konnte diese nicht mehr herstellen. Dazu kam, dass Thunderbird obendrein auch alle Spracheinstellungen ignorierte. Also kopierten wir zuerst das Profil weg

mv .thunderbird .thunderbird_bak

und starteten Thunderbird neu. Plötzlich sprach er wieder Deutsch und auch der Kalender funktionierte. Der Fehler schien demnach irgendwo im Profilverzeichnis versteckt zu sein …. leider war aber nicht heraus zu finden, wo genau.

Mir erschien es an diesem Punkt einfacher zu sein, Thunderbird neu einzurichten statt viel Zeit in Reparaturversuche zu stecken. Wir beendeten also TB und aktivierten das alte Profil wieder

rm -r .thunderbird

mv .thunderbird_bak .thunderbird

und installierten einen lokalen Mailserver

sudo apt-get install dovecot-postfix

Der lokale Mailserver wurde in TB als neues E-Mail Konto eingerichtet (benutzername@localhost) und In diesen lokalen Mailserver schoben wir dann auch alle Mails aus TB. Die Mails waren damit vor unseren weiteren Spielchen mit TB sicher.

Die gesammelten Adressen hätten wir an dieser Stelle ebenfalls exportieren sollen … was aber leider vergessen wurde. Ralf hat das – denke ich – inzwischen auch schon gemerkt 🙁

TB wurde beendet und sein Profilverzeichnis wieder nach .thunderbird_bak geschoben.

Im nächsten Schritt wurde TB dann erneut neu gestartet. Im Kalender wurde ein einzelner Termin eingetragen, um diesen zu initialisieren. Dann wurde TB wieder beendet.

Aus dem alten Profilverzeichnis

~/.thunderbird_bak/xyz-und-so.default/calendar-data/

wurde dann die local.sqlite in den neuen Profilordner unter

~/.thunderbird/xyz-und-so.default/calendar-data/

kopiert. Die durch die Termineintragung (s.o.) im neuen Profilordner vorzufindende local.sqlite muss hierbei überschrieben werden.

Leider waren wir jetzt nicht am Ende angelangt – denn: Die local.sqlite enthält zwar die eigentlichen Kalenderdaten, aber leider nur in Bezug auf eine bestimmte Kalender-ID. In unserem Fall auf die Kalender-ID aus dem alten Profilordner, so dass diese ID im nächsten Schritt noch geändert werden musste. Das geht mit dem Programm sqlitebrowser recht einfach, den man sich wie folgt an Bord holt:

sudo apt-get install sqlitebrowser

Die für den nächsten Schritt benötigte ID des neuen Kalenders besorgt man sich aus der Datei prefs.js im aktuellen .thunderbird Profilpfad. Diese sieht ungefähr so aus:

calid

Mit dem sqlitebrowser wurde die ~/.thunderbird/xyz-und-so.default/calendar-data/local.sqlite geöffnet und die folgenden SQL Befehle im Tab „Execute SQL“ ersetzten dann die ID des Kalenders in der local.sqlite

update cal_attendees set cal_id=’ID des Kalenders‘;

update cal_events set cal_id=’ID des Kalenders‘;

update cal_properties set cal_id=’ID des Kalenders‘;

update cal_recurrence set cal_id=’ID des Kalenders‘;

Thunderbird wurde dann wieder gestartet … und siehe da: Zwar waren die Zuordnungen zu bestimmten lokalen Kalendern verschwunden, aber wenigstens die Termine selbst waren alle wieder da.

VirtualBox, rdesktop und ssh Tunnel

sshtunnel_rdesktop

Folgendes Setup: In der Schule steht ein VMHost auf dem einige VMs mit Hilfe von VirtualBox virtualisiert wurden. Der VMHost ist von Außen nur über SSH und dort nur über Port 2233 zu erreichen.

Säße man direkt am VMHost würde man die rdesktop-Sitzung mit dem folgenden Befehl aufrufen:

rdesktop localhost:3389

Diese Sitzung will man nun auf dem Laptop zu Hause haben. Also braucht man einen SSH Tunnel in die Schule, über den man sich die rdesktop Sitzung nach Hause holt.

Ein derartiger Aufbau des SSH Tunnels erfolgt wie hier angegeben, wenn man auch lokal die rdesktop Session auf Port 3389 sehen will:

ssh -p 2233 benutzer@vmhost.schule.tld -L 3389:localhost:3389

Lokal macht man dann (in einem zweiten Terminal) die rdesktop Session auf, wie wenn man direkt am VMHost sitzen würde: rdesktop localhost:3389

pydio

pydio

AjaXplorer nennt sich – wie im Blog der Entwickler schon seit Ende September angekündigt – seit dem letzten Update pydio … und liefert neben der gleichen guten Bedienbarkeit und Konfigurierbarkeit als Web-Aufsatz für WebDAV-Server auch professionellen Support.

Für  kleinere Installationen braucht pydio noch immer kein Datenbank-Backend, auch wenn ein solches die Performanz deutlich hebt.

Apps für iOS und Android stehen zur Verfügung, kosten aber etwas Kleingeld wenn ich mich richtig erinnere (mein ajaXplorer/pydio-Serverchen läuft schon seit einer der ersten Versionen und ich sag diese Ausgabe immer als Dankeschön für die Entwickler).

tl;dr: EIn Blick auf pydio sollte werfen, wer die vielen Funktionalitäten von ownCloud (Kalender, Adressbuch etc.) nicht braucht.

Hochkommata

csv_hochkommaersetzung

Lädt man sich von Webseiten Internationaler Organisationen wie dem IMF Datensammlungen im CSV / XLS Format herunter, dann kann man diese nicht auf die Schnelle in Diagramme umwandeln, weil die Zellen mit Zahlen in deren Dokumenten als Text markiert sind. Dies geschieht durch Setzung eines Hochkommas, das man erst entfernen muss.

Mit der Funktion /Bearbeiten /Suchen & Ersetzen … sucht man nach ^.*$. Zu ersetzen ist mit &. Ein Häkchen bei „Regulärer Ausdruck“ muss gesetzt sein.

EDID und nvidia-settings

modevalidation

Ich hatte in Erinnerung, dass mein Beamer NC VT580 die Auflösung meines Laptops mit 1440×900 Pixeln eine Zeit lang hatte darstellen können. Irgendwo auf der Strecke hat er das aber vergessen. Auch nvidia-settings zeigte diese nicht mehr an … bis heute.

Die Lösung ist recht simpel. Die /etc/X11/xorg.conf sieht bei mir nun so aus:

Section „Device“
Identifier      „Default Device“
Option  „NoLogo“        „True“
Option  „ModeValidation“ „AllowNonEdidModes“
EndSection

Mehr steht da nicht.

Die entscheidende Zeile hierbei ist die Option „ModeValidation“. Schaltet man nämlich die EDID-Vorgaben des Beamers im Treiber ab, dann kann der Beamer wieder alles, was er wirklich kann, und nicht nur das, was der NV-Treiber gerade aus der EDID annimmt. (via)