Asustor Photoprism : exemple de mise en oeuvre pratique

shaks2022

Maître Jedi
22 Février 2022
584
166
113
Bonjour

Si vous installez photoprism, vous allez vite remarquer que vous vous retrouvez face à une "coquille vide".

>>> Ojectif du tutoriel
Voici un cas concret de mise en oeuvre de photoprism sur un NAS asustor ( AS6202T , 12Go RAM ). Le seul usage qui sera mis en oeuvre ici, est l'exploitation du répertoire "original". ( doc de référence ).
- Nous allons définir le répertoire "Original" de photoprism à l'extérieur de photoprism, de façon à pouvoir manipuler les photos et videos que nous voulons voir apparaitre dans photoprism via les moyens classiques de manipulation de fichiers.
Cela permettra aussi de sauvegarder les fichiers originaux comme les autres fichiers de votre NAS.

- Nous allons également définir les répertoires de travail de Photoprism à l'extérieur du container, pour pouvoir les sauvegarder, et aussi pour éviter de tout perdre à chaque fois qu'on réinitialise le container.

Photoprism ne permet pas actuellement la gestion multiutilisateur : un seul utilisateur est administrateur et gère tous les multimédias scannés, puis crée des albums partagés.
De plus, Photoprims ne gère pas le https nativement.
Nous allons donc devoir configurer le reverse proxy ( celui d'Asustor dans cet exemple de mise en oeuvre ) afin de permettre à votre public de consulter les albums partagés. La confidentialité réside dans l'URL qui contient un code chiffré. exemple d'un partage d'un album MONALBUM sur MONNAS avec Photoprism accessible sur le port MONPORT_POUR_PHOTOPRISM à travers le reverse proxy : https://MONNAS:MONPORT_POUR_PHOTOPRISM/s/uuh76a94nf3y434gf53/MONALBUM ==> vous communiquerez donc cette URL à ceux à qui vous voulez montrer l'album "MONALBUM".

>>> Prérequis
Avant d'installer photoprism, vérifiez que votre NAS est assez costaud : 3Go de RAM au minimum et 2 coeurs.
Vous avez également configuré votre routeur, et vous savez comment faire pour accéder à votre NAS depuis depuis une URL du type : https://MONNAS:MONPORT_POUR_ADM
Vous saurez également configurer votre routeur pour rediriger le port MONPORT_POUR_PHOTOPRISM vers votre NAS. ( l'utilisation de upnp est déconseillée pour des raisons de sécurité, mais reste techniquement possible ).

>>> Installation des applications nécessaires depuis APPcentral et création des dossiers partagés.
- Lancer l'installation de photoprism via APPcentral. photoprism va réclamer l'installation de docker-ce, ce qui est normal car l'application est sous container docker. N'activez pas UPNP lors de l'installation! ( vous exposeriez un port en HTTP sur internet! )
- Lancer également l'installation de Portainer-ce : nous allons en avoir besoin pour modifier le container installé . Là non plus, je ne vous conseille pas d'activer UPNP lors de l'installation, même si portainer-ce fonctionne en https.
- Créez le dossier partagé "M_priv" sur le NAS, avec possibilité d'écrire dedans pour ceux qui sont amenés à y poser des photos. Vous pouvez le nommer autrement, mais à partir d'ici "M_priv" fait référence au répertoire partagé qui sera scanné par Photoprism en tant que répertoire "original": donc /share/M_priv
- Créez le dossier partagé "Syst_interne", puis le sous répertoire "Photoprism", puis dans le sous répertoire "PhotoPrism", un sous répertoire "storage" : ce dernier répertoire contiendra les fichiers de travail externalisés de Photoprism. ( donc: /share/Syst_interne/PhotoPrism/storage ..Et faites attention aux lettre Minuscules / majuscules )

>>> 1er test connexion à la version "brute" de PhotoPrism
A ce stade des opérations, vous pouvez vous connecter à Photoprism depuis votre réseau local en cliquant sur l'icone, mais uniquement sous certaines conditions: L'icone vous renvoie en fait vers
http://<ADRESSE_QUE_VOUS_AVEZ_TAPE_POUR_ACCEDER_A_ADM_SUR_VOTRE_NAS>:32771/auth/login
Alors, c'est déjà là que ça peut coincer. Si vous n'etes pas chez vous, vous etes en train d'accéder à votre NAS par une URL de type https://MONNAS.myasustor.com:MONPORT, et vous avez configuré votre routeur pour que MONPORT soit redirigé depuis internet vers votre NAS. ça ne sera pas le cas du port 32771, et donc ça ne fonctionnera pas.
Donc, ça ne fonctionne que depuis votre réseau local, et à condition d'avoir lancé ADM depuis l'adresse IP de votre NAS.
Pour résumer , vous pouvez vous connecter ( juste pour un test ) avec l'url suivante : http//IP_de_votre_NAS:32771/auth/login
De plus, comme annoncé au début, Photoprism est une coquille vide, et vous n'avez aucun moyen de sélectionner des photos à scanner dedans.

Nous allons devoir intervenir sur le container de photoprism pour pouvoir commencer à travailler avec ce dernier.

[EDIT du 08/06/2022 : La partie modification du container ( laissée ici en italique ) est remplacée par la partie "destruction du container , puis création du container avec les bonnes propriétées, le tout directement en Docker" ]

>>> 1ers pas avec Portainer-CE ( si besoin, mais plus utile ).
- Cliquez sur l'icone de Portainer-CE, ou lancer l'URL https://<MON_IP_NAS>:19943
- Si ce n'est pas déjà fait, suivi le guide pour créer le compte administrateur de Portainer. Par sécurité, évitez "admin" comme nom de compte administrateur
Vous arrivez sur la page d'accueil de Portainer-CE. Au milieu de la page, il y a l'image de la baleine porte-container dans un cadre
- Cliquez sur la baleine
Vous arrivez sur une page qui liste le nombre d'images,et de containers ( et d'autres trucs pas utiles ici )
- Cliquez sur les containers
Vous arrivez sur la vue des containers, et là vous devriez voir au moins 2 containers : PortainerCE et PhotoPrism
[EDIT du 8/6/2022 . Début partie obsolète : modification du container via Portainer-ce]
- Cliquez sur "Photoprism"
Vous obtenez la vue détaillée du container photoprism. Cette vue est en "lecture seule". Pour modifier les attributs d'un container, il va falloir en créer une copie qu'on modifie, et qui vient remplacer celui en place.Si vous avez effectué des actions sur Photoprism, comme par exemple changé le mot de passe du compte admin, ces actions seront perdues. C'est d'ailleurs pour éviter ça à l'avenir que nous allons modifier ce Container.
Tout en haut de cette vue, il y a les actions possibles que l'on peut réaliser : stopper,démarrer,etc...
- Cliquez sur "Duplicate/edit"
Vous arrivez sur la vue "Create container", avec toutes les valeurs du container "Photoprism" qui ont été déjà positionnées.
Déplacez vous vers le bas de la page, dans la partie "Advanced container Setting". Juste sous ce texte, il y a les onglets "Command&Logging" ( activé par défaut, donc en bleu ) , volume, network,env,etc...
- Cliquez sur l'onglet "volume"
La liste est normalement vide
- Cliquez sur "map additionnal volume"
- Cliquez sur "bind" ( nous allons "lier" un répertoire dans le container, avec un répertoire du serveur hôte, c'est à dire du NAS lui même )
- Dans la partie "Container", vous allez taper "/photoprism/originals/M_priv" ==> "originals" est le répertoire scanné par défaut par photoprism.Il vaut mieux faire le lien sur un sous-répertoire ( ici M_priv ) de façon à laisser la possibilité de permettre à Photoprism de scanner un autre répertoire du NAS:il suffira de créer un nouveau bind...
- Dans la partie "host", vous allez taper "/share/M_priv", c'est le futur répertoire partagé que nous avons créé au début.
- Cliquez de nouveau sur "map additionnal volume"
- Cliquez sur "bind"
- Dans la partie "container", vous allez taper "/photoprism/storage"
- Dans la parie "host", vous allez taper "/share/Syst_interne/PhotoPrism/storage" . C'est à cet endroit que Photoprism viendra dorénavant écrire ses données de travail, à commencer par sa database sqlite3.

Nous allons maitenant modifier une variable qui est utilisée lors de la création des partages d'album : photoprism ne peut pas deviner par quelle URL on l'accède, il faut donc lui dire.
- Cliquer sur l'onglet "env", (là où il y a aussi "command&logging,volume,network...."
- Recherchez la variable dont le name est "PHOTOPRISM_SITE_URL"
- Saisir une nouvelle valeur à la place de 127.0.0.1 ( je n'ai pas noté le détail exact de la valeur d'origine ). La nouvelle valeur est de la forme

- Revenez vers le milieu de la page, et cliquez sur "Deploy the container"
Une pop-up apparait "are you sure", et vous demande confirmation pour remplacer le container existant.
- Cliquez sur "replace" pour confirmer le remplacement du container.
Attendez que "deployment in progress" disparaisse
- Retournez sur la vue des containers
- Redémarrez le container Photoprism
[EDIT du 8/6/2022 . Fin partie obsolète]


>>> Suppression et recréation du container
ATTENTION : Tout ce qui a été fait dans Photoprism AVANT de modifier le container comme nous allons maintenant le faire sera perdu. Si vous avez utilisé Photoprism et que vous voulez "exporter" vos données du container avant de l'effacer, l'opération est possible mais ne sera indiquée ici que si quelqu'un en a besoin.
- Connectez vous au NAS dans une console en tant que root ( ou tapez "sudo" devant les commandes qui vont être indiquées ici ). Le "#" présent devant toutes les commandes représente le prompt de saisie, et n'est pas à taper. Il indique qu'il faut être root pour que ça fonctionne.
- Tapez la commande suivante: ( Lien détaillé vers commandes docker )
# docker container ls
Vous devez voir une ligne qui contient "photoprism/photoprism:latest" ( valeur "IMAGE" ) et "photoprism" ( valeur "NAME" )
- Tapez les commandes suivantes:
# docker container stop photoprism
# docker container rm photoprism

Maintenant, recréation du container avec les bons paramètres.. pendant ce temps, l'application "Photoprism" dans ADM reste active, et ne "sait" pas qu'on est en train de détruire et recréer "son" container
# docker run --name=photoprism --privileged -p 32771:2342 -e PUID=999 -e PGID=999 -v /share/Syst_interne/PhotoPrism/storage:/photoprism/storage -v /share/M_priv:/photoprism/originals/M_priv --env PHOTOPRISM_SITE_URL=https://MONNAS:MONPORT_POUR_PHOTOPRISM/ photoprism/photoprism:latest

ATTENTION : MONPORT_POUR_PHOTOPRISM n'est PAS le port 32771. Le port 32771 permet d'accéder à photoprims en http depuis votre réseau local. C'est l'accès "interne" à Photoprism.
Donc, MONPORT_POUR_PHOTOPRISM est un numéro de port arbitraire et LIBRE sur votre réseau local ( cad : pas déjà redigiré vers le NAS pour un autre service, ou vers une autre machine de votre réseau local), et nous allons voir plus loin comment mapper ce port vers Photoprism avec l'aide du reverse-proxy d'Asustor.

NOTE : La commande ne "rend" pas la main. Vous voyez la commande raconter ce qu'elle est en train de réaliser à la console : Attendez que Photoprism annonce qu'il est prêt ( message comme quoi il écoute sur le port 2342 ) .ça peut durer quelques minutes, car il va récupérer la dernière image puis créer le container, le démarrer, et Photoprism lui-même va prendre un moment avant d'être prêt.

Quand il est arrivé là, vous pouvez stopper le container ( Ctrl + c ) puis basculer vers Portainer-CE pour redémarrer le container modifié, ou utiliser l'icone PhotoPrism sur le bureau du NAS pour arrêter puis relancer Photoprism.

- Quand Photoprism est démarré, vérifiez que dans le répertoire /share/Syst_interne/PhotoPrism/storage, les items suivants apparaissent :
albums/ backups/ cache/ config/ index.db serial sidecar/
Si c'est resté vide, quelque chose s'est mal passé. Vous pouvez tout reprendre à zéro en désinstallant photoprism, puis en vérifiant que le container "photoprism" a bien disparu, puis en réinstallant photoprism.

>>> Connexion à la version customisée de PhotoPrism et 1ers pas
- connectez vous à Photoprism par http//IP_de_votre_NAS:32771/auth/login
- changez le mot de passe de l'administrateur de Photoprism.
Nous allons pouvoir faire scanner nos 1ers documents par photoprism : recopiez quelques photos/videos dans /share/M_priv, et attendez de voir ce qui se passe dans Photoprism... rafraichissez la vue.
Les documents doivent apparaitre dans Photoprism.
A partir de là, vous pourrez importer plus de documents.

>>> Mise en place des sauvegardes
Ajoutez dans vos sauvegarde les répertoires /share/M_priv, ET /share/Syst_interne/PhotoPrism. De cette façon, vous aurez toutes les chances de pouvoir restaurer photoprism après un crash.Il suffira de restaurer ces 2 répertoires, de reconstuire le container comme expliqué ici, de relancer Photoprism, et vous devriez retrouver le Photoprism d'avant le crash.

>>> Mise en place du reverse proxy
Objectif : Accéder à Photoprism depuis l'extérieur. Nous allons configurer le reverse proxy d'Asustor.

Depuis l'interface ADM, connecté avec un compte d'administration sur votre NAS
- cliquez sur Services ==> Reverse proxy ( tout en bas de la liste )
- Cliquez sur "add"
- Cliquer sur "create a new proxy domain"
- Titre : ce que vous voulez. Exemple :"mondomaineproxy"
- Protocole : https
- Domain Name : dépliez, vous allez trouver les certificats qui valident les domaines gérés par votre NAS. Choisissez le domaine que vous avez prévu, qui sera noté MONNAS à partir d'ici.
- Port number: MONPORT_POUR_PHOTOPRISM ( oui, celui dont il est question au début du tuto ).
- network interface : laissez * ou choisissez l'interface si besoin.
- pour des raisons de sécurité,il est préférable de laisser décoché "also enable ez-connect port forwarding", et de gérer soi même le routage dans la configuration de votre box ou routeur. Mais si vous avez tout configuré avec ez-connect, je ne vous interdit pas de le cocher à vos riques et périls.

Maintenant, nous allons ajouter la règle pour photoprism:
- Cliquez de nouveau sur "add"
- Cliquer sur "add a new rule in an existing domain proxy"
- Cliquez sur 'next' ( on choisit ici le proxy domain que l'on a créé juste auparavant, il suffit de valider )
- Name : monphotoprism ( par exemple)
- Protocol : HTTP
- Hostname : IP_NAS
- Port number : 32771
- Path :/ ( pas de fantaisie ici : / est OBLIGATOIRE)

Si vous avez laissé "port forwarding" décoché ( ce qui est conseillé), vous devez encore intervenir sur votre routeur pour router le port MONPORT_POUR_PHOTOPRISM vers votre NAS.

>>> Accès à Photoprism via le reverse proxy
A partir de là, vous devriez voir l'interface d'administration de Photoprism en tapant l'URL https://MONNAS:MONPORT_POUR_PHOTOPRISM
Et comme vous avez bien fait les choses, cette URL est également celle qui est enregistrée dans Photoprism pour création de la racine des liens d'export des albums ( relire le début du tuto). Vous voila prêt à exploiter Photoprism.

>>> Infos supplémentaires
Cerise sur le gateau : cette installation est compatible avec l'autre tutoriel qui fait le lien entre Photoprism et Photogallery, ici
Si vous ne voulez pas utiliser Photoprism en dehors de votre réseau local, et que vous utilisez le tuto référencé pour recopier les albums depuis photoprism vers photogallery pour les exporter dans photogallery, vous n'avez plus besoin d'exécuter ici la partie qui concerne le reverse proxy...

A ne pas faire : Utiliser la fonction "recreate" de Portainer-CE sur le container Photoprism avec l'espoir de le mettre à jour. J'ai testé, et on se retrouve avec un container "created" et un gros pavé rouge "Error 400" qui apparait sur la page Portainer-CE dès qu'on essaye de démarrer le container. C'est d'ailleurs suite à cette action désastreuse que j'ai cherché à utiliser docker directement pour détruire et recréer le container correctement.

>>> Profiter de la dernière mise à jour de Photoprism

L'application Photoprism évolue sur le site de l'éditeur ( release notes ) mais pas l'application sur le NAS : Et pour cause ! L'application va chercher la dernière version le jour où vous l'installez . Mais après, il n'y a plus de mise à jour.

Pour profiter des dernières mises à jour de photoprism, il suffit de rejouer la partie "suppression et recréation du container".

[Historique de version de ce tutoriel]
- 24/05/2022 : création version initiale.
- 08/06/2022 : mise en chapitre ( plus lisible) , remplacement de la customisation du container par Portainer par une customisation par commande docker.
 
Dernière édition:
  • J'aime
Réactions: Dami1 et FX Cachem
Salut,

Pour les albums, les noms des dossiers sont pré-définis ?
Si c'est le cas, un script de déplacement et d'édition de permission permettra de redispatcher les données.


Pour la perte des données du conteneur, c'est que tu as pas déclarer les volumes.