Photoprism ohne Docker auf AWS Instanz

02.02.2024 | Linux

Wenn man auf die TensorFlow-Gimmicks in Photoprism verzichten kann, kann man es auch nativ auf einer AWS-Minimalinstanz (debian 12) zum Laufen bringen.

 Warum die Heinis von Photoprism die native Debian-Installation geheimhalten ist ein Rätsel, die Docker-Installation  braucht locker mal 4,5G. 

docker compose up -d
sudo du -sh /var/lib/docker
4,5G    /var/lib/docker


docker images
REPOSITORY              TAG       IMAGE ID       CREATED        SIZE
photoprism/photoprism   latest    ee523389580e   2 months ago   1.82GB
mariadb                 10.11     6e74e5a7ddb3   2 months ago   404MB

Die Images haben eigentlich "nur" 2,2G, dies wird aber im laufenden Betrieb verdoppelt

docker ps --size
CONTAINER ID   IMAGE                          COMMAND                  CREATED         STATUS         PORTS                                                      NAMES                      SIZE
053fb7d2cb94   photoprism/photoprism:latest   "/scripts/entrypoint…"   9 minutes ago   Up 9 minutes   0.0.0.0:2342->2342/tcp, :::2342->2342/tcp, 2442-2443/tcp   photosprism-photoprism-1   227kB (virtual 1.83GB)
9c726b4309ef   mariadb:10.11                  "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes   3306/tcp                                                   photosprism-mariadb-1      2B (virtual 404MB)

Nach docker compose stop

sudo du -sh /var/lib/docker
2,2G    /var/lib/docker


Wenn man den Speicherplatz lieber für Photos verwendet und nicht gleich Amazon noch reicher machen will, kann man auch die native deb-Version installieren.
Ich mußte dazu meine alte Debian11-Instanz (bullseye) auf 12 (bookworm) upgraden. AWS bietet inzwischen fertige Debian12.4-Instanzen an. 

Ich mußte nicht mal die Apache http_proxy-Konfiguration anpassen, weil die native Photoprism-App denselben Port verwendet, wie die docker-Instanz (localhost:2342).

Hier bekommt man das Paket:

https://dl.photoprism.app/pkg/linux/deb/

Heute auf AWS geholt: 

wget https://dl.photoprism.app/pkg/linux/deb/photoprism_231219-c6cad4614_amd64.deb

(248M)

dann:

sudo dpkg -i photoprism_231219-c6cad4614_amd64.deb

nach Installation des deb-Pakets unter /opt/photoprism: klarer Vorteil: 449M gegenüber den 4.5 G des docker-Krams.

MariaDB-Server muß man fairerweise noch dazurechnen, aber den braucht man auch für andere Sachen auf dem Server.

 Schritte nach der Installation

  1. vorher wurde noch ein Backup der dockerisierten DB gemacht. 
  2. Dieses Update konnte in die native mariaDB restored werden.
  3. Dann noch eine default.yml (Anleitung hier: https://docs.photoprism.app/getting-started/config-files/defaults/)  unter /etc/photoprism/ ablegen und 
  4.  Symlinks der Docker-Installation auf die Pfade gelegt. (für alle Fälle, damit man das dockerized-Zeug ggf. restoren kann.)
  5. Gestart wurde mit photoprism start
  6. das dann in den Hintergrund verschieben
  7. Vorsichtshalber nohup photoprism, um den Prozess nach dem Abmelden weiterlaufen zu lassen
  8.  und Abmelden. 
  9. Testen, ob's noch läuft.

YES!


Fazit

man hat ein schlankes Photoalbum, das auch noch super performt, obwohl die angeblichen Requirements überhaupt nicht erfüllt sind (AWS Debian Minimalinstanz 500M RAM,  1G swapfile, 20G HDD, 2 Core). 
Zu beachten ist allerdings, daß man in der defaults.yml die TensorFlow-Gimmicks bei der Indizierung ausschaltet. Ansonsten kommt dieses Setup an die Grenzen. Auch mit abgeschaltetem TensorFlow kann man bei der Erstindizierung (mit Thumbnail-Erzeugung!) seine Burst-Kapazität ausschöpfen und das Ganze läuft bei sehr vielen Photos nach einigen Minuten nur noch in Zeitlupe. Das ist aber bei weiteren Uploads nicht mehr zu erwarten. 

Jetzt kann man auch docker-ce und alle Dependencies entfernen und bekommt nochmal 430MB dazu:


sudo apt remove docker-ce docker-compose-plugin docker-ce-rootless-extras docker-ce-cli
sudo apt autremove
```
After this operation, 431 MB disk space will be freed.

 

Analyse

Entwurf

Development

Launch