Photoprism mit Podman installieren

Jetzt für nur 1 Euro testen!
Habt Ihr große Hosting-Projekte mit vielen Ressourcen? Mit dem CloudServer (VPS) von hosting.de ist das kein Problem. Dank unserem umfangreichen Angebot an Hosting Tools genießt Ihr absolute Freiheit. Natürlich kann das Betriebssystem per Knopfdruck frei gewählt werden.
Jetzt Cloud Server buchen

Einleitung

PhotoPrism ist eine Web-Software zum verwalten von Fotos die auf einem eigenen Server betrieben werden kann. Die Entwickler empfehlen die Software in einem Container zu betreiben und stellen eine docker-compose Datei bereit. Nach aussen wird hier zusätzlich ein nginx Webserver genutzt um TLS zu terminieren und die Anfragen zum Photoprism Container weiterzuleiten.

Voraussetzungen

  • Sie verfügen über einen hosting.de Cloud Server, welcher einen gültigen DNS-Eintrag, z.B. demo.mustermann-domain.de besitzt.
  • Eine privilegierte Shell auf dem System.

Pakete installieren

apt update
apt install podman podman-compose

Photoprism installieren

Speicherort für Container erstellen

mkdir /opt/photoprism

Photoprism compose Datei runterladen

cd /opt/photoprism
wget https://dl.photoprism.app/podman/docker-compose.yml

Die docker-compose.yml anpassen und folgennde Werte bearbeiten:

  • restart: always
    Container mit restart: always werden in Debian beim booten automatisch gestartet
  • 127.0.0.1:2342:2342
    Photoprism auf localhost binden da nginx hier als frontend agieren soll
  • PHOTOPRISM_DISABLE_PLACES: true
    Deaktiviert die Kartenabfrage der geo Koordinaten bei den Entwicklern. Muss auf false gesetzt werden falls Karten angezeigt werden sollen
  • PHOTOPRISM_ADMIN_PASSWORD
    Das Admin Passwort für den Weblogin
  • MARIADB_PASSWORD bzw. MARIADB_ROOT_PASSWORD
    Datenbank Passwörten setzen.
. . .
    image: photoprism/photoprism:latest
    container_name: photoprism
    ## Don't enable automatic restarts until PhotoPrism has been properly configured and tested!
    ## If the service gets stuck in a restart loop, this points to a memory, filesystem, network, or database issue:
    ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
    # restart: unless-stopped
    restart: always
. . .
    ports:
      ## Web server port mapping in the format "Host:Container". To use a different port, change the host port
      ## on the left-hand side and keep the container port, e.g. "80:2342" (for HTTP) or "443:2342 (for HTTPS):
      - "127.0.0.1:2342:2342"
. . .
PHOTOPRISM_ADMIN_PASSWORD: "<neues Admin Passwort>"
. . .
PHOTOPRISM_DISABLE_PLACES: "true"
. . .
PHOTOPRISM_DATABASE_PASSWORD: "<phtoprism DB Passwort>"
. . .
  ## MariaDB Database Server (recommended)
  ## see https://docs.photoprism.app/getting-started/faq/#should-i-use-sqlite-mariadb-or-mysql
  mariadb:
    ## If MariaDB gets stuck in a restart loop, this points to a memory or filesystem issue:
    ## https://docs.photoprism.app/getting-started/troubleshooting/#fatal-server-errors
    # restart: unless-stopped
    restart: always
. . .
MARIADB_DATABASE: "photoprism"
MARIADB_USER: "photoprism"
MARIADB_PASSWORD: "<phtoprism DB Passwort>"
MARIADB_ROOT_PASSWORD: "<DB root Passwort>"
. . .

Container starten

podman-compose up -d

Jetzt werden die verschiedenen Container runtergeladen und gestartet. Nachdem das abgeschlossen ist sollten mit

podman ps

zwei laufende Container angezeigt werden.

Photoprism testen

Um Photoprism zu testen muss eine ssh Verbindung mit Portweiterleitung genutzt werden:

ssh -L 127.0.0.1:2342:127.0.0.1:2342 root@demo.mustermann-domain.de

Jetzt lässt sich die Photoprism Website im Browser mit http://127.0.0.1:2342 aufrufen um zu testen ob alles funktioniert.

Ningx installieren

Nginx mit Let’s Encrypt Zertifikaten installieren.

Nach dem die Domain in Nginx für Let’s Encrypt TLS konfiguriert ist muss die Konfiguration für Photoprism erweitert werden. Dafür die Datei /etc/nginx/sites-enabled/demo.mustermann-domain.de angepasst werden

server {
    server_name demo.mustermann-domain.de;

    include snippets/mozilla-modern.conf;
    . . .

    # allow large file uploads
    client_max_body_size 50000M;

    # Set headers
    proxy_set_header Host              $http_host;
    proxy_set_header X-Real-IP         $remote_addr;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # enable websockets: http://nginx.org/en/docs/http/websocket.html
    proxy_http_version 1.1;
    proxy_set_header   Upgrade    $http_upgrade;
    proxy_set_header   Connection "upgrade";
    proxy_redirect     off;

    # set timeout
    proxy_read_timeout 600s;
    proxy_send_timeout 600s;
    send_timeout       600s;

    location / {
        proxy_pass http://127.0.0.1:2342;
    }
}

Danach die Nginx Konfiguration mit nginx-t auf Korrektheit prüfen und den Websever neustarten (systemctl restart nginx.service) Zum Schluss noch kontrollieren ob Photoprism nun über https://demo.mustermann-domain.de erreichbar ist.

Neuen Nutzer in der Community Edition anlegen

In der Community Edition gibt es mehrere Einschränkungen beim Mehrbenutzerbetrieb:

  • Es lassen sich nur Nutzer mit der Adminrolle anlegen
  • Die Nutzerverwaltung funktioniert nur über die cli

Einen neuen Nutzer kann man Beispielsweise mit folgendem Kommando einrichten:

podman-compose exec photoprism photoprism users add --password <Passwort> <Loginname>