Web-Fotogalerie Piwigo

Bisher habe ich alle Fotos, die ich anderen Leuten zeigen bzw. zur Verfügung stellen wollte, mit jAlbum zum Web-Album gemacht. Das war (ist) zwar nicht wirklich schwierig, ich finde es aber doch immer recht mühsam. Ich mache das nicht so oft, d.h. ich muss mich auch jedes Mal wieder neu reindenken. Ich habe zwar irgendwann aufgehört, immer die neue Version zu benutzen – trotzdem ist mir das irgendwie (zu) nervig – zumal ich immer noch irgendwie einen Passwort-Schutz drauflegen wollte und das mit htpasswd erst vergeben etc. etc.

Jetzt bin ich auf die Piwigo gestoßen: Eine Web-Server-Software, die ich mir auf meinen Server installieren kann und recht leicht (auf verschiedene Weisen) neue Fotos hochladen. Dabei gibt es eine Benutzerverwaltung, sodass auch das mit dem Passwort-Schutz kein Problem ist.

Also perfekt ist das auch nicht, aber schon ein Fortschritt:

Mit docker und einem docker-compose.yml (siehe Anhang) lief das zwar recht schnell, aber das Hochladen ging schecht. Danach habe ich nach etlichem Probieren und Fehlersuchen vom Image linuxserver/piwigo auf mathieuruellan/piwigo umgestellt. Nun ist’s besser. (Problem war u.a., dass er beim Hochladen via Web immer auf einen unerklärlichen Timeout gestoßen ist.)

Hinter einem Apache Reverse-Proxy läuft Piwigo straight forward (config: s.u.). Ich habe mir noch mit letsencrypt ein Zertifikat gemacht. Alles gut.

Problem sind die Dateinamen-Beschränkungen. So kommt er nicht mit den von ‚Apple Fotos‘ beim Exportieren erstellten Dateinamen zurecht. Und zwar zum einen mit den Leerzeichen, und zum anderen mit der Reihenfolge aufgrund der Tatsache, dass Apple keine führenden Nullen bei kleinen laufenden Nummern verwendet. Mit folgendem Bash-Einzeiler benenne ich sie nun erstmal um und lade sie dann auf einer der folgenden Weisen hoch:

rm -f ._*
ls *.jpg | while read name ; do neu=`echo "$name" | sed 's/ - /-/' | sed 's/-\([0-9]\).jpg/-0\1.jpg/'`;  mv "$name"  "$neu" ; done

Hochladen via rsync und „Synchronisieren“:

  • so geht’s:
    rsync -av --delete Album root@docker-prod:/opt/dockervolumes/piwigo2/data/galleries/
    

    Dann in der Web-Oberfläche via „Administration“ -> „Werkzeuge“ -> „Synchronisieren“.

  • Vorteil: Aktualisierung rel. reinfach via neuem rsync + neu Synchronisieren in der Oberfläche.

  • Nachteil: Er kommt z.B. nicht mit Umlauten klar 🙁

Ich habe beschlossen, das nicht zu verwenden.

Hochladen von der Web-Oberfläche oder von der App aus

  • so geht’s: In der Web-Oberfläche via „Administration“ -> „Fotos“ -> „hinzufügen“.
  • Vorteil: Schnell mal was hochladen.
  • Nachteil: Unhandlich für viele Fotos.

Hochladen via Sync-Script

  • so geht’s: piwigo_import_tree herunterladen, installieren und dann:
    perl /data/Fotos/piwigo_import_tree.pl --base_url=https://piwigo.steinkopf.net --user=stk --password=ppp --directory=MeinAlbum
    

    Erstellt bzw. aktualisiert ein Album mit dem Namen „MeinAlbum“ aus dem lokalen gleichnamigen Verzeichnis.

  • Vorteile: Leicht zu verwenden, Aktualisierung einfach, Umlaute kein Problem.

  • Nachteil: rel. langsam. (ca. 2 Sekunden pro Bild). Wie es scheint, wird dabei schon beim Hochladen mehr „vorausberechnet“, was sonst erst beim ersten Anschauen passiert.

Anhang: Meine docker-compose.yml:

version: '2'
services:

  mysql:

    # see https://hub.docker.com/_/mysql/
    # piwigo läuft offenbar aktuell (05-2016) nicht auf mysql 5.7
    image: 'mysql:5.6'
    mem_limit: 300m
    environment:
      - MYSQL_ROOT_PASSWORD=xxx
      - MYSQL_USER=admin
      - MYSQL_PASSWORD=yyy
      # name of a database to be created on image startup
      - MYSQL_DATABASE=piwigo
    #ports:
      # - 3306:3306
    restart: always
    volumes:
      - /opt/dockervolumes/piwigo2/var_lib_mysql:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro


  backup-mysql:

    image: 'dsteinkopf/backup-all-mysql:latest'
    environment:
      - BACKUP_INTERVAL=86400
      - 'MYSQL_CONNECTION_PARAMS=--user=admin --host=mysql --password=yyy'
    links:
      - mysql:mysql
    restart: always
    volumes:
      - /opt/dockervolumes/piwigo2/mysql-backup:/var/dbdumps


  piwigo:

    image: 'mathieuruellan/piwigo'
    links:
      - mysql:mysql
    ports:
      - 8087:80
    restart: always
    volumes:
      - /opt/dockervolumes/piwigo2/data/galleries:/var/www/galleries
      - /opt/dockervolumes/piwigo2/data/local:/var/www/local
      - /opt/dockervolumes/piwigo2/data/plugins:/var/www/plugins
      - /opt/dockervolumes/piwigo2/data/themes:/var/www/themes
      - /opt/dockervolumes/piwigo2/cache:/var/www/_data/i
      - /opt/dockervolumes/piwigo2/upload:/var/www/upload
      - /var/log
      - /var/log/piwigo:/var/log/apache2
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro


  phpmyadmin:

    image: 'corbinu/docker-phpmyadmin:latest'
    environment:
      - MYSQL_PORT_3306_TCP_ADDR=mysql
    ports:
      - 8088:80
    restart: always
    links:
      - mysql

Anhang: Reverse-Proxy-Config:

<IfModule mod_ssl.c>

<VirtualHost *:443>
        ServerName piwigo.steinkopf.net
        DocumentRoot /export/www/piwigo.steinkopf.net/
        ServerAdmin webmaster@steinkopf.net

        #LogLevel warn
        ServerSignature Off
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/piwigo.steinkopf.net_access_log combined

        <Directory "/export/www/piwigo.steinkopf.net/">
            Options None
            AllowOverride All
            Order allow,deny
            Allow from all
            DirectoryIndex index.php index.html index.htm
            php_flag output_buffering on
            php_flag safe_mode on
        </Directory>

        RewriteEngine On
        ProxyRequests Off

        ProxyPass        / http://docker-prod.steinkopf.net:8087/
        ProxyPassReverse / http://docker-prod.steinkopf.net:8087/

SSLCertificateFile /etc/letsencrypt/live/piwigo.steinkopf.net/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/piwigo.steinkopf.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/piwigo.steinkopf.net/chain.pem
</VirtualHost>

</IfModule>

3 thoughts on “Web-Fotogalerie Piwigo

  1. Umbenennung bei 3-stelligen Nummern:

    ls *.jpg | while read name ; do neu=`echo "$name" | sed 's/ - /-/' | sed 's/-\([0-9]\).jpg/-0\1.jpg/' | sed 's/-\([0-9][0-9]\).jpg/-0\1.jpg/'` ;  mv "$name"  "$neu" ; done
    
  2. Außerdem das Gleiche für m4v-Files:

    ls *.m4v | while read name ; do neu=`echo "$name" | sed 's/ - /-/' | sed 's/-\([0-9]\).m4v/-0\1.m4v/' | sed 's/-\([0-9][0-9]\).m4v/-0\1.m4v/'` ;  mv "$name"  "$neu" ; done
    

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert