Thomas Kramer

IT-COW | VBScript

Neuaufsetzen meines stromsparenden Servers

By Administrator at April 03, 2013 18:35
Filed Under: Administration, Anleitungen, Linux, VBScript, Windows

Ich habe meinen stromsparenden Server gerade neu aufgesetzt, diesmal mit Windows 7 Professional als Wirts- und Ubuntu Server 12.04 LTS als Gastsystem.

 

Der Rechner hat 2 GB RAM mit einem Atom N270 (nicht 64-Bit-fähig), hat zwei Notebook-Festplatten angeschlossen und läuft 24/7 durch. Vor zwei Jahren hatte ich 18 Watt Stromverbrauch für das Board gemessen (mit einer Festplatte); es läuft auch mit einem 12-Volt-Netzteil wie man es von Notebooks kennt.

 

Diesmal war auch der eingebaute RDP-Server für die Fernsteuerung für mich von praktischer Bedeutung; wenn ich mich einmal über RDP auf dem Wirtssystem an- und wieder abgemeldet hatte konnte ich mich aber nicht mehr nativ anmelden - außer ich starte den gesamten Rechner im Anmeldebildschirm neu, wobei die virtuelle Maschine aber abrupt unterbrochen wird.

 

Über RDP kann ich im Startmenü nur abmelden und trennen vornehmen aber kein neustarten des Rechners. Daher habe ich eine Batch-Datei mit folgendem Inhalt geschrieben und ins Startmenü verlinkt:

 

vboxmanage controlvm “VM-Name” savestate
shutdown –r

 

Die VirtualBox-Befehle habe ich hier verlinkt.

 

Mein Workflow sieht nun so aus dass wenn ich einmal über RDP dran musste anschließend den Rechner über den Eintrag im Startmenü neu starten lasse. Das Gastsystem wird nach einem Neustart mit automatischem Einloggen mit 10 Minuten Verzögerung gestartet, das ist normal bei dem Aufgabenplaner von Windows 7.

 

Der Hintergrund ist der dass ich den Rechner nun doch nicht ausschließlich als Server benutze, sondern gelegentlich auch als Mediacenter, etwa zum direkten Fernsehschauen oder Musikhören. Der Rechner läuft sehr stabil aber gelegentlich ist ein Neustart sinnvoll wenn die Performance zu sehr in die Knie geht. Ich habe den PC daher so eingestellt dass er sich automatisch einmal pro Woche neu bootet.

 

Erst recht wenn man automatisches Einloggen benutzt sollte der Bildschirm nach einer gewissen Zeit Inaktivität gesperrt werden - per Default ist eine Passwortabfrage in Windows 7 nicht eingestellt kann aber über den Bildschirmschoner nachträglich aktiviert werden.

 

Wirtssystem

 

Folgende Funktionen stellt das Wirtssystem nun zur Verfügung:

 

1. Inkrementeller Benutzer-Ordner mit Änderungshistorie

 

Zunächst will ich den Link von Espend.de posten der übersichtlich zusammenfasst wie anonyme Benutzerfreigaben unter Windows 7 eingerichtet werden können, dazu muss folgendes in der Systemsteuerung geändert werden:

 

1. Das kennwortgeschützte Freigeben muss ausgeschaltet werden. Das muss man dahingehend richtig interpretieren dass erst mit der Ausschaltung anonymer Zugriff auf die Netzwerkfreigaben überhaupt möglich wird – aber nur dort wo es bei den Freigaben auch eingestellt wurde, die Freigaben auf die nur bestimmte Nutzer mit Passwort zugreifen dürfen kann auch weiterhin nicht anonym zugegriffen werden.

 

2. Bei den Freigabeberechtigungen wird Jeder als Benutzer hinzugefügt und diesem Eintrag Rechte zugeordnet. Damit das Lesen auch wirklich für jeden funktioniert muss auch noch Punkt 3 beachtet werden.

 

3. Bei den Dateisystemberechtigungen (NTFS) wird Jeder als Benutzer hinzugefügt und diesem Eintrag Rechte zugeordnet.

 

Danach sollte man noch beachten dass nur neu angelegte Dateien in einem Verzeichnis automatisch die Ordner-Berechtigungen vererbt bekommen – verschiebt man dagegen eine Datei bleiben die Rechte der Datei unverändert. Demnach gilt für jede Datei die für sie einzeln festgelegten Berechtigungen - man kann die Rechte der Dateien aber nachträglich neu vererben lassen.

 

Nun habe ich mir überlegt ein benutzerabhängiges Verzeichnis für mich freizugeben, von diesem Ordner automatisch mittels rsyncBackup eine Historie anlegen zu lassen und das Historienverzeichnis (nur lesend) auch im Netzwerk für mich freizugeben. Der Sinn besteht darin beliebige Textdokumente in das Benutzerverzeichnis abzulegen und jede ältere Version davon über das Historienverzeichnis wieder einsehen zu können.

 

Dazu musste im Aufgabenplaner von Windows 7 des Servers eine neue Aufgabe angelegt werden die automatisch täglich um eine bestimmte Uhrzeit das rsyncBackup-Skript durchlaufen lässt. Das Skript erstellt nur dann ein neues Verzeichnis mit einem Zeitstempel im Historienordner, wenn sich Daten geändert haben – damit das auch so funktioniert muss aber zumindest eine einzige Datei vorhanden sein, denn wenn das Verzeichnis leer ist wird für jeden Tag an dem das Skript gestartet wurde ein neues Verzeichnis im Historienordner angelegt.

 

Das rsyncBackup-Skript erstellt also nur dann ein neues Historienverzeichnis wenn sich Daten geändert haben, dann aber sind scheinbar alle Dateien neu in das Verzeichnis kopiert worden – aber nur scheinbar, denn nur die neuen Dateien wurden hinzukopiert während die alten platzsparend mittels Hardlinks verlinkt wurden.

 

Mittels ctTrueSize lässt sich die wahre Größe eines Verzeichnisses, in welchem Hardlinks stecken, herausrechnen, Windows selbst bietet dazu keine Möglichkeiten an. 

 

Wenn das Historienverzeichnis über eine Netzwerkfreigabe kopiert wird multipliziert sich der Speicherplatzbedarf auf dem Ziellaufwerk natürlich - damit die Links erhalten bleiben muss lokal kopiert und das Ziellaufwerk mit NTFS formatiert sein.

 

Ich muss davon abraten die mitgelieferten Dateien von rsync und cygwin des Skript-Archivs zu benutzen, diese löscht man am besten umgehend, denn sie sind veraltet und können Probleme verursachen. Stattdessen installiert man sich direkt die cygwin-Pakete, wählt explizit rsync dazu und hängt anschließend ;C:\cygwin\bin an die Windows-PATH-Umgebungsvariable damit rsync von überall aufgerufen werden kann.

 

Eines muss ich aber noch dazu sagen, denn das Rotieren der Backups von rsyncBackup funktioniert bei mir weder unter WHSv1 noch unter Windows 7. Damit ist gemeint dass die Historienverzeichnisse nicht verschoben und die Älteren auch nicht automatisch gelöscht werden, sondern stets alle erhalten bleiben. Da aber wie gesagt Hardlinks verwendet werden ist das auch annähernd egal, zumindest wenn man es wirklich nur für Textdokumente verwendet.

 

Man muss sich nur bewusst machen dass einmal angelegte und später wieder gelöschte Dateien für immer im Historienverzeichnis gespeichert bleiben. Für Binärdateien würde ich diese Lösung daher nicht verwenden, aber für solche Dateien benötigt man auch keine Änderungshistorie.

 

Um zu sehen wann welche Dateien neu hinzugekommen sind könnte man noch die Log-Datei von rsyncBackup (liegt im Benutzerordner) ins Historienverzeichnis kopieren lassen – Softlinks funktionieren über eine Netzwerkfreigabe hinweg leider nicht. Diese Log-Datei wird aber schnell einige Megabytes groß; man könnte wichtiges daraus evtl. mit dem MS Log Parser herausfiltern.

 

Windows 8 bietet mit dem Dateiversionsverlauf im Prinzip dieselbe Funktionalität, aber mir gefällt die Transparenz bei dieser Lösung besser, außerdem muss es ja nur einmal eingerichtet werden. Dropbox bietet übrigens auch eine Änderungshistorie mit Wiederherstellungsmöglichkeit, aber nur über das Webinterface und natürlich nur eingeschränkt.

 

Update 09.11.2014: Mittels der DOS-Eingabeaufforderung lassen sich auch mit Windows-Bordmitteln Hard- und Softlinks aufspüren. Für Softlinks lautet der Befehl dir /AL /S und für Hardlinks fsutil hardlink list $Datei. Mittels des Befehls fsutil hardlink create $NewFileName $ExistingFileName lässt sich auch ein neuer Hardlink anlegen. 

 

2. Inkrementelles Blog-Backup

 

Mein inkrementelles Blog-Backup lasse ich mit wget automatisch zeitgesteuert downloaden und mit rsyncBackup die Historie anlegen, und zwar zweimal auf zwei verschiedenen physischen Laufwerken. Natürlich habe ich auch mittels ctTrueSize überprüft dass er wirklich Links statt neuer Dateien anlegt.

 

3. Mailserver-Funktionalität mittels hMailServer

 

Seit Jahren verwende ich einen eigenen Mailserver der aber nur innen erreichbar ist, als praktischen Speicher für meine Mail-Historie. Der Vorteil ist z. B. dass ich auf jedem Rechner stets alle Mails erreichbar habe oder beim Verfassen einer neuen Mail zwischendurch auf einen anderen Rechner wechseln kann, weil Thunderbird sie automatisch im Entwürfe-Ordner zwischenspeichert.

 

Meinen Mailserver hMailServer habe ich auf diesen Server migriert weil dieser im Gegensatz zu dem anderen Rechner 24/7 erreichbar ist. hMailServer speichert die Mail-Dateien einzeln mit eml-Endung und einer GUID im Dateinamen im Dateisystem ab, verwendet aber zusätzlich eine Datenbank zur Verwaltung. Bei der Installation konnte man damals den Datenbanktypen auswählen, damals hatte ich mich für die Voreinstellung MS SQL Server Compact entschieden.

 

Bei der Migration kam es natürlich zu Problemen mit meiner 400 MB-Datenbank. Eigentlich sollte man erwarten dass wenn die Status-Meldung des Servers in Ordnung und die Backups immer fehlerfrei erstellt werden konnten auch der Import ohne Probleme funktionieren sollte. Einen bestimmten IMAP-Ordner mit Icinga-Fehlermeldungen konnte er aber trotzdem nicht importieren - diesen habe ich gelöscht, das Backup von dem anderen Rechner neu erstellt und erneut importiert und dann funktionierte es nach ein paar weiteren Versuchen irgendwann fehlerfrei.

 

Bei der Migration von einer hMailServer-Instanz zu einer Anderen empfehle ich den alten Server nicht gleich zu löschen sondern erst zu schauen ob der Import auf dem neuen Server fehlerfrei funktioniert. Außerdem verwende ich IMAPSize zur Verwaltung denn hMailServer erlaubt keinen direkten Einblick in die Datenbank, nur die Ordnerstruktur wird im Admin-Interface angezeigt.

 

Natürlich muss für die Mailserver-Konfiguration auch die Firewall angepasst werden:

 

1. Bei den eingehenden Regeln muss der Port 143 als Ausnahmeregel hinzugefügt werden, weil auf diesem Port IMAP arbeitet. hMailServer kann auch auf andere Ports eingestellt werden, aber das ist der Standard-Port für unverschlüsselte IMAP-Kommunikation. Ich bevorzuge unverschlüsselte Transfers weil dann der Virenscanner die eingehenden Mails automatisch überprüfen kann und weil der Server eh nur von innen erreichbar ist.

 

Wichtig ist mir noch zu erwähnen dass in der Ausnahmeregel als lokaler Port 143 und als Remoteport alle Ports eingestellt werden muss, denn das findet man nicht so leicht heraus. Mit netstat –an konnte ich die Kommunikation bei ausgeschalteter Firewall beobachten.

 

2. Bei den ausgehenden Regeln muss der Port 110 als Ausnahmeregel hinzugefügt werden, weil auf diesem Port hMailServer über POP3-Verbindungen die Mails von meinen externen Mail-Konten abholt. Dabei habe ich als lokalen und auch als Remoteport 110 angegeben und es funktioniert einwandfrei. Mittlerweile bekommt man auch bereits kostenlos E-Mail-Accounts mit IMAP-Zugriff, aber die Regel ist das noch nicht.

 

Im Mailclient habe ich als IMAP-Server die Verbindungsdaten meines hMailServers eingetragen, aber als SMTP-Server (Verschicken von E-Mails) verwende ich weiterhin die Verbindungsdaten meines Mailproviders. Das hat zwei Gründe:

 

1. Eigene Mailserver die selbstständig Mails ins Internet verschicken landen leicht auf Blacklisten von E-Mail-Providern, die Mails kommen wahrscheinlich nicht an.

 

2. hMailServer als SMTP-Relayer zu verwenden ist z. B. bei GMX nicht so einfach weil die Absender-E-Mail-Adresse mit der E-Mail-Adresse des zum Versenden verwendeten Kontos übereinstimmen muss. Und selbst wenn kann man nur einen einzigen SMTP-Relayer in hMailServer eintragen, für Mehrbenutzer-Betrieb ist das nicht so geeignet.

 

3. Außerdem benötige ich das auch nicht, mir geht es nur darum die Maildaten dauerhaft zu speichern – übrigens inklusive der versendeten Mails die als Kopie im Gesendet-Ordner zwischengespeichert werden.

 

hMailServer liefert ein eigenes Backupskript mit, dieses lasse ich mittels Aufgabenplaner automatisch zeitgesteuert wöchentlich aufrufen – natürlich auf einem anderen Laufwerk als Ziel zwecks Datensicherheit.

 

Somit habe ich immer alle meine Mails im direkten Zugriff, wer das einmal eingerichtet hat will eigentlich nicht mehr darauf verzichten auch wenn man auf die meisten privaten Mails natürlich verzichten könnte.

 

4. DVBViewer für das Streamen von Fernsehen und Programmierung von Aufnahmen

 

DVBViewer kann man für 15 Euro kaufen und dürfte mit seinem Funktionsumfang konkurrenzlos sein, ist auch nur für Windows verfügbar. Die Funktionen die ich benutze:

 

1. Webinterface für das Programmieren von Fernsehaufnahmen.

 

2. Streamen des Fernsehprogramms über den RTSP-Server des DVBViewer-Recording Service, mit diesem kann man nicht nur streamen sondern hat auch vollständige Kontrolle, kann also umschalten obwohl der Empfänger an einem anderen PC angeschlossen ist.

 

Ein sehr praktisches Feature aber etwas unklar einzurichten. Im Recording Service muss der RTSP-Server aktiviert und im Client muss als Hardware über den +-Button ein Virtuelles Gerät (RTSP) eingerichtet werden.

 

3. Streamen des Fernsehprogramms über den UPNP-Server des DVBViewer-Recording Service, mit diesem kann das Fernsehprogramm z. B. über eine Playstation 3 angeschaut werden. Funktioniert absolut problemlos, nur leider hat man dann an der PS3 kein EPG zur Verfügung.

 

Es ist übrigens ohne Probleme möglich zwei Fernsehsender gleichzeitig zu streamen oder aufzunehmen – in SD-Qualität selbst auf einem Atom N270 – mit nur einem einzigen Empfänger. Voraussetzung dafür ist aber dass beide Fernsehsender auf der gleichen Frequenz senden, z. B. arte und EinsPlus oder auch RTL und Vox. Eine Frequenzliste gibt es z. B. hier.

 

Da viele Sendungen wiederholt werden und das Webinterface von DVBViewer auch eine EPG-Suche anbietet sollte ein Empfänger sogar ausreichen, sofern es nur um Aufnahmen geht. Mich stört eigentlich nur dass der Gäste-Zugang keine Aufnahmen planen kann, das heisst jeder muss vollen Zugang zum Webinterface bekommen.

 

Allerdings sind die Aufnahmen unverhältnismäßig groß, bei 2 Stunden Film können schon 3-4 Gigabyte Daten heraus kommen weil die Sender im veralteten MPEG-2-Format senden wie er auch bei DVDs verwendet wird. Heutzutage gibt es aber schon weit effizientere Codecs.

 

Die Aufnahmen bleiben aber nicht dauerhaft auf diesem Rechner, sondern mein Fileserver kopiert sie sobald er sich anschaltet automatisch rüber und konvertiert sie anschließend in das platzsparendere MPEG-4-Format. Dazu verwende ich ein angepasstes VBScript aus dem Home Server Blog-Forum.

 

Das Skript verwendet den VLC zum Konvertieren und ruft ihn mit bestimmten Parametern auf. Wichtig ist es wirklich die VLC-Version 0.8.6 auf dem Fileserver zu installieren, mit meiner zuvor installierten neueren Version funktionierte es auf Anhieb nicht – mit der Alten funktioniert es dagegen einwandfrei. Für meine Anforderungen musste ich es aber erst noch etwas modifizieren.

 

Ein paar Punkte sollte man generell beachten:

 

1. Skripte sollten nicht auf dem Desktop gespeichert werden, man sollte immer im Hinterkopf behalten dass der Windows-Desktop in einem benutzerabhängigen Verzeichnis gespeichert wird. Windows-Dienste müssen aber nicht zwangsläufig den gleichen Account verwenden und können dann u. U. nicht mehr auf das Skript zugreifen obwohl es im Dateiauswahldialog auswählbar war.

 

Die bessere Vorgehensweise ist es das Skripte-Verzeichnis z. B. auf C:\Skripte anzulegen und das Verzeichnis auf dem Windows-Desktop für die Bearbeitung zu verlinken.

 

2. Gemappte Netzlaufwerke auf einem Laufwerksbuchstaben können inaktiv sein. Bei Winamp z. B. merke ich das immer wieder dass es nach dem Wiederaufwecken aus dem Ruhezustand nicht mehr auf die Netzlaufwerke zugreifen kann. Dann öffne ich das Laufwerk im Windows-Explorer, versuche es mit Winamp erneut und es funktioniert auf einmal wieder.

 

Die bessere Vorgehensweise ist es direkt UNC-Pfade im Skript zu verwenden (sofern Quelle und Ziel nicht derselbe Rechner sind) wie z. B. \\homeserver\Freigabe, also Netzwerkpfade. Zumal VLC ohnehin auf das Netzwerkstreaming optimiert ist, ergo perfekt mit UNC-Pfaden umgehen kann.

 

3. Konvertieren “on-the-fly”, also von einem entfernten Rechner auf den Eigenen ohne die Ausgangsdatei zuvor zu kopieren. Das funktioniert nur solange wie keiner der beiden Rechner ausgeht, z. B. durch Zeitpläne. Nach dem Wieder-Aufwachen bleibt VLC ansonsten nämlich im Arbeitsspeicher hängen, verbraucht keine Prozessorlast mehr und die Konvertierungsdatei wächst nicht mehr weiter.

 

Die bessere Vorgehensweise ist es zunächst die Datei mittels robocopy zu kopieren und erst nach dessen Fertigstellung mit dem Konvertieren zu beginnen. Das ist kompatibler zwischen dem Ruhezustand und VLC - außerdem versucht robocopy per Default eine Million Mal eine Datei zu kopieren und mit dem /Z-Parameter fährt es nach einer Netzwerk-Verbindungsunterbrechung auch an der Stelle fort an der es aufgehört hat.

 

In der Hinsicht gab es aber mit dem VBSkript Probleme robocopy direkt aus dem Skript heraus zu starten um die Aufnahme herüberzukopieren. Ich hatte dafür zunächst die whshell.Exec-Methode verwendet welche auf die Fertigstellung des aufgerufenen Programms wartet bevor es mit der Abarbeitung des Skripts fortsetzt.

 

Das Problem war dass robocopy mit dem Kopieren zwar schon fertig war als das Skript fortgesetzt wurde, aber weiterhin im Arbeitsspeicher verblieb und somit den Zugriff auf die von robocopy neu erstellte Datei blockierte. Dadurch erstellt VLC eine lediglich 1 KB große Konvertierungsdatei weil es keinen Zugriff auf die Ausgangsdatei bekommt. Erst nachdem das gesamte Skript durchgelaufen war beendete sich robocopy wirklich - mit taskkill zu arbeiten war nicht die Lösung.

 

Die Lösung sah stattdessen so aus zuerst eine neue Shell mit robocopy zu starten - man beachte das Quoten mit chr(34) und dass die Originaldatei nach dem Kopieren mit dem /MOV-Parameter automatisch gelöscht wird:

 

WShell.run("cmd.exe /c ""robocopy.exe " & strSource & "\ " & strTarget & "\ /IF " & chr(34) & fileName & chr(34) & " /W:10 /TBD /Z /MOV""")

 

Anschließend wird mit der Windows Management Instrumentation auf die Beendigung von robocopy gewartet:

 

'entnommen aus: http://stackoverflow.com/questions/3641163/wait-for-program-to-complete#
'
# Create an event query to be notified within 5 seconds when robocopy is closed
Set colEvents = oWMI.ExecNotificationQuery _
        ("SELECT * FROM __InstanceDeletionEvent WITHIN 5 " _
         & "WHERE TargetInstance ISA 'Win32_Process' " _
         & "AND TargetInstance.Name = 'robocopy.exe'")
 
'# Wait until robocopy is closed
Set oEvent = colEvents.NextEvent

'warten
WScript.Echo "warten...."
WScript.Sleep intWarten2

 

Daraufhin sollte noch ein paar Sekunden gewartet werden bis die Handles von Windows freigegeben wurden und danach erst erfolgt das Konvertieren. Abschließend wird die konvertierte Datei in den Zielordner verschoben und die kopierte Ausgangsdatei wieder gelöscht:

 

'warten, konvertierte Datei verschieben
WScript.Echo "warten...."
WScript.Sleep intWarten
objFSO.MoveFile strTempTarget & "\" & Mid(fileName, 1, InstrRev(fileName, ".")) & "mp4", strConvTarget & "\" & Mid(fileName, 1, InstrRev(fileName, ".")) & "mp4"                               
'
kopierte Ausgangsdatei löschen
WScript.Echo "warten...."
WScript.Sleep intWarten
objFSO.GetFile(strOldTempName).Delete

 

Die Variablennamen müssen bei euch wahrscheinlich noch angepasst werden.

 

Zwischenpfade zu verwenden ist schon wichtig weil das Kopieren durch das Skript z. B. erst dann erfolgen soll wenn DVBViewer mit dem Aufnehmen bereits fertig ist. Dazu verwende ich im DVBViewer Recording Service eine Aufgabe die auf eine Batch-Datei mit diesem Inhalt verweist:

 

move E:\aufnahme_in_Process\*.* E:\Video_Aufnahme\

 

Außerdem wird auch im Skript ein Zwischenpfad verwendet damit die Datei nicht versehentlich während des Konvertierens bereits zum Wiedergeben geöffnet wird. Erst nach der Konvertierung wird die konvertierte Datei in den Zielpfad verschoben und die Ausgangsdatei gelöscht.

 

Das Skript funktioniert nun einwandfrei und VLC fährt nach dem Wieder-Aufwachen des Fileservers aus dem Ruhezustand damit fort die Datei umzuwandeln – das geht mit VLC nur dann wenn Quell- und Ziellaufwerk lokal angeschlossen sind.

 

Als Aufnahmeformat sollte im DVBViewer Recording Service das TS-Format gewählt werden. Die Bandbreite die DVBViewer zum Streamen benötigt: Link. Der Server ist zwangsweise über DLAN (Netzwerk über Strom) angeschlossen, selbst damit konnte ich ohne Probleme zwei Sender gleichzeitig streamen wobei der eine aber direkt über den Switch und nicht über DLAN ging.

 

Die Bitraten sollten etwas erhöht werden denn mit den Voreinstellungen des Skriptes konnte ich deutliche Block-Artefakte sehen. Ich habe sie auf 1500 kbit/s für Video und 196 für Audio erhöht, konvertiert wird wie gesagt in MPEG-4. Mit diesen Einstellungen wurden die Videoaufnahmen auf ein Drittel ihrer ursprünglichen Dateigröße reduziert.

 

Update 06.04.2013: 15 Sekunden Wartezeit nach dem Schließen von Robocopy reichen nicht immer aus damit die Datei-Handles von Windows freigegeben werden. Im Moment habe ich keine Zeit um das Skript weiterzuentwickeln, aber das Programm handle von Sysinternals könnte die Lösung sein um Handles explizit zu schließen.

 

In der MSDN gibt es einen interessanten Artikel zur Abfrage von Handles mittels VBScript und WMI, “Leistungsüberwachung mit Hilfe von WMI”. Den muss ich mir später einmal durchlesen; wegen des Zeitmangels habe ich die Wartezeit vorerst einfach höher gesetzt.

 

Windows ist leider etwas undurchsichtig wann es Dateien wieder freigibt. Soweit ich gelesen habe ist das auch einer der Gründe dafür warum Windows für jedes Update einen Neustart benötigt.

 

Grundsätzlich ist es auch eher ein Programmfehler dass VLC eine Konvertierungsdatei mit 1 KB Größe erstellt obwohl es keinen Zugriff auf die Ausgangsdatei bekam und entsprechend eine Fehlermeldung ausgibt. Im Grunde dürfte es dann gar keine Datei erst erstellen.

 

Ergänzung 13.02.2014: Interne Router, die nur zur Weiterleitung eines Internet-Anschlusses über Funk dienen sollen und somit nicht den Haus-Erstanschluss darstellen sollten nicht den WAN-Port des Routers benutzen sondern nur die Ethernet-Ports (und DHCP deaktiviert haben).

 

Ansonsten werden nämlich die UPNP-Server im Netz behindert; selbst mit aktiviertem UPNP im Router (Port-Weiterleitung) kam UPNP bei mir nie durchs NAT durch. Wie ich UPNP mobil übers Internet in Zukunft nutzen will muss ich erst noch ausprobieren; zumindest hängt am Haus-Erstanschluss kein TP-Link-Router sondern eine Fritzbox.

 

Jedenfalls funktioniert das kabellose Streamen von Live-TV und Fernsehaufnahmen auf mein neues Android-Tablet nun problemlos und ruckelfrei (innerhalb der Reichweite des WLANs). Allerdings nur bei SD-Sendern, für HD reicht es nicht – da sämtliche TV-Sender noch in SD verfügbar sind stellt das aber keine Einschränkung dar. DVBViewer funktioniert in der Hinsicht sehr gut, als Client empfehle ich BubbleUPNP mit dem MX Player.

 

5. SSH-Login mittels CopSSH und PuTTY 

 

Zu SSH habe ich früher bereits eine Anleitung verfasst.

 

Nun kann ich mich auch mittels des SSH-Protokolls auf dem Wirtssystem einloggen; auf ein Auto-Login ohne Passwort über eine Zertifikatsdatei (wie früher) kann ich mittlerweile aber gut verzichten. Das Verzeichnishandling über die Cygwin-Emulationsschicht bei CopSSH ist zwar etwas gewöhnungsbedürftig aber es funktioniert.

 

Mittels

 

ps –e –W –f

 

kann man sich übrigens alle Prozesse aller Windows-Benutzer anzeigen lassen. Einen Windows-Task über kill zu beenden funktioniert aber nicht, stattdessen verwendet man:

 

taskkill /PID $ID /F

 

oder auch

 

taskkill /IM $Dateiname /F

 

Etwas gewöhnungsbedürftig für Benutzer der Eingabeaufforderung von Windows ist dass der Befehl dir in der CopSSH-Bash standardmäßig nicht verfügbar ist und stattdessen "ls -l" eingegeben werden muss. Es kann aber ein Alias definiert werden; der Texteditor nano ist standardmäßig in der Bash von CopSSH verfügbar. Man editiert mit "nano .bashrc" die Einstellungsdatei der Bash (im Homeverzeichnis) und fügt dort den Befehl "alias dir = 'ls --color=auto -l -A'" hinzu.

 

Eine Verzeichnisebene höher geht man mit cd .. (mit Leerzeichen) oder cd / um ins Wurzelverzeichnis zu gelangen. Wenn man einen Prozess starten will hängt man ein & an den Dateinamen an damit der Prozess unabhängig von der Eingabeaufforderung gestartet wird. Um Programme im aktuellen Verzeichnis unabhängig vom Prompt zu starten gibt man also ./Dateiname & ein.

 

Dienste können über den Befehl sc gestartet oder beendet werden, siehe meine frühere Anleitung.

 

Im Gegensatz zur Windows-Eingabeaufforderung merkt sich die Bash permanent die zuletzt eingegebenen Befehle, dazu ist es aber notwendig den Prompt über logout zu beenden statt einfach nur das Fenster von PuTTY zu schließen.

 

Der Wechsel zwischen RDP-Login und nativem Login funktioniert bei mir unter Windows 7 übrigens nur eingeschränkt. Wenn ich einmal über RDP eingeloggt war kann ich mich nicht mehr nativ anmelden, trotz richtigem Passwort – entweder ist das ein Fehler oder eine künstliche Einschränkung.

 

In dem Fall musste ich dann immer neu booten um wieder nativ dran kommen zu können. Deswegen ist ein SSH-Login für mich schon wichtig, aber es ist bei Windows schon eine Umgewöhnung weil man doch gewöhnt ist das meiste über die grafische Oberfläche zu machen.

 

Ergänzung 13.02.2014: Als SSH-Client für Android empfehle ich JuiceSSH, bei vSSH funktionierte die Backspace-Taste der Bildschirmtastatur nicht.

 

6. Ubuntu Server 12.04 LTS unter VirtualBox

 

Wichtig war mir diesmal nur noch LTS-Versionen von Ubuntu Server einzusetzen, den Versionen mit Langzeit-Support.

 

Für das Gastsystem verwende ich VirtualBox und Ubuntu Server 12.04 LTS. Die virtuelle Maschine lasse ich über den Kommandozeilenbefehl vboxheadless -–startvm automatisch nach dem Einloggen starten. Dazu habe ich eine Batch-Datei geschrieben die automatisch über den Aufgabenplaner mit dem Einloggen eines Benutzers gestartet wird – es ist übrigens normal dass dies mit 10 Minuten Verzögerung geschieht. Windows wird mit dem AutoAdminLogon-Feature von Windows immer automatisch eingeloggt.

 

Für RDP muss man dann immer noch Benutzer und Passwort für den Zugriff eingeben, insofern passt das schon. Außerdem ist es nicht so einfach VirtualBox ohne Benutzerkontext zu starten.

 

Ubuntu Server ist ein rudimentäres Linux speziell für Server ohne jegliche grafische Benutzeroberfläche, dementsprechend braucht es auch nur extrem wenig Ressourcen. Obwohl ich 512 MB RAM zugeordnet habe nutzt es regelmäßig nur gegen 8-40 MB Arbeitsspeicher gemäß Taskmanager, obwohl immerhin Apache, Tiny Tiny RSS, DokuWiki und eGroupWare darin laufen, sowie MySQL als Datenbank. Ohne Auslastung der virtuellen Maschine beträgt die CPU-Last auf meinem Atom-Server lediglich zwischen 5-8%, die Grundlast durch die Virtualisierung ist demnach sehr gering.

 

Die LTS-Versionen von Ubuntu (-Server) sind die mit Langzeitsupport. Bei meinem alten Server hatte ich noch den Fehler gemacht nicht die LTS-Versionen zu verwenden, dadurch konnte ich später nicht mehr so schön einfach mittels sudo apt-get install neue Programme installieren sondern musste Pakete herunterladen und händisch installieren. Die LTS-Versionen haben statt lediglich 2 Jahren 5 Jahre Support, entsprechend werden auch die Server für das Repository länger zur Verfügung gestellt.

 

Grundsätzlich ist es gar nicht so schwer ein Ubuntu Server zu konfigurieren. Als erstes muss man die statische IP-Adresse und die sonstigen Parameter des Netzwerkinterfaces festlegen: Link und auch noch den zuständigen Nameserver hinzufügen: Link.

 

Praktisch sieht das dann so aus dass die /etc/network/interfaces-Datei mit einem Texteditor bearbeitet und folgende Zeilen hinzugefügt werden:

 

# The primary network interface
auto eth0

iface eth0 inet static

address 192.168.1.200

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

gateway 192.168.1.1

dns-nameservers 192.168.1.1

 

eth0 ist das Standard-Netzwerkinterface, adress kennzeichnet die eigene IP-Adresse, die Netzmaske beträgt bei privaten Netzen normalerweise immer 255.255.255.0 (254 eigene IP-Adressen demnach möglich), mit network ist der Netzwerkname gemeint der immer mit 0 endet und die broadcast-Adresse ist die Adresse welche Nachrichten an alle im Subnetz verschickt und endet immer mit 255. Als Gateway und DNS-Nameserver wird die IP-Adresse des Routers eingetragen. Zu beachten ist dann noch dass alle IP-Adressen im gleichen Subnetz des Routers liegen sollten.

 

Anschließend wird das Netzwerk mittels

 

sudo /etc/init.d/networking restart

 

neugestartet oder direkt der ganze virtuelle Rechner mittels

 

sudo shutdown –r now

 

Nach dem Einrichten gab es dann natürlich noch die üblichen Fehler zu korrigieren, z. B. bootete Ubuntu nicht automatisch sondern blieb immer im Grub-Bootmenü hängen, der Bugfix dazu ist hier beschrieben. Nach dem Fix bootet Grub nur noch nach einem abrupten Absturz nicht mehr automatisch, aber das ist ja auch unter Windows so und korrekt.

 

Für die Daten-Migration musste ich einen gemeinsamen Ordner zwischen dem Wirts- und dem Gastsystem einrichten, wie das eingerichtet wird steht hier beschrieben, allerdings musste ich den Befehl durch den hier austauschen damit es auch bei mir funktionierte. Benötigt werden dafür auf jeden Fall die installierten Virtual Box Guest Additions.

 

Eingerichtet habe ich für das Gastsystem auch den RDP-Server von VirtualBox um mich direkt draufschalten zu können. Für den RDP-Server muss übrigens neuerdings das Oracle Extension Pack installiert werden, darauf könnte noch hingewiesen werden statt die Anwender im Dunkeln zu lassen warum RDP nicht funktioniert.

 

Nach der Installation funktionierte RDP, aber man muss sich darauf einstellen dass man über die IP des Wirtssystems auf die VM gehen muss. Da ich für das Wirtssystem auch über RDP draufgehe musste ich für die VM natürlich einen anderen Port statt den Standard-Port 3389 verwenden, ich habe 3390 eingestellt.

 

Leider habe ich festgestellt dass ich mit dem RDP-Zugriff auf die VM keinen Backslash und kein @-Zeichen eingeben kann weil die Systemtasten nicht übertragen werden. Nach einem vergleichenden Test mit lokalem Zugriff konnte ich tatsächlich bestätigen dass das an RDP liegt. Das Problem ist bei Google Groups bekannt, der Workaround dort funktioniert bei mir aber nicht. Auf dem Wirtssystem kann ich dagegen über RDP sehr wohl die Systemtasten benutzen, aber das Wirtssystem ist eben Windows und nicht Linux.

 

Irgendwann werde ich daher wohl doch einen SSH-Server in der virtuellen Maschine installieren, aber zur Not kann ich über den gemeinsamen Ordner immer noch die Textdateien mit Sonderzeichen editieren und anschließend mit cp rüberkopieren.

 

Update 18.05.2013: Mit dem Ausführen der Batch-Datei (um den Ubuntu Server zu starten) kam auch immer ein DOS-Fenster hoch, das habe ich nun folgendermaßen unterdrückt:

 

Über den Aufgabenplaner wird ein VBScript gestartet dass folgende Zeilen enthält:

 

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\Pfad….\vboxheadless.bat",0,True

 

Und das VBScript ruft dann die Batch-Datei auf welches vboxheadless und damit die VM startet:

 

echo=off
cd "C:\Users\thomas\VirtualBox VMs"
c:
vboxheadless --startvm "Ubuntu Server 12.04 LTS"

 

Wichtig war mir das Unterdrücken des DOS-Fensters damit ich es nicht aus Versehen schließe und damit den Prozess beende.

 

Ergänzung 01.09.2013: Per Default synchronisiert VirtualBox System-Datum und Uhrzeit automatisch zwischen Wirts- und Gastsystem, bei mir führte das aber zu ein paar stetigen Minuten Differenz die sich auch nicht durch einen NTP-Server beheben ließen.

 

Ich empfehle daher die Synchronisation abzuschalten, das geht durch folgenden Befehl in einer DOS-Box des Wirtssystems:

 

vboxmanage setextradata [VMname] “VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled” “1″

 

Quelle: Link. Im Gegensatz zu der Behauptung im Link funktioniert die Umstellung bei mir sofort, ohne Neustart des Gastes. Testen lässt sich das indem ein NTP-Server (Internetzeit-Synchronisation) im Gastsystem eingerichtet und die Gast-Systemzeit händisch falsch gesetzt wird, nach ein paar Sekunden wird die Systemzeit automatisch richtig eingestellt - sofern die Virtualbox-Synchronisation abgeschaltet wurde.

 

Tipps für das Wirtssystem

 

Abschließend noch ein paar Tipps für das Wirtssystem, Windows 7 Professional. Ich habe die Systemlast mit dem Taskmanager längere Zeit beobachtet und einige CPU-Lastspitzen durch das System beobachtet; der Atom N270 ist ja ein eher leistungsschwacher Prozessor.

 

Wenn im Taskmanager die svchost.exe aufgelistet wird steckt ein installierter Dienst dahinter, über einen Button kann man in dem Fall zu dem verantwortlichen Dienst wechseln. Folgende Systemdienste habe ich bei mir deaktiviert um die verwendete Rechenleistung und damit den Stromverbrauch zu reduzieren:

 

- Windows-Audio-Endpunkterstellung

- Windows-Audio

- Designs

- Windows Defender

 

Zunächst war ich skeptisch ob der DVBViewer tatsächlich das Audio-Signal ohne den Windows-Dienst abgreifen kann, aber nach einem Test kann ich bestätigen dass das Streaming vom Fernsehen wie auch Aufnahmen weiterhin problemlos funktionieren, demnach auf diese Dienste verzichtet werden können. Am Server selbst schließt man außerdem ja keine Audiogeräte an.

 

Da der Defender nach den Aussagen von Trojaner-Board.de nahezu wirkungslos ist und ein paar Lastspitzen verursachte habe ich diesen auch deaktiviert. Zunächst hatte ich außerdem Avast als Virenscanner installiert, den habe ich aber wieder deinstalliert weil er unverhältnismäßig viel Last verursachte – außerdem surft man ja nicht direkt auf dem Server.

 

Weiterhin habe ich auch noch den Process Explorer von ehemals Sysinternals installiert, aber dieser verbraucht ebenfalls unverhältnismäßig viel Last, vor allem im Vergleich mit dem Original-Taskmanager. Daher verwende ich ihn nur in Ausnahmefällen.

 

Bei windows7-tuning.de habe ich außerdem eine sehr gute Liste mit Tipps zur Performance-Steigerung von Windows 7 gefunden, diese wollte ich hier weiterempfehlen.

 

Ergänzung 13.06.2013: Nachfolgend ein paar weitere Tipps für einen eigenen Server:

 

1. Im BIOS sollte aktiviert werden dass der Server nach einem Stromausfall automatisch neu bootet, diese Option sollten die meisten modernen Boards anbieten.

2. Die Tastatur und Maus sollten abgeklemmt und nur dann angeschlossen werden wenn sie tatsächlich benötigt werden. Server bedient man in der Regel über Fernwartung und natürlich benötigen Tastatur und Maus auch Strom wenn sie angeschlossen und betriebsbereit sind.

3. Wenn nötig sollte im BIOS aktiviert werden dass der Server auch ohne angeschlossene Tastatur und Maus bootet. Bei meinem Board pausiert er dann nur das Booten, aber bei manchen anderen Boards wird dann komplett mit einer Fehlermeldung angehalten.

4. Im BIOS sollten die Chipset-Features die nicht benötigt werden aus Stromspar-Gründen ausgeschaltet werden, also z. B. bestimmte alte Schnittstellen wie Parallel-Ports etc.

5. Auf dem Server sollte auf Java/.NET-Programme mit GUI verzichtet und auf nativ laufende Alternativen ausgewichen werden. Alles was rechenaufwendig ist kostet Strom und je weniger das Board selbst an Strom benötigt desto stärker wirkt sich jeder einzelne Posten aus.

6. Auf jeden Server gehört ein Programm mit dem der SMART-Status der Festplatten überprüft werden kann, z. B. CrystalDiskInfo.

7. Etwas das man auch beachten sollte: Stromverbrauchsmessungen unter Windows gelten nicht unbedingt auch für Linux. Etliche Bauteile haben separate Stromsparmodi und unter anderen Betriebssystemen werden die häufig nicht vollständig unterstützt.

8. Google Chrome ist als Webbrowser sicher sehr schnell, legt aber im Aufgabenplaner einen Update-Trigger an der jeden Tag stündlich ausgelöst wird. Mein Tipp das Aufruf-Intervall etwas zu vergrößern.

9. Der Adobe Reader legt einen eigenen Update-Mechanismus an. Mein Tipp mit msconfig die Autostart-Programme zu reduzieren.

 

Gastsystem

 

Im Gastsystem können sich z. B. über den Befehl

 

sudo netstat –tupen

 

alle Netzwerkverbindungen zum Server angezeigt werden. Folgende Funktionen stellt das Gastsystem nun zur Verfügung:

 

1. Apache, PHP und MySQL

 

Fast selbstverständlich aber ich wollte es erwähnen weil die nachfolgenden Dienste darauf aufbauen. Ubuntu Server kann bereits bei der Installation diese Dienste einrichten weil es die verbreitesten Dienste unter Linux sind.

 

2. Tiny Tiny RSS

 

Als Google vor kurzem den RSS-Dienst Google Reader einstellte ging ein Aufschrei speziell durch die Journalisten-Zunft.

 

Mit RSS-Feeds bieten viele Webseiten eine Zusammenfassung ihrer neuesten Beiträge zum Download an. Blogs wie meiner integrieren in diesen RSS-Feeds oft den kompletten Artikel während Nachrichten-Redaktionen meist nur kurze Zusammenfassungen mit einem Link zum Original-Artikel einbetten.

 

RSS-Reader rufen diese RSS-Feeds in regelmäßigen Abständen ab, Online-RSS-Reader wie Google Reader haben zusätzlich den Vorteil dass der eigene PC dafür nicht die ganze Zeit an sein muss. RSS-Feeds haben immer eine bestimmte Länge und speziell bei politischen Nachrichtenseiten verpasst man oft Beiträge wenn man nur einmal am Tag den Feed pollt, denn diese Seiten werden oft stündlich aktualisiert.

 

Ein Online-RSS-Reader hat zudem den Vorteil dass bei versierten Nutzern mit mehreren PCs oder Tablets der Gelesen-Status der Nachrichten synchron bleibt.

 

Es gibt auch globale Verzeichnisse für RSS wie z. B. rss-verzeichnis.de. Weiterhin sind im Internet auch spezielle Dienste verfügbar um gekürzte Nachrichten-Schnippsel in RSS-Feeds nachträglich wieder zu vervollständigen. Ich kenne dazu folgende Dienste:

 

- fivefilters.org

- wizardrss.com

- fulltextrssfeed.com

 

Den Begriff ‘Nachrichten’ für RSS-Feeds sollte man nicht zu wörtlich nehmen denn RSS-Feeds gibt es für Artikel aller möglichen Themen. Mit den zuvor erwähnten Diensten kann man damit vollständige Artikel automatisch herunterladen lassen. Eine Einschränkung dazu ist mir aber bereits aufgefallen – bei Artikeln bei denen man umblättern muss wird stets nur die erste Seite eingelesen, so intelligent sind die Skripte auch wieder nicht.

 

Durch die RSS-Feeds spart man schlicht und ergreifend Zeit beim Lesen, denn man muss sich nicht durch unübersichtliche Nachrichtenportale wühlen und umgeht zudem die Werbung. Man kann alle seine Quellen auf einmal durchsuchen und muss sich nicht für jede Seite an eine andere Navigationsstruktur gewöhnen.

 

Meines Erachtens ist das so ziemlich die einzige Möglichkeit in verschiedensten Themen stets aktuell zu bleiben, denn per Hand surft niemand mehr als seine typischen 5-6 Seiten am Tag ab. So etwas kann beruflich durchaus von Nutzen sein.

 

Die Werbung vollständig zu umgehen ist von den Betreibern natürlich nicht gewollt, dem konträr entgegen läuft als fortgeschrittener Anwender aber der Wunsch sowenig Zeit wie möglich durch Internetsurfen zu verschwenden und sich auf die eigentlichen Artikel zu konzentrieren. Wer solche Vervollständigungsdienste dauerhaft nutzt sollte seine bevorzugten Seiten daher vielleicht gelegentlich durch Mikropayment-Spenden unterstützen.

 

Das Skript von fivefilters.org kann man für 20 Euro sogar kaufen, dass ist natürlich das Optimum um unabhängig zu werden.

 

Jedenfalls habe ich in meinem Gastsystem Tiny Tiny RSS installiert, um über den Webbrowser meine abonnierten RSS-Feeds zu lesen. Da dieser stromsparende Server 24/7 an ist und jede Stunde pollt verpasse ich auch keine Nachrichten mehr.

 

Auf heise online gibt es einen Artikel dazu wie man Tiny Tiny RSS installiert, hier ist alternativ auch nochmal beschrieben wie das Aktualisieren eingerichtet wird. Es ist aber gar nicht zwingend notwendig TTRSS selbst zu hosten, bei RSSly wird es kostenlos gehostet.

 

Die Installation lief leider nicht ohne Probleme ab, leider habe ich mir nicht jeden einzelnen Schritt aufgeschrieben den ich gemacht habe, es gibt aber diverse Installationsanleitungen im Internet. Ich weiß noch dass ein Skript (ttrss_schema_mysql.sql) aufgerufen werden muss dass bei MySQL unter einer angegebenen Datenbank die ganzen Tabellen einrichtet und dass mit chmod bei einigen Verzeichnissen die Rechte rekursiv neu gesetzt werden mussten.

 

Man sollte sich mit MySQL daher etwas auskennen, wie man Datenbanken und Benutzer anlegt und bestimmten Benutzern Zugriffsrechte gewährt. Nachfolgend ein Link mit typischen MySQL-Befehlen. Die Verbindungsdaten dazu müssen in der Konfigurationsdatei von Tiny Tiny RSS (/opt/tt-rss/config.php) eingetragen werden.

 

Wenn man viele Feeds abonniert hat und diese vervollständigen lässt sollte bei eingebetteten Bildern auch die Datenbankgröße irgendwann beachtet werden. Man sollte sich zumindest angewöhnen schnelllebige Nachrichtenseiten-Artikel nicht dauerhaft zu speichern.

 

Die Datenbankgröße von Tiny Tiny RSS kann folgendermaßen ausgelesen werden:

 

mysql –u root –p

show databases;

select table_schema “Database”,round(sum(data_length+index_length)/1024/1024,4) “Size (MB)” from information_schema.tables group by table_schema;

 

Die Quelle des Befehls ist diese Seite.

 

Nachfolgend noch ein Link wie man ein eigenes Stylesheet bei Tiny Tiny RSS einbinden kann um die Lesbarkeit etwas zu erhöhen. Eine Liste mit sehr guten deutschen Blogs gibt es übrigens unter vibrio.eu. Abschließend noch ein Link-Tipp wie man RSS richtig nutzt.

 

Erwähnenswert ist außerdem noch dass es auch eine Android-App für Tiny Tiny RSS gibt.

 

Ich bin noch etwas skeptisch ob die schnell wachsende Datenbank in einem Jahr immer noch performant sein wird, aber wie gesagt kann man bei Tiny Tiny RSS ältere Beiträge automatisch löschen lassen. Falls ich PHP in einem Jahr bereits optimieren muss wollte ich diesen Test von PHP OpCode Caches verlinken.

 

Zur Not kann ich die VM von VirtualBox später aber immer noch auf einen älteren Snapshot zurücksetzen.

 

Ergänzung 27.01.2014: Die Aktualisierung der Feeds über einen cronjob scheint gelegentlich einzelne News auszulassen; es gibt verschiedene Möglichkeiten die Aktualisierung einzurichten.

 

Die bessere Alternative scheint die Variante über den Update-Daemon zu sein. Dazu fügt man in der /etc/rc.local vor dem exit-Befehl folgende Zeile ein:

 

sudo –u www-data php /var/www/tt-rss/update_daemon2.php > /dev/null &

 

Dieses Blog hat es ebenfalls so gemacht.

 

Die übliche Drei-Fenster-Ansicht von TTRSS im Webbrowser ist bei vollständigen Artikeln etwas gewöhnungsbedürftig, denn mit den Cursor Up/Down-Tasten navigiert man zwischen den verschiedenen Artikeln und nicht den Artikelinhalten hin und her.

 

Bei meinem Notebook habe ich nun den herstellerspezifischen Touchpad-Treiber nachinstalliert, welcher eine Rollen-Funktion des Touchpads seitlich rechts aktivieren kann. Konkret bedeutet das dass ich nun mit den Cursor Up/Down-Tasten zwischen den Artikeln wechsle und mit der Rollen-Fläche des Touchpads im Artikelinhalt selbst navigiere, das ist eine brauchbare Navigation.

 

Die TTRSS-Datenbank hat sich nun bei einer dauerhaften Größe von ca. 400 MB eingependelt.

 

Ergänzung 28.01.2014: Ich habe den Schuldigen nun ausgemacht, es lag an dem Vervollständigungsdienst wizardrss.com, welcher offenbar nur einmal pro Tag Beiträge pollt. Wer wirklich keine Beiträge verpassen will sollte daher das Skript von fivefilters.org kaufen.

 

Ergänzung 13.02.2014: Die Original Android-App von Tiny Tiny RSS ist sehr gut; weißer Text auf schwarzem Hintergrund ist optimal um längere Texte zu lesen. Ich benutze es am liebsten im Hochkant-Modus, dann wird ein Artikel bildschirmfüllend dargestellt - wenn ich nach oben oder unten wische scrolle ich durch den Text, wische ich nach links oder rechts wird der vorherige bzw. nächste Artikel angezeigt.

 

Übrigens sollten News-Junkies vielleicht auch Google Trends benutzen.

 

3. DokuWiki

 

DokuWiki habe ich bereits seit Jahren bei mir installiert, bislang nutze ich es eigentlich nur mit Links zu Veranstaltungskalendern in der Umgebung weil sie auf diese Weise zusammen mit der Backspace/Zurück-Taste doch schneller abzugrasen sind wenn sie alle auf einer Seite untereinander aufgelistet sind.

 

DokuWiki speichert seine Daten im Unterverzeichnis /var/lib/dokuwiki/data/pages als einzelne Textdokumente, die Migration auf die neue Version fiel entsprechend nicht schwer. Es gab aber wieder Probleme mit Dateizugriffsrechten die ich wieder mit chmod lösen musste. Solche Probleme treten unter Linux häufiger auf, man sollte sich mit den grundlegenden Unix-Dateirechten etwas auskennen.

 

Glücklicherweise werden Probleme mit fehlenden Zugriffsrechten bei webbasierten Diensten meist im Webinterface direkt angezeigt. Solange die Dateien in keiner Netzwerkfreigabe liegen ist es eigentlich kein Problem einfach 777 (jeder darf alles) auf alle Dateien rekursiv zu vererben, denn wer physisch an die Festplatte herankommt kommt IMMER an alle Daten heran. In Firmen sollte man aber sicherheitshalber restriktiver arbeiten, dort ist meist 755 die richtige Wahl.

 

4. eGroupWare

 

eGroupWare hatte ich früher auch bereits einmal installiert. Es ist eine webbasierende Groupware ähnlich Sharepoint, in der man seine Termine, Adressdaten oder auch Dokumente verwalten kann.

 

eGroupWare ist bei Ubuntu nur bis 10.04 in den Paketquellen vorhanden, wer es auf 12.04 installieren will muss die Repositories von Ubuntu mit einem Link zu OpenSUSE erweitern (welche dort Ubuntu-Pakete bereithalten) und darf danach auch apt-get update nicht vergessen.

 

eGroupWare kann ebenfalls MySQL als Datenbank benutzen, die Konfigurationsdatei liegt unter /usr/share/egroupware/header.inc.php. Ich habe mir die Behebung der Installationsprobleme wieder nicht aufgeschrieben, aber nachfolgend noch ein paar Tipps:

 

Unter http://$Server-IP/egroupware/login.php wird das Login-Formular aufgerufen, wenn es korrekt ins /var/www-Verzeichnis von Apache verlinkt wurde. Über http://$Server-IP/egroupware/setup wird das Installationsskript von eGroupWare aufgerufen, dass unter anderem Probleme auflistet und die Datenbank einrichten kann.

 

Wenn auf dieser Seite nichts erscheint ist das ein Hinweis auf PHP-Probleme, in diesem Fall sollte in die Error-Log-Datei von Apache unter /var/log/apache2/error.log hineingeschaut werden. Wenn die PHP-Probleme behoben wurden sollte der Admin-Benutzer von eGroupWare über das Webinterface gelöscht und neu erstellt werden, sonst bleibt es bei der weißen Seite im Webbrowser.

 

Im Grunde ist eGroupWare nicht schlecht, aber als Terminplaner kann eine solche Lösung nicht konkurrieren. Alarme können höchstens per E-Mail versandt werden, Erinnerungsfenster sind höchstens möglich wenn die Seite im Webbrowser geöffnet bleibt. Für diesen Zweck, zumindest für einzelne Anwender, empfehle ich eher Rainlendar als Desktop-Terminplaner.

 

eGroupWare bietet aber u. a. auch noch ein Adressbuch, Wiki und Dokumentenverwaltung. Nachfolgend ein Link zu einer Installationsbeschreibung für ein Synology-NAS: Link.

 

Für apt-get wollte ich mir außerdem noch die Optionen purge und autoremove im Hinterkopf behalten, damit wirklich alles entfernt wird.

 

5. Subversion

 

Mittlerweile habe ich doch wieder Subversion in dem Gastsystem aufgesetzt; für Installationshinweise zu Subversion könnt Ihr auch in meinem alten Blog-Beitrag weiterlesen.

 

In dem Zusammenhang wollte ich mir noch folgende Befehle notieren:

 

sudo rm -rf /var/local/svn

 

um ein Verzeichnis mitsamt aller Dateien darin zu löschen und

 

du -sh /var/local/svn

 

um die Größe eines Verzeichnisses auszulesen und anzuzeigen, in diesem Fall mein Subversion-Repository. Eine Übersicht zu den Parametern von du findet sich in diesem Link. Mit df kann dagegen der gesamte freie Speicherplatz unter Linux angezeigt werden.

 

Bei einem Netbeans-Projekt hatte ich übrigens das Problem keine Verzeichnisse mehr umbenennen, verschieben oder löschen zu können. In Technet gibt es eine Lösung zu dem Problem, aber das hat nur etwas mit dem Wirtssystem zu tun.

 

Ergänzung 09.07.2014: Nachfolgend der Backup-Befehl von Subversion:

 

svnadmin dump /var/local/svn > /backup/svn.dump

 

Der Pfad /var/local/svn stellt bei mir das Repository dar; rechts von dem Größer-Zeichen steht der Ziel-Pfad mit der zu erstellenden Dump-Datei. Die Dump-Datei hat bei mir nun eine Größe von 455 MB während das Verzeichnis /var/local/svn nur eine Größe von 236 MB einnimmt, vermutlich hat das etwas mit der inkrementellen Speicherweise von Subversion zu tun.

 

Das Wiederherstellen geschieht über den Befehl:

 

svnadmin load /var/local/svn < /backup/svn.dump

 

Nach dem Wiederherstellen müssen noch die Dateisystem-Rechte geändert werden, das geschieht über folgende Befehle:

 

chown -R svn:svnusers /path/to/reponame
chmod -R g+w /path/to/reponame/db/

 

Quelle: Link.

 

Außerdem möchte ich das eBook Versionskontrolle mit Subversion verlinken, welches auf deutsch geschrieben ist und fachlich sehr fundiert zu sein scheint.

 

Da ich meinen Subversion-Server aber in einer virtuellen Maschine am laufen habe könnte ich alternativ auch mit den VirtualBox-Snapshots arbeiten. Zum Testen halte ich es aber für wichtig die Befehle zu kennen.

 

6. SSH-Login mittels OpenSSH und PuTTY

 

Nun habe ich auch einen SSH-Server im Gastsystem eingerichtet, eine Anleitung dazu gibt es beispielsweise bei nixCraft.

 

Damit habe ich nun direkten SSH-Zugang sowohl zu dem Wirts- als auch dem Gastsystem mittels PuTTY von meinem Windows-Client aus.

 

Monats-Liste