piwigo

[Updated: 23.02.2014]
(Aus überfälligem Anlass)
*Die* Alternative zu gallery2 oder auch gallery3.
Nach dem sich gallery in allen Versionen, für mich, als unbrauchbar erwiesen hat, bin ich nach etwas suchen und einem Kollegentipp zu piwigo gekommen. Der Hauptvorteil, auf den es mir besonders ankommt, es kann Kategorieren und man kann Bildern mehrere Kategorieren zuweisen. Nicht starr nur einem hierarchischem „Album“. Desweiteren ist es sicherer, schneller und schlanker, einfacher installiert und die Administration ist deutlich übersichtlicher.

 

Einziger Nachteil ist die Benutzerverwaltung, welche eher auf Singeluser/Einzelbenutzer oder „Familie“ ausgelegt ist. Und nicht dafür das sich, ähnlich der Fotocommunity, mehrere fremde Fotografen die Gallerie teilen. Aber wann teilt man eine (private) Gallerie schon mit mehreren Benutzern wo eine ausgefeile Benutzerverwaltung wirklich nötig wäre.

So ist es aber halt nur mit Administrator-rechten (welche auch gleich die komplette konfiguration u.a. der Seite und der Plugins ermöglicht) möglich Bilder per Web und Uploadprogramm hochzuladen. Mittels des „Community“-Plugins kann man dies zwar auf normale, registrierte, Benutzer ausweiten. Aber der Upload geht auch dann nur per „Piwigo Uploader“-Tools (ist auf der Webuploadseite, über die man aber nur als Admin kommt, verfügbar) und nicht per Web. Hier gibt es also durchaus noch Verbesserungsbedarf. Jedoch wiegen die sonstigen Vorteile dieses, meiner Meinung nach, vergleichsweise kleine Manko auf.

Das Manko der Benutzerverwaltung wurde in der Version 2.2.0 und mit Nutzung des Community-Plugins behoben. Damit ist dieser, der einzigste, Minuspunkt weg!

Zum Vergleich der Sicherheit:
CVE Security Vulnerabilities Details for piwigo (3 vulnerabilities)
CVE Security Vulnerabilities Details for gallery (28 vulnerabilities)

Genug der langen Vorrede, es geht ans Eingemachte:

HP: http://piwigo.org/
Dependencies: Mysql, Apache, PHP5, GD, php5-gd, ImageMagick

Vorarbeiten:
1. Apache:
Als DocumentRoot steht /var/www/gallery/htdocs/piwigo in der vhosts.conf
Desweiteren empfehle ich das Login und das Adminfrontend per rewrite regel auf SSL zu forcen. Hierfür endweder in der vhosts.conf oder in der .htacess folgendes eintragen:

# Enable rewrite
RewriteEngine on
# Secure login
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} identification.php
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L]

# Secure adminfrontend
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} admin.php
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [R=301,L]

Hierzu braucht es dann natürlich zusätzlich ein SSL-vhost mit z.B. folgenden Zeilen:

SSLEngine on
SSLInsecureRenegotiation off
SSLProtocol +TLSv1.2 +TLSv1.1 TLSv1 -SSLv3 -SSLv2
SSLHonorCipherOrder on
SSLCipherSuite HIGH:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!SSLv2:!RC4:!CAMELLIA
SSLCertificateFile /etc/apache2/ssl.crt/gallery.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/gallery.key

ACHTUNG: Die herunterladbaren „Piwigo Uploader“-Tools funktionieren nicht wenn man die Gallerie nur via https verfügbar macht. Oder man sorgt dafür das ws.php auch per http erreichbar ist. Ich persönlich kann damit leben, nicht diese tools zu benutzen. Dafür ist mir die Sicherheit zu wichtig.

2. Datenbank:
mysq > CREATE DATABASE kundennummer_piwigo;
mysq > GRANT ALL PRIVILEGES ON kundennummer_piwigo.* TO „kundennummer_gallery_adm“@“localhost“ IDENTIFIED BY „gutes_passwort“;
mysq > FLUSH PRIVILEGES;

 

Installieren:
$ cd /var/www/gallery/htdocs
/var/www/gallery/htdocs/ $ wget -O piwigo_latest.zip „http://piwigo.org/download/dlcounter.php?code=latest“
/var/www/gallery/htdocs/ $ unzip piwigo_latest.zip
/var/www/gallery/htdocs/ $ chmod -R 777 piwigo/plugins piwigo/themes

Oder einfach per FTP hochladen.

Alles weitere dann per Web: https://www.yourdomina.de/

 

Konfiguration
Angeben der MySQL user/pass, Datenbank und Tabellen-prefixes sowie des zu erzeugenden Adminusers.

Zuerst sollte man, per klick auf “ Change administration colors „, rechts oben, zu angenehmeren Farben, im Adminfrontend wechseln.
Sollte man piwigo in einem beliebigen unterverzeichniss eingerichtet haben so sollte man „https://www.yourdomina.de/unterverzeichniss“ dann auch unter Configuration -> Options -> Gallery URL eintragen.

Die restliche Konfiguration sollte Selbsterklärend und einfach sein.

Die lokale Konfigdatei ist local/config/config.inc.php und muss erst, sollte man an den „advanced“ Parametern etwas ändern wollen, als PHP-Code, angelegt werden. In dem selben Verzeichniss ist auch die database.inc.php in welcher die Datenbankparameter stehen – falls man die mal ändern muss. In include/config_default.inc.php stehen alle Konfigparameter erklärt. Wenn man das „LocalFiles Editor“ Plugin installiert hat kann man die Datei dann auch direkt in der Adminoberfläche anpassen.

Interessant sind hier mindestens die folgenden Parameter:
$conf[‚anti-flood_time‘] => Angabe von sekunden die zwischen zwei Kommentaren verstreichen muss um flooding zu „erschweren“.
$conf[‚comment_spam_max_links‘] => Angabe der Anzahl von Links ab denen ein Kommentar als Spam identifiziert und rejected wird.
$conf[‚upload_maxfilesize‘] = 200 => Maximale Dateigröße (Default: 200kB – was recht knapp bemessen ist heutzutage).
$conf[‚upload_maxheight‘] = 800 => Maximale Höhe.
$conf[‚upload_maxwidth‘] = 800 => Maximale Breite.

Seit 2.5 ist noch der folgende Parameter sehr interessant:
conf[‚original_url_protection‘] = ‚images‘; => Es wird kein direkter Link mehr zu den eigentlichen Bilddateien verwendet. Das schützt vor Bilderdieben. Besonders interessant in Verbindung mit dem rightClick Plugin welches den rechtsklick auf Bilddateien verhindert.

# vim local/config/config.inc.php

<&php
$conf['anti-flood_time'] = "120"; # Zwei Minuten zwischen den Kommentaren
$conf['comment_spam_max_links'] = "2"; # Bei zwei Links im Kommentar => Spam => Reject
&>

 

Es stehen über 150 Plugins zur verfügung
Folgende Plugins empfehle ich noch:
– GrumPluginClasses (Dependency von Metadata und dem Menu Manager)
– Advanced Metadata (Mehr/bessere integration von EXIF-Daten)
– Advanced Menu Manager (Besseres management der Menüblöcke + „random pictures“)
– LMT (Lizenzmanagement)
– Additional Pages (Weitere Seiten für z.B. Text wie Impressum)
– RV Akismet (Anti-Spam; Achtung: Man braucht hierfür einen Akismet.com account)
– RV DB Integrity (Integritätstest der Datenbank )
– Photo Update (updaten bereits hochgeladener Fotos)
– Protected Albums (passwortschutz für einzelne Alben) Achtung: funktioniert seit 2.5.X NICHT mehr!
– Force HTTPS

Sollte man die Gallerie für registrierung von neuen Benutzern freischalten (ist per default aktiviert) wären die folgenden Plugins zuzüglich zu empfehlen:
– Captcha (Zum registrieren muss ein captcha gelöst werden)
– NBM_Subscriber (Jeder benutzer kann seine subscriptions selbst managen)
– Community (Für Uploadmöglichkeit als normaler Benutzer, auch ohne Admin-rechte)
– LCAS (Sanity check für Benutzernamen)
– UserAdvManager (Erweitertes, besseres Benutzermanagement)

Ein Plugin um captchas auch für Kommentare nutzen zu können habe ich bisher leider nicht gesehen.
Ansonsten gibt es noch plugins für Facebook, E-Cards, Panoramen, 3D, Cooliris, Piclens, Google maps, Videos, „Adult content“, nachladen von thumbnails, contests und noch vieles mehr.

UPDATE:
Seit der Version 2.5. kann man die Originalbilder schützen (es wird dann kein direkter Link mehr zu den Bildern raus gegeben) indem man in der Konfigdatei (local/config/config.inc.php oder über das „LocalFiles Editor“ Plugin) den folgenden Parameter setzt:

conf[‚original_url_protection‘] = ‚images‘;

Sehr zu empfehlen ist dazu noch die installation des rightClick Plugins welches den rechtsklick auf Bilddateien verhindert.