Ein einfacher Bilderserver kann mit dem Programm llgal erstellt werden. Das Programm ist ein Nachfolger von igal and kann rekursiv Verzeichnisse durchsuchen und einfache HTML-Bildergalerien erstellen. Wer HTML-Code und Bilder trennen will, muss sich jedoch mit einem Trick behelfen.

llgal ist ein UNIX/Linux-Programm zur Erstellung von Bildergalerien in HTML. Im Gegensatz von PHP-Galerien wie PHP Gallery werden die Bilder dabei nicht dynamisch beim Aufrufen per Browser erstellt, sondern per Kommandozeile. Das Ergebnis ist statisch.

Dies ist ein Vorteil für kleine Homeserver, die mit Atom-Prozessoren oder auf relativ schwachbrüstigen Architekturen laufen: Man kann eine Galerie per Cronjob generieren lassen (z.B. nachts) und die statischen Seiten dafür schnell besuch

Szenario: Bilder per Samba, Galerie per Webserver

Das Szenario, in dem ich llgal einsetze, ist folgendes: In einem für Samba zugänglichen Verzeichnis liegen die Bilder, z.B. /home/shared/pictures/. Der Webserver greift auf /var/www/ zu.

Es wäre nun ein leichtes, einen Symlink in das Verzeichnis /var/www/ zu legen und mit Hilfe von llgal im Bilderverzeichnis eine Galerie anzulegen. Das jedoch gefällt mir nicht besonders. llgal legt nämlich jede Menge HTML-Dateien im Bilderverzeichnis an, was die Übersicht meines Erachtens stört. Schöner wäre es, wenn die Bildergalerie nur innerhalb des Webverzeichnisses erstellt wird und auf die Bilder in den Samba-Shares zurückgreift.

Leider kann llgal keine Bildergalerien außerhalb der Ordnerstruktur anlegen, in der die Bilder liegen – zumindest nicht, wenn llgal rekursiv aufgerufen wird. Außerdem muss bei llgal darauf geachtet werden, dass die Bilder auch vom Webserver aus zugreifbar sind.

Eine sehr einfache Lösung für dieses Problem ist das anlegen symbolischer Verknüpfungen der Bilder in einer Verzeichnisstruktur innerhalb der Umgebung des Webservers. Sehr einfach ist dies mit lndir möglich. Dieses Programm legt Schattenverzeichnisse von Ordnern an. Dies ähnelt dem normalen Kopiervorgang eines Verzeichnisses, mit einer wichtigen Ausnahme: Dateien werden nicht kopiert, sondern es werden symbolische Verknüpfungen von ihnen angelegt. Ordner werden normal kopiert. Dadurch gaukelt man dem Webserver eine Spiegelung der Bilddateien vor, ohne viel Speicherplatz zu verschwenden.

Um lndir und llgal zu installieren, muss man unter Debian oder Ubuntu folgendes eigeben:

Nun kann man einen Bilderordner anlegen und die Galerie erzeugen:

Die Befehlsfolge erstellt einen Bilderordner „pictures“ im Verzeichnis des Webservers. Mit Hilfe von lndir wird nun ein Symlink-Spiegel des Samba-Bilder-Ordners erstellt. Nun kann man mit Hilfe von llgal innerhalb des Ordners rekursiv die Bilder erzeugen. Der Samba-Ordner an sich bleibt von HTML-Bildern verschont.

Die obige Befehlsfolge kann nun leicht in ein Skript verpackt werden und regelmäßig von crond aufgerufen werden, um die Galerie zu aktualisieren. Die Thumbnails müssen von llgal nicht immer wieder neu erzeugt werden.Lediglich die geänderten Daten werden übernommen.

Einen Wermutstropfen hat das oben beschriebene Vorgehen noch: Falls in der Galerie Bilder gelöscht wurden, werden die Symlinks nicht zwangsweise gelöscht. Dies muss per Hand gemacht werden oder man schreibt sich ein Skript, welches die Verzeichnisse vergleicht und ggf. alte Einträge löscht.

P.S.: Falls die Bilder in llgal nicht richtig rotiert erscheinen, hilft vielleicht das Tool jhead. Dieses Programm kann Bilder automatisch korrekt rotieren, indem man den Parameter -autorot verwendet, also z.B. jhead -autorot meinfoto.jpg. Dies funktioniert natürlich nur mit Fotos, die entsprechende/korrekte exif-Informationen enthalten.