Archiv der Kategorie: HowTo’s

Verschiedene Anleitungen, welche ich zusammengestellt habe, um anderen Leuten die Arbeit zu erleichtern

Videoschnitt für Blinde leicht gemacht

Videoschnitt für Blinde, ein hoffnungsloses Unterfangen?
Wenn man den Begriff als solchen interpretiert ist das wohl die Wahrheit und wird uns wohl nie möglich sein. Allerdings habe ich eine Möglichkeit gefunden, mittels einem Programm Videos zu schneiden. Allerdings natürlich nicht nach dem Bildmaterial, sondern nach dem Audiomaterial des Filmes.
Dieses Programm ist nicht ganz kostenlos, aber es lohnt sich für Leute, die dies häufiger machen. Da ich ganze Serienstaffeln und regelmäßig Filme aus dem Free TV aufzeichne und dann auch ohne Werbung anschauen möchte, schneide ich regelmäßig Videos. Daher hat sich der Kauf für mich gelohnt.
Es handelt sich um das Programm VideoReDo. Ich möchte hier kurz die Basics des Videoschnitts mit dieser Software erläutern, natürlich ausschließlich mithilfe der Nutzung der Tastatur.

1. Öffnen wir das Programm

Der erste positive Eindruck drängt sich beim Öffnen des Programmes auf. Das Programm ist vollständig zugänglich, da es mithilfe eines für Screen Reader zugänglichen GUI-Toolkits entwickelt wurde (sieht stark nach wx aus).
Man bekommt beim ersten Start Tips angezeigt, die ich jedoch ausgeblendet habe, da die wenigsten davon Sinn für mich haben. Dann kann man über das Datei-Menü (oder auch über das Drücken der Enter/Leertaste, da man auf dem entsprechenden Schalter steht) einen Öffnen-Dialog aufrufen und eine Videodatei öffnen, welche auch sofort in das Fenster geladen wird.

2. Navigation, Bewegung und Schnitt

Wie aus einigen Audioschnitt-Programmen bereits üblich startet und pausiert man die Wiedergabe mittels der Leertaste. Spulen kann man in dem Video mit den Pfeiltasten in Kombination mit Strg, Alt oder Umschalt, wobei die Modifikatoren eine unterschiedlich lange Sprungzeit zur Folge haben. Mit Seite hoch/runter springt man 2 Minuten vor/zurück. Pos1 bzw. Ende springen an den Anfang bzw. an das Ende des Videos. Alle diese Werte sind, soweit ich weiß, in den Einstellungen aber auch nachträglich änderbar, wobei ich davon noch keinen Gebrauch gemacht habe.
Hat man nun eine Stelle gefunden, an der man etwas aus dem Video herausschneiden möchte, setzt man mithilfe der F3-Taste eine Startmarke. Nun spult man zum Ende des herauszuschneidenden Bereiches und setzt mithilfe der F4-Taste eine Endmarke. Der Bereich dazwischen ist nun markiert. Löschen kann man ihn nun mithilfe der Löschen-Taste. Mehr als nur Löschen habe ich noch nicht versucht, kopieren und einfügen sollte aber theoretisch auf die selbe Art und Weise klappen, d.h. den Bereich auf die bekannte Art und Weise markieren und mithilfe von Strg+C oder Strg+X kopieren/ausschneiden und an der gewünschten Stelle einsetzen mittels Strg+V.
Hat man nun alles kopiert/geschnitten/gelöscht, kann man das Video speichern. Dazu wählt man im Datei-Menü „Video speichern als…“, wählt ein Dateiformat aus und ein Zielort. Hier kann man gegebenenfalls auch noch spezielle Einstellungen für einige Codecs treffen, also natürlich weiterhin vollständig bedienbar. Möchte man mal keine Videodatei, sondern eine DVD haben, kann VideoReDo das auch, ebenfalls im Datei-Menü gibt es dafür den Punkt „Video als DVD speichern“, wo man sogar verschiedene Menü-Stile wählen kann, wobei das natürlich nicht wirklich sinnvoll ist, da wir den unterschiedlichen Designs nicht viel abgewinnen können.

3. No Transcoding for VideoReDo

Eine der besonderen Funktionen von VideoReDo ist die, für die es eigentlich auch entwickelt wurde, nämlich für den Schnitt von Fernsehaufnahmen, ohne nachträglich eine Transkodierung vornehmen zu müssen, so wie diverse Videoschneider wie Adobe Premiere, Nero, Magix und wie sie nicht alle heißen es tun.
Bei einer Transkodierung wird das vorhandene Videomaterial dekodiert und anschließend in dem Zielformat neu enkodiert. Da besonders die Enkodierung viel Zeit beanspruchen kann, sind Rendering-Prozesse wie mit Adobe Premiere für ihre exorbitante Laufzeit bekannt. Die Laufzeit der Enkodierung hängt dabei auch meist direkt von der Qualität des gewünschten Endproduktes ab, wodurch der Prozess immer länger dauert, je besser das Endprodukt aussehen soll.
VideoReDo erkennt jedoch, wenn man ein Eingabeformat, beispielsweise ein MPEG2-Videostream, verwendet und eine Ausgabe mit dem selben Codec durchführen möchte. In diesem Fall wird keine Dekodierung, gefolgt von einer Enkodierung vorgenommen, sondern stattdessen direkt geschnitten. Dabei werden die gewünschten Teile verschoben/kopiert/gelöscht und der Strom so, wie er war, weiterverwendet (gelegentlich werden Fehler behoben). Da hier der aufwändige Prozess der Enkodierung ausgespart wird, dauert dieser Prozess nur einen Bruchteil der Verarbeitungszeit von Premiere und Konsorten. Die hierfür notwendige Zeit hängt nur minimal von der Rechenpower eures Prozessors bzw. der Grafikeinheit ab, sondern deutlich mehr von der Lese/Schreibgeschwindigkeit eurer verwendeten Hardware, von der das Quellvideo kommt und wohin das neue Video geschrieben werden soll. Optimaler Weise sind dies unterschiedliche Geräte, damit das einzelne Gerät nicht mehr als doppelt belastet werden muss, wodurch natürlich auch ein Verlust von Lesee/Schreibgeschwindigkeit eintritt.
Ein Beispiel:
Das Speichern eines 90 Minuten Filmes dauert mit VideoReDo knapp 40 Sekunden, wobei ich zwei Festplatten, über SATA III angebunden, verwende. Von einer HDD wird gelesen, auf eine SSD wird geschrieben. Selber Prozess dauert mit Adobe Premiere knapp 15 Minuten. Verwendet wurde besagter MPEG2-Codec. Die Verarbeitung von H.264 dauert rechnerisch bedingt in Adobe Premiere länger, da der Encoder deutlich mehr Rechnungen beansprucht. In VideoReDo dagegen ist hier kaum ein Unterschied zu bemerken.

4. Fazit

VideoReDo will ich heute nicht mehr missen, es ist mein haupt-Schnittprogramm. Seit Version 5 besitzt es auch eine automatische Werbeerkennung, allerdings ist diese derzeit noch nicht sonderlich erfolgreich. Da ist die Erkennung von TSDoctor deutlich besser, zu dem ich gegebenenfalls auch noch einen Artikel verfassen werde, da es sich hierbei ebenfalls um ein wichtiges Tool in meiner Videoschnitt-Toolchain handelt.
VideoReDo ist auch das einzige, mir bekannte Werkzeug, um als Blinder Videos schneiden zu können. Dies ist zwar nur nach Audioframes möglich, da wir das Video nicht sehen, allerdings haben sich Sehende, die meine filme schauen, sehr gefreut, das man beispielsweise, wenn man nicht genau aufpasst, gar nicht mitbekommt, wann eigentlich eine Werbung vorhanden war und wann nicht. Die Schnitte sind also wohl kaum bemerkbar, was auf die Qualität des Tools schließen lässt.
An alle Blinde, die sich bisher gegen solche Tätigkeiten begründet gewehrt haben, können ihren Sehenden Freunden damit nun auch einen gefallen tun. Greift zu. Der Support der Firma lohnt sich, ich bin Fan von VideoReDo :).

Squasher – Bash shell script zur Erstellung von Festplatten-Abbildern unter Linux

In den letzten Tagen habe ich meine Bash Shell Scripting Kenntnisse erweitert, sodass ich mir endlich eine schöne Applikation aufsetzen konnte, die das Erstellen von Festplattenabbildern via Linux-Kommandozeile möglichst erleichtert. Dazu genutzt wird dd, welches ja der Alleskönner unter Linux zum Thema Datei/Gerätesicherung, insbesondere von ganzen Festplatten, ist. Da die entstehende Datei dann allerdings genau so groß ist wie die Festplatte und das unter Umständen viel zu groß ist, habe ich noch das Squash-Komprimierungssystem benutzt, welches die Daten nicht nur komprimiert, sondern auch noch on-the-fly mountbar ist, sodass man jeder Zeit auf seine Daten zugreifen kann. Eine genaue Anleitung zur Datensicherung/Auslesung inkl. meines Squasher-Scriptes folgt nun:

1. Wiping empty space

Ein wenig zur Praxis: Werden Dateien/Daten auf einer Festplatte gelöscht, werden sie nicht gleich richtig „gelöscht“, sondern nur deren Dateiindex in der logischen Sektion der Festplatte, in der die Positionen aller Dateien auf der Festplatte stehen. Das ganze läuft unter dem Motto: ich kenne deinen Namen nicht, also kenne ich dich nicht mehr. Aus den Augen, aus dem Sinn. Die Datei existiert praktisch weiter. Zumindest solange, bis die Platte neue Daten darüber schreibt. Da diese Dateien aber bei einer kompletten Plattensicherung mit gesichert werden, aber ja eigentlich nicht mehr gebraucht werden, können wir sie praktisch überschreiben. Optimalerweise mit Daten, die sich viel besser komprimieren lassen, also 0-en. Dann wird das Festplattenabbild um so kleiner. Man nehme also das Zielgerät, welches man sichern möchte, und binde es ein:

sudo mount device zielpfad

Zum Beispiel:

sudo mount /dev/sda1 /mnt

Sollte das ganze ohne Fehler ablaufen, findet ihr den gesamten Platteninhalt nun im Zielpfad, oder in meinem Beispiel unter /mnt.
Dorthin verfrachten wir nun eine Datei, welche ausschließlich 0-en enthält und den gesamten freien Speicher der Platte belegen wird, sodass wirklich alle gelöschten Daten vernichtet sind. Dazu nutzen wir, oh Wunder, dd:

dd if=/dev/zero of=/mnt/tmp.zero bs=4M

Das ganze zeigt praktisch keine Ausgabe und blockiert die Konsole solange, bis die Platte restlos voll ist. Dann gilt es nur noch, die tmp.zero-Datei zu löschen (siehe Plattenstrategie oben):

rm /mnt/tmp.zero

Jetzt noch die Platte aushängen:

sudo umount /mnt

Noch ein wenig zur Erklärung der obigen Vorgänge: /dev/zero ist ein von Linux bereitgestelltes Gerät, welches ausschließlich 0-en ausgibt, egal, wie lange man daran nuckelt. Daher ist es sehr praktisch zur Befüllung von Speicher mit 0-en. Zur Anwendung von dd betrachte man sich bitte das dd-manual, welches beispielsweise direkt vom Ubuntu-Wiki und vielen Anderen zur Verfügung gestellt wird.

2. Saving harddrive

Jetzt greift mein squasher ein: sämtliche Kompression und Sicherung an einen frei wählbaren Ordner übernimmt der squasher. Und das sogar mit einer hübschen Fortschrittsanzeige. Klingt praktisch, oder?
Ladet euch ersteinmal mein Wunderwerk herunter: Squasher
Das ganze jetzt in einen Ordner eurer Wahl gelegt und ausführbar gemacht, beispielsweise mit:

chmod 755 squasher.sh

Um das Script zu nutzen, muss allerdings noch etwas nachinstalliert werden, nämlich die für das eigentliche squashing und das Auslesen des Squash-Systems nötigen Tools:

sudo apt-get update
sudo apt-get install squashfs-tools

Und außerdem, falls nicht sowieso längst vorhanden, die Bash shell:

sudo apt-get install bash

Jetzt sollte alles funktionieren :).
Das Script nimmt als ersten Parameter das Gerät, von welchem ein Backup erstellt werden soll. Der zweite Parameter, welcher optional ist, nimmt die Zieldatei an. Wird keine Zieldatei angegeben, wird die Ausgabe in squasher.squash gespeichert. Wir führen das Script also folgendermaßen aus:

sudo ./squasher.sh /dev/sda2 festplatte.squash

Wichtig dabei ist, dass das Script mit root-Rechten ausgeführt wird, denn sonst wird dd nicht korrekt arbeiten. Aber keine Angst, dass Script warnt euch, falls es nicht als root ausgeführt wird. Es erwartet euch nach kurzem eine wunderhübsche Fortschrittsanzeige, die wie folgt aussieht:

dd: xxx MB, ab,cd MB/s; squashed: ef,ghI

Beispiel:

dd: 250 MB, 65,0 MB/s; squashed: 235M

Die Erklärung dazu: Die dd-Ausgabe im ersten Teil des Fortschrittsbalkens gibt an, wie viel Daten dd schon kopiert hat und wie schnell dd gerade arbeitet. Die squashed-Angabe gibt dazu an, wie groß das squash-Archiv gerade ist. Optimalerweise sind die dd-Werte mit denen der Squash-Ausgabe nicht kompatibel, squash müsste eigentlich immer kleiner sein.
Hinweis: Man kann nicht nur einzelne Partitionen sichern, sondern problemlos auch ganze Festplatten auf einen Rutsch. Dazu einfach die gesamte Platte zum Sichern angeben, also:

sudo ./squasher.sh /dev/sda

Einzig und allein das Auslesen macht hinterher den Unterschied.

3. Reading through treasures

Und beim Auslesen sind wir auch schon angekommen. Wir haben nun ein optimalerweise schön kleines squash-Archiv (im Vergleich zur Originalplatte!) und wollen Daten auslesen, ohne das Archiv erst wieder auf eine physikalische Platte zu schreiben? In voller Größe? Keine Sache:

sudo mount festplatte.squash /mnt

Über die „read-only“-Ausgabe beschweren wir uns nicht weiter. Ja, das System kann im Nachhinein nicht mehr verändert werden, aber das wollen wir ja auch nicht, wir wollen nur Lesen, also was solls. im Ordner /mnt finden wir jetzt das dd-Image, welches von unserem zu sichernden Ziellaufwerk/unserer zu sichernden Partition erstellt wurde.

3.1 Reading partitions

Fangen wir mit dem einfachen an: Das Auslesen von Partitionen. Das ist nämlich ein Witz:

sudo mount /mnt/festplatte.squash.img /mnt2

Fast trivial, findet ihr nicht?
Unter /mnt2 findet ihr jetzt alle gesicherten Daten. Na dann viel Spaß damit :).

3.2 Reading through (hard)drives

Das Auslesen von ganzen partitionierten und gesicherten Platten dagegen erfordert die Installation eines extra Werkzeugs:

sudo apt-get install kpartx

Dieses Werkzeug erlaubt es uns, ein dd-Image mit mehreren Partitionen in seine Ursprungspartitionen zu zerlegen und diese einzubinden. Dazu führen wir aus:

sudo kpartx -a /mnt/festplatte.squash.img

Dieses Kommando bietet uns nun im Ordner /dev/mapper eine Liste von loopback-Geräten an, also unserer Festplatte, beispielsweise loop0 mit einer Partition dahinter, beispielsweise p1. Um nun eine in festplatte.squash.img enthaltene Partition einzubinden, genügt Folgendes:

sudo mount /dev/mapper/loop0p1 /mnt2

Und ihr findet alles, was ihr braucht, in /mnt2

4. Finished!

So, dass wars. Ich hoffe das Tool hilft euch etwas. Nur zur Demonstration, was man beim Sichern einer Platte eigentlich eingeben müsste:

mksquashfs empty_dir festplatte.squash -p 'festplatte.squash.img f 444 root root dd if=/dev/sda1 bs=4M'

Dieses Kommando würde aber auch keine ordentliche Ausgabe liefern, sondern nur eine mksquashfs Ausgabe, die angibt, wieviel bereits gesquashed wurde und welche Kompressionsstärke gerade anliegt. Die dd-Ausgabe sieht man gar nicht. Dazu müsste man ein weiteres Terminal-Fenster öffnen und dort folgendes eingeben:

sudo kill -USR1 $(pidof dd)

Dann wieder zurück in das squash-Fenster, wo auf magische Weise, mitten in der squash-Ausgabe, ein dd-Statusbericht erschienen ist. Nicht gerade schön, oder?
Davon mal abgesehen bietet mein Script auch jederzeit die Möglichkeit zum Abbruch mittels ctrl+c. Dieser Vorgang löscht dann sämtliche Spuren des nicht abgeschlossenen squash-Vorgangs und kehrt wieder in die Konsole zurück, als wäre nichts gewesen. Ein Luxus, wie ich finde…
So, und jetzt viel Spaß beim squashen. Und habt ihr Ideen, Korrekturen oder Wünsche, nutzt die allgegenwärtige Kommentar-Funktion.

DeckPrinter für YGOPro DevPro

In den letzten Tagen habe ich für den Yu-Gi-Oh Online-Simulator YGOPRO mit dem DevPro Interface, zu finden auf YGOPRO.de, einen DeckPrinter gebaut, da es vor Allem für Blinde schwer ist, dieses Programm zu bedienen, nämlich praktisch unmöglich, weshalb ich immer mit sehender Hilfe spiele. Da ich trotzdem gern mal alle Karten eines Decks auf einen Blick sehen würde, inkl. aller Effekte etc, habe ich ein Python-Script gebaut, welches dies realisiert. Es wird einfach in den DevPro-Installationsordner gelegt und ausgeführt, indem man den Decknamen als Parameter übergibt. Es handelt sich hierbei natürlich wieder um ein Kommandozeilen-Script. Für weitere switches siehe man das Argument „–help“.
Das Programm ist multilingual in der Hinsicht, dass es die Sprache zur Ausgabe wählt, welche man in DevPro zuletzt gewählt hat.
Außerdem sollte es mit allen gängigen Python „Compilern“ funktionieren. Für py2exe und cx_Freeze sind jedenfalls diesbezügliche Tweaks enthalten.
Sollte es irgendwo Fehler geben oder Wünsche bezüglich der Features bestehen, schreibt es in die Kommentare.
Ihr findet das Script hier zum Download.

Office 365 Installationsfehler 3-1

Heute soll es um ein Problem gehen, vor welchem ich gestern zusammen mit einem Mitstudenten stand. Wir waren dabei, Office 365 zu installieren, bekamen allerdings auch immer den mysteriösen Fehlercode 3-1, über den Microsoft rein gar nichts verlautbaren lässt. Einzig ein paar Forenbeiträge geben Aufschluss, allerdings das auch zumeist nur sehr sporadisch. Daher hier ein Lösungsansatz, der zumindest bei mir funktioniert hat.

1. Alles muss raus

Falls ihr, wie ich, vom Systemhersteller oder aus welchem Grund auch immer bereits ein Office installiert habt, vorher deinstallieren. Das ganze am besten über das Windows-eigene „Software ändern oder entfernen“ Panel entfernen, optimaler wäre es jedoch, es mithilfe eines Tools wie „Revo Uninstaller“, welches nachträglich noch nach Rückständen sucht, oder CCleaner zu entfernen, den ich sowieso jedem Computernutzer empfehle, weil er sehr viele Freiheiten und Features bietet. Also, deinstallieren, warten, bis das ganze erledigt ist, aber halt… noch gibt es genug zutun.

2. Safety first: Microsoft hilft aus

Falls ihr glaubt, euer Office wäre nun rückstandslos entfernt… nein. Genau das Gegenteil ist der Fall. Bis ich das gerafft hatte, war knapp eine halbe Stunde in die Binsen gegangen. Und das dafür notwendige FixIt Tool von Microsoft findet man auch fast nirgends. Daher habe ich es hier für euch bereitgestellt. Ladet euch also folgendes herunter:
Microsoft Office FixIt
Anschließend führt ihr dieses „Programm“ aus. Es sucht nach Überresten von Microsoft Office und entfernt sie. Anschließend startet ihr euren Computer neu.

3. Bahn frei, Kartoffelbrei

Jetzt könnt ihr loslegen: In meinem Fall konnte ich Office 365 nun mit dem automatisch generierten Installer installieren, welchen man bekommt, wenn man sich mit seinem lizensierten Konto auf office.microsoft.com anmeldet. Das ganze dauert zwar etwas und es werden eine Menge Daten heruntergeladen (ca. 1 GB), was vor allem mir, mit meinem 10 GB Download-Volumen in der HS schwer zu schaffen gemacht hat, aber am Ende funktioniert alles wie gewünscht.
Ich wünsche euch noch viel Spaß mit Office 365 aka Microsoft Office 2013.

FileZilla Server mit Netzwerkzugriff und TLS/SSL konfigurieren

Kürzlich stieß ich auf ein Problem, als ich versuchte, einen FTPES-Server, basierend auf FileZilla, in einem Netzwerk einzurichten, wobei die Daten, die verteilt werden sollten, jedoch nicht von dem lokalen System, sondern von einem Netzwerkpfad angezapft werden sollten. Dabei stieß ich auf einige Komplikationen, weshalb ich dieses Tutorial einrichten möchte, damit spätere Generationen diese Probleme möglichst umgehen können.

1. Grundvoraussetzungen

Verwendet wird FileZilla Server 0.9.42 unter Windows 7 Home Premium bzw. Professional 64-bit.
Die Topologie sieht wie folgt aus:
Mein Großrechner ist nicht dauerhaft aktiv, stellt allerdings die Netzwerkquelle dar und bietet sämmtliche Ordner, die verteilt werden sollen, über das Netzwerk an. Logisch, dass die Ordner nur zugänglich sind, wenn der Rechner gerade läuft. Warum ich dann nicht diesen Rechner als FTP-Server nutze hat damit zutun, dass zusätzlich auch Medien von anderen Netzwerk-Geräten verfügbar gemacht werden sollen, der Server außerdem in der Lage sein soll, jederzeit Daten aufzunehmen und, sofern im Netzwerk/lokal vorhanden, abzugeben. Darum fungiert ein relativ guter Laptop als Server-System. Er beinhaltet den Filezilla Server.
Mein Großrechner heißt im Netzwerk „TONI“, der Ordner, in dem sich alle Unterordner befinden, „network“. Diese Ordnerstruktur ist von dem Laptop natürlich ansteuerbar.
Der Kontakt nach außen wird über eine Fritzbox blockiert, weshalb, wenn der Server öffentlich zugänglich gemacht werden soll, der Port 21 (standard), der Port 990 (für implizites TLS) und eine Portreihe für die passive Datenübertragung freigeschaltet werden soll. Wie dies im genauen funktioniert, entnehmen sie der Bedienungsanleitung ihres Routers oder Google.

2. Installation

Zu der Installation möchte ich keine vielen Worte verlieren. Ich gehe davon aus, dass sich alle Leser dieses Artikels zumindest einigermaßen mit Windows und den üblichen Vorgängen auskennen. Es gibt jedoch eine Sache, die unbedingt beachtet werden muss. Bei der Installation des FilleZilla Server Dienstes wird die Installationsrutine fragen, ob der Dienst (Service) mit Windows installiert werden soll und dabei immer gestartet werden soll, nur, wenn der aktuelle Benutzer angemeldet wird oder, ob der Dienst gar nicht installiert werden soll. Obwohl der letzte Punkte mit „not recommended“, heißt „nicht empfohlen“ bezeichnet ist, wählen wir es trotzdem aus und setzen die Installation wie gewohnt fort. Warum das nötig ist? Dazu kommen wir später.

3. Die Konfiguration für TLS

Wer sich dafür nicht interessiert, mag es überspringen. Da es aber gerade für mich wichtig war, da ich reine unverschlüsselte Verbindungen auf meinem Server nicht zulasse, möchte ich es trotzdem hier mit erwähnen.
Grob umrissen benötigt man ein Zertifikat, um die Verschlüsselung effektiv zu machen. Eine relativ einfache Möglichkeit zur Zertifikaterstellung bietet FileZilla Server mit dem „Certificate Generator“, welchen man in den Server-Einstellungen (FileZilla Interface auf 127.0.0.1 (localhost) und leerem Passwort) unter der Registerkarte SSL/TLS Settings finden kann. Ich für meinen Fall habe eine Verschlüsselungsstärke von 4096 Bit gewählt, was derzeit die stärkste, aber auch rechnungstechnisch aufwändigste Verschlüsselung darstellt.
Achtung: Rechnungstechnisch aufwändigste bedeutet, dass bei der Datenübertragung vom Server ständig Daten mit diesem Schlüssel verschlüsselt/entschlüsselt werden müssen. Je stärker der Prozessor, desto schneller kann er dies natürlich durchführen. Je schneller die Daten reingehen/rausgehen, desto schneller muss er aber auch rechnen. Am besten ist es, die Verschlüsselungsstärken zu testen, denn für jede Leitung sind verschiedene Stärken sinnvoll. Ich habe einen durchschnittlichen Upload von 500 kb/s und mein Server-System schafft die Verschlüsselung ohne größeren Aufwand. Beim Download sieht das eventuell wieder etwas anders aus. Dazu muss man sagen, dass mein Laptop einen der neuesten Intel i3 Prozessoren beinhaltet. Wenn der verwendete Prozessor also schwächer sein sollte, gilt es hier aufzupassen.
Nun erstellt man mit den vorgegebenen Werten (Maske möglichst detailgetreu ausfüllen) ein Zertifikat was, je nach Verschlüsselungsstärke, unterschiedlich lange dauern kann (keine Angst, die Erstellung hat nichts mit der späteren Rechendauer zutun, um Daten zu entschlüsseln/verschlüsseln).
Nun noch der Haken bei „Enable FTP over SSL/TLS support (FTPS)“ gesetzt und man kann bei Private Key und Certificate File jeweils die generierte .crt-Datei eintragen. Ein Passwort wird ebenfalls empfohlen. Um explizites FTPES nun über den Port 21 zuzulassen, hakt man das entsprechende Feld, „Allow explicit FTP over TLS“ an. Ist man nun so paranoid wie ich, hakt man auch das Feld „Disallow plain unencrypted FTP“ an, was bedeutet, dass kein unverschlüsseltes FTP mehr möglich ist. Zum Abschluss noch der Sicherheit halber das Feld „Force PROT P to encrypt file transfers in SSL/TLS mode“ anhaken und fertig.

4. Die Passive FTP Konfiguration

Hier trat für mich das erste Problem auf. Bei mir hat der FileZilla Server nämlich die Angewohnheit, trotz der IP-Abfrage, wie sie empfohlen wird,nur meine Netzwerk interne IP-Addresse zu erhalten, was mir doch einige Schwierigkeiten gemacht hat. Selbst ein von mir selbst geschriebenen, einwandfreier Dienst zur Erkennung der externen IP hat nichts genützt. Aber alles der Reihe nach.
Mein Router ist von außen über eine DNS-Addresse erreichbar. Diese DNS verlinkt auf meine IP-Addresse und das funktioniert einwandfrei. Normalerweise wird das immer genutzt, wenn man eine dynamische IP-Addresse besitzt, d.h. das sie, im Normalfall ein mal täglich, geändert wird, dies kann sich je nach Anbieter unterscheiden. Nun habe ich gerade dieses Glück und das ist genau das Problem, dass ich bisher immernoch habe, aber ich werde mich melden, sobald ich dafür eine Lösung gefunden habe. Alternativ kann man auch eine fehlerhafte Einstellung in FileZilla belassen, jedenfalls wenn man den FileZilla Client zur Verbindung nutzt, der merkt nämlich, wenn eine falsche IP-Addresse bemerkt ist und benutzt intuitiv die richtige IP-Addresse.
So. Die nötigen Einstellungen befinden sich unter dem Punkt „Passive mode Settings“. Prinzipiell nicht viel, aber immerhin etwas. Wenn man, so wie ich, hinter einem Router sitzt, dessen IP sich ständig ändernkann, wird der Default mode, der standardmäßig angehakt ist, nicht viel nützen. Da man aber auch keine konstante IP-Addresse hat, die man bei „Use the following IP:“ eintragen könnte, bleibt nur noch die letzte Option, „Retrieve external IP address from:“. Standardmäßig eingetagen ist dort die Addresse zu einem Script von Filezilla, das merkwürdigerweise auch 127.0.0.1 zurückgibt, was absolut nicht meiner öffentlichen IP entspricht… Selbst mit meiner Alternative blieb hier nichts anderes übrig, als doch immer meine momentane IP bei „Use the following IP:“ einzutragen.
In meinem Fall musste ich eine bestimmte Spanne an Ports im Router freigeben. Um den Server darauf zu konfigurieren, wird nun der Punkt „Use custom port range:“ angehakt und anschließend der Startport und der Endport eingetragen. Alle Ports dazwischen, inklusive der Start- und Endports werden nun verwendet, um im Passivmodus Verbindung mit dem Server aufzunehmen.

5. Die Strukturierung

Ich habe auf meinem Server eine gruppenbasierte Ordnung erstellt. Dazu benötigt man ein Wurzelverzeichnis, gängigsterweise C:\FTP oder ähnliches, hauptsache es ist von den Berechtigungen her zugänglich. In diesem Verzeichnis befindet sich ein Verzeichnis für jeden Benutzer mit dem identischen Namen wie der Benutzer. Viel mehr benötigt es als Grundlage gar nicht.

5.1 Die Netzwerk-Anbindung

Was ebenfalls zur Strukturierung gehört ist der, gerade in diesem Tutorial wichtige Punkt der Netzwerkanbindung. Die meisten Windows-Benutzer, Anfangs auch ich, sind davon ausgegangen, dass eine Einbindung des Netzwerk-Pfads als Netzlaufwerk besonders optimal wäre, da man dann nur einen Laufwerksbuchstaben hätte, der alles regeln würde. Doof nur, dass dieser Laufwerksbuchstabe keine physikalische Verlinkung ist und für FileZilla nicht erkannt werden kann. Diese Feststellung hat mich, mit fremder Hilfe, knapp eine Stunde gekostet. Wie auch immer, es gibt ja eine Alternative, nämlich die direkte Ansteuerung über das Netzwerk. Netzwerk-Systeme werden durch einen einführenden doppelten Backslash (\\) eingeleitet, anschließend folgt der Netzwerk-Systemname (in meinem Fall „TONI“). Anschließend folgt, wie bei einem stink normalen Pfad das Anhängsel, in meinem Fall \network. Der gesamte Pfad zu dem Ordner test auf dem lokalen Netzwerk auf dem Rechner „TONI“, welcher nicht über Netzlaufwerke angesteuert wird, lautet also: \\TONI\network\test
Nicht wundern, warum ich euch das erzähle, dass wird gleich nötig werden.
Hier folgt nun auch die Begründung, warum wir bei der Installation den Dienst gar nicht erst installiert haben, denn das hat etwas mit der Zugänglichkeit des Netzwerks zutun. Wie ich nach einer ganzen Weile Testerei und Rumspielerei feststellte, wird nämlich der Dienst von FileZilla vom System gestartet, der Netzwerkzugriff aber ist nur über den momentan angemeldeten Benutzer realisierbar. Das führt dazu, dass FileZilla keinen Zugriff auf das Netzwerk bekommt, wenn man FileZilla als Dienst installiert. Installiert man es stattdessen nicht als Dienst, sondern als Autostart-Anwendung, wird sie vom momentanen Benutzer gestartet und hat somit Zugriff auf das Netzwerk. Das war im Prinzip der wichtigste Punkt.

5.2 Die Gruppenstrukturierung

Nun, um das Fass voll zu machen, noch der Aufbau der Gruppenstruktur, welche die Netzwerk-Verlinkung enthält. Wir erstellen eine Gruppe „Beispiel“. Dieser Gruppe verpassen wir das Wurzelverzeichnis C:\FTP als Basisordner (Set as home dir). Anschließend fügen wir einen Ordner hinzu, nämlich einen Netzwerkordner. In meinem Fall wieder der uns bekannte \\TONI\network\test. Einfach „Add“ auswählen, in den Ordner Netzwerk browsen, warten, bis der Netzwerk-Dienst alle Geräte inkl. Ordner aufgelistet hat, das Gerät TONI auswählen, den Ordner network betreten und den Ordner test auswählen. Anschließend noch einen Rechtsklick auf den nun erstellten Ordner und „Edit Aliases“ auswählen. Nun wird auch der Sinn der Ordnerstruktur erkennbar: Wie uns der kleine englische Text verrät, kann man nämlich :u als Platzhalter für den Benutzernamen verwenden. Nun geben wir also als Alias C:\FTP\:u\test an und bestätigen mit OK. Den ganzen Dialog schließen wir nun mit OK und schreiten fort zum nächsten, abschließenden Schritt.

5.3 Die Benutzerkonfiguration

Wir benötigen nun noch einen Benutzer, nennen wir ihn ebenfalls „Beispiel“. Er ist Mitglied der Gruppe „Beispiel“. Nun verpassen wir ihm ein Wurzelverzeichnis, nämlich C:\FTP\Beispiel (der Ordner muss vorher erstellt werden). Nun einfach per FTP verbinden (Achtung, wenn ihr, wie ich, das TLS konfiguriert und die unverschlüsselte Verbindung ausgeschaltet habt, könnt ihr dafür keinen handelsüblichen Browser verwenden. Ich würde euch empfehlen, den FileZilla client zu verwenden). Nachdem ihr das Zertifikat akzeptiert habt werdet ihr sehen, dass sich in der Ordnerliste nicht nur der Punkt „..“ befindet, sondern auch der Ordner „test“. Betretet ihr ihn, befindet ihr euch, aus Sicht des Clients gesehen, auf „/test“, aus der Sicht des FTP-Servers jedoch auf „\\TONI\network\test“. Herzlichen Glückwunsch, euer System läuft.

6. Anhang: Serverkonfiguration von einem anderen Netzwerk-System aus

Ich habe den Wunsch, den Server an einen Platz zu bringen, wo ich keinen ständigen Zugriff auf ihn habe bzw. wo er in Ruhe liegen kann, ohne das er jemanden stört. Darum möchte ich mir so viel wie möglich Remote Access ermöglichen. Dazu gehört auch die Steuerung und Konfiguration des FTP-Servers vom Netzwerk aus. Dazu müssen einige Einstellungen vom Server-PC aus getroffen werden:
Man öffnet dazu die Einstellungen und wählt den Punkt „Admin Interface“. Hier gibt man in den Eingabefeldern „*“ ein, wodurch der Server für das Netzwerk zugänglich gemacht wird. Abschließend muss noch ein Passwort erteilt werden. Dazu wählt man „Change Password“ an und trägt das selbe neue Passwort in die zwei dafür gedachten Felder ein. Nun noch OK gedrückt und der Server sollte auch vom Netzwerk aus ansteuerbar sein. Das einzige, was nur von 127.0.0.1 aus konfiguriert werden kann, sind die Admin Interface Einstellungen, d.h. man kann von außen das Passwort nicht ändern, sicherheitshalber.

So, dass wars. Hoffentlich konntet ihr damit etwas anfangen. Ich war einfach nur der Meinung, 5 Stunden Arbeit sollten so viele Menschen wie möglich erspart werden ;).