Σύντομος οδηγός εγκαταστασης photoview photogallery

disclaimer:To παρόν είναι ότι δούλεψε σε μένα.Δε ξέρω αν είναι η ‘σωστή’ διαδικασία ή αν υπάρχουν άλλες πιο αποτελεσματικές.Στο πι είμαι νέος χρήστης και στο λίνουξ ‘απλός’.Η εγκατάσταση έγινε σε ένα rpi400 με dietpi 64αρι beta και τα docker conatainer επίσης 64αρια.
Απο τα πιο διαδεδομένα self hosted photo galleries το lychee απορρίφθηκε ως πολύ στοιχειώδες με έλλειψη ai feature , το piwigo ως κακάσχημο και παλαιολιθικό , το ownphoto/librephoto γιατί δεν υποστηρίζει arm αρχιτεκτονική.
Ξεχώρησαν τα photoprism και photoview.
Eδω θα δούμε το photoview
Τόσο το photoprism όσο και το photoview είναι πολύ δραστήρια project στο github με πολύ μονερνο σχεδιασμό και χρήσιμες λειτουργίες όπως face detection , opbject categorisation , map , exif metadata καθώς επίσης και τα δυο έχουν βελτιστοποιημένη προβολή ως web app και ‘εγκαθιστώνται’ ως τέτοια στην οθόνη του τηλεφώνου και μπορούν να αντικαταστήσουν εύκολα proprietary paid closed source εφαρμογές.

Προϋποθέσεις
python,docker,docker-compose,(optional αν θέλουμε να βγαίνουμε εκτός τοπικού δίκτυου port forwording,ddns provider,reverse proxy server ,encryption)

python
υπάρχει script και για το docker-compose υπάρχει python package
να πω εδώ οτι το dietpi έχει έτοιμα δικά script εγκατάστασης οπότε με dietpi-software και additional-software μπορούμε να εγκαταστήσουμε python και dependencies
αν χρησιμοποιούμε κάποιο άλλο distro

sudo apt install python3 idle3

dependencies

sudo apt-get install -y libffi-dev libssl-dev
sudo apt-get install -y python3 python3-pip
sudo apt-get remove python-configparser

docker/docker-compose
στο πι εγκατάσταση δεν μπορούμε να κάνουμε από τα συνήθη repo.
docker

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

docker-compose

sudo pip3 -v install docker-compose

photoview

mkdir photoview
cd photoview
nano docker-compose.yml

paste

version: "3"

services:
  db:
    image: mariadb:10.5
    restart: always
    environment:
      - MYSQL_DATABASE=photoview
      - MYSQL_USER=photoview
      - MYSQL_PASSWORD=photosecret
      - MYSQL_RANDOM_ROOT_PASSWORD=1
    volumes:
      - db_data:/var/lib/mysql

  photoview:
    image: viktorstrate/photoview:edge
    restart: always
    ports:
      - "8000:80"
    depends_on:
      - db

    environment:
      - PHOTOVIEW_DATABASE_DRIVER=mysql
      - PHOTOVIEW_MYSQL_URL=photoview:photosecret@tcp(db)/photoview
      - PHOTOVIEW_LISTEN_IP=photoview
      - PHOTOVIEW_LISTEN_PORT=80
      - PHOTOVIEW_MEDIA_CACHE=/app/cache

      # Change This: The publicly exposed url
      # For example if the server is available from the domain example.com,
      # change this value to http://example.com/
      - PHOTOVIEW_PUBLIC_ENDPOINT=http://localhost:8000/

      # Optional: To enable map related features, you need to create a mapbox token.
      # A token can be generated for free here https://account.mapbox.com/access-tokens/
      # It's a good idea to limit the scope of the token to your own domain, to prevent others from using it.
      # - MAPBOX_TOKEN=<YOUR TOKEN HERE>

    volumes:
      - api_cache:/app/cache

      # Change this to the directory where your photos are located on your server.
      # If the photos are located at `/home/user/photos`, then change this value
      # to the following: `/home/user/photos:/photos:ro`.
      # You can mount multiple paths, if your photos are spread across multiple directories.
      - ./photos_path:/photos:ro

volumes:
  db_data:
  api_cache:

photoview:
image: viktorstrate/photoview:edge

εδω edge ειναι η unreleased beta εκδοση . Επιση υπάρχουν και nighty ενω το σταθερο κανάλι είναι το 2 . Αν θέλουμε αναγνώριση προσώπου το 2 δεν εχει

ports:
      - "8000:80" 

Αντι για 8000 μπορουμε να βάζουμε οποια πορτα στο host θέλουμε

  - PHOTOVIEW_PUBLIC_ENDPOINT=http://localhost:8000/

Αντικαθιστούμε με τον domain μας
να σημειώσω οτι thumbnail preview θα έχουμε μόνο απο τη διυθηνση που θα βάλουμε εδω

  # - MAPBOX_TOKEN=<YOUR TOKEN HERE>

uncomment #
Βάζουμε το token from https://account.mapbox.com/access-tokens/create αφού προφανώς έχουμε κάνει δωρεάν εγγραφή σε αυτη την Open source υπηρεσία map api καλό είναι στο mapbox να βάλουμε το domain μας ώστε να έχει πρόσβαση στο token μόνο το domain μας

- ./photos_path:/photos:ro
αντικαθιστούμε ./photos_path με το full path του photos folder μας στο host . το path μπορεί να είναι και σε εξωτερικό σκληρό δίσκο

docker-compose up -d

Το app θα δημιουργήσει ένα σχετικά μεγάλο μέγεθος από thumbnail στο docker volume του api_cache οπότε καλό είναι να μεταφέρουμε την cache σε εξωτερικό σκληρό
αυτό γίνετε είτε με mount --bind ένα φάκελο του σκληρού στο container είτε απευθείας στο docker-compose που είναι και πιο κομψό

αντικαθιστούμε το

volumes:
      - api_cache:/app/cache

με

volumes:
      - /path/to/external/drive/folder:/app/cache

διαγράφουμε το

api_cache:

απο το

volumes:
  db_data:
  api_cache:

και αφήνουμε το
PHOTOVIEW_MEDIA_CACHE=/app/cache
ως εχει

reverse proxy + encryption

εδώ την δουλειά την κάνει ο server που επιλέγει ο κάθε ένας
προσωπικά επειδη ο παροχος μου μου επιτρέπει μόνο ένα domain name χρησιμοποιώ reverse proxy και το caddy συγκεκριμένα επειδη προσθέτει αυτόματα encryption και μου φάνηκε εύκολο
ίσως βάλω σε μεταγενέστερο ποστ ένα σύντομο οδηγό εγκατάστασης

αν έχεις λοιπόν caddy

nano /etc/caddy/Caddyfile

add

domain_name:port {
    reverse_proxy http://localhost:port
}
ctrl + x
y
enter
service caddy restart

domain_name:port
αντικαθιστουμε το :port με μια ανοιχτη θύρα στο ρουτερ αφιερομένη στο photoview . και το domain_name με το ddns domain μας τα ιδια βαζουμε και στο PHOTOVIEW_PUBLIC_ENDPOINT του docker-compose

localhost:port
αντικαθιστούμε το :port με την ιδια πορτα που επιλέξαμε και στο
- “8000:80” του docker-compose

Επισκευτόμαστε την διεύθηνση που βαλαμε στο PHOTOVIEW_PUBLIC_ENDPOINT Επιλέγουμε user name και password στο sign in page
Στα setings στο photo path βάζουμε /photos
Πατάμε scan all να αρχίσει το indexing

αν επικευτουμε το photoview instance απο οουδηποτε αλλου περαν του PHOTOVIEW_PUBLIC_ENDPOINT , απο το localhost πχ δεν φορτώνουν τα thumbnail

live logs
θα χρειαστεί καποιες ωρες να αναλύσει ολες τις φωτογραφειες μας
κατα τη διαρκεια πεταει enhmerotika popup
μπορουμε να παρακολουθησουμε τη διαδικασια με

docker ps
copy container id of viktorstrate/photoview:edge
docker logs --follow container_id
3 Likes

ωραιος οδηγος, ευχαριστουμε.
δεν αστειευεσαι με τις φωτογραφιες βλεπω…
δεν ηξερα το caddy, ευχαριστω και για αυτο…
και μια ερωτησουλα αν ξερεις… βλεπω οτι το caddy εχει ενα προσθετο για webdav αλλά λεει http. Nα υποθεσω ομως οτι η κινηση θα γινεται με https ή οχι; (μπερδευτηκα)

περί caddy2 & webdav δε γνωρίζω .
βλέπω το directive εδω αλλά μη σου πω κάτι που δεν ισχύει

2 Likes

Ευχαριστούμε @Ippo_Cratis .
Πολύ ωραίος οδηγός.
Το Rpi400 έχει προεγκατεστημένο κάποιο λειτουργικό;

1 Like

Αν παρεις το κιτ σου δινουν και μια 16αρα class Α1 με noobs
Εγω την φορμαρισα και την εχω για δοκιμες

1 Like

update on this
το face recognition ειναι διαθεσιμο στο stable καναλι πλεον