

PhotoView est une galerie de photos simple et conviviale conçue pour les photographes et vise à fournir un moyen facile et rapide de naviguer dans les répertoires, avec des milliers de photos haute résolution.
Vous configurez PhotoView pour rechercher des photos et des vidéos dans un répertoire de votre système de fichiers. Le scanner ramasse automatiquement vos supports et commence à générer des images miniatures pour rendre la navigation super rapide.
Lorsque vos médias ont été numérisés, ils se présentent sur le site Web, organisés de la même manière que sur le système de fichiers.
Si vous avez des questions concernant la configuration ou le développement, n'hésitez pas à rejoindre le serveur Discord https://discord.gg/jq392948u9
Nous avons migré vers le nouveau registre Docker https://hub.docker.com/r/photoviview/photoview et toutes les nouvelles images pour la balise master , ainsi que les versions futures vont y être publiées au lieu du registre précédemment utilisé. Les anciennes images seront toujours accessibles dans l'ancien Registry https://hub.docker.com/r/viktortrate/photoviview, donc si vous souhaitez utiliser 1 de ces anciennes images, vous devez revenir à l'ancien registre.
Veuillez mettre à jour votre fichier docker-compose.yml pour utiliser le nouveau registre de l'image photoview , comme indiqué dans l'exemple correspondant du fichier de compose: https://github.com/photoviview/photoview/tree/master/docker-compose%20example
Visitez https://photos.qpqp.dk/
Nom d'utilisateur: démo
Mot de passe: démo
Il existe déjà beaucoup de galeries de photos auto-hébergées. En voici quelques-uns, juste pour en mentionner quelques-uns.
Alors pourquoi un autre? J'adore prendre des photos et je les stocke toutes sur mon fichier de serveur local. C'est génial car je peux organiser mes photos directement sur le système de fichiers, il est donc facile de les déplacer ou de prendre des sauvegardes. Je veux pouvoir contrôler où et comment les photos sont stockées.
Le problème est, cependant, que les images brutes sont extrêmement fastidieuses pour naviguer d'un serveur de fichiers, même sur le réseau local.
Mon serveur contient de nombreuses vieilles photos de famille auxquelles j'aimerais que ma famille ait également accès. Et certaines des photos que je voudrais facilement pouvoir partager avec d'autres personnes sans que les tracas devaient faire un compte en premier.
Ainsi, j'ai besoin d'une solution qui peut faire ce qui suit:
Toutes les galeries de photos peuvent faire beaucoup de ce dont j'ai besoin, mais personne ne peut tout faire.
Cette section décrit comment faire fonctionner PhotoView sur votre serveur avec Docker. Assurez-vous que Docker et Docker-Compose sont installés et exécutez sur votre serveur.
makedoit également être installée si vous souhaitez utiliser à condition queMakefile, qui est facultatif (voir l'étape 4 pour plus de détails).7zzdoit être installé au cas où vous souhaitez l'utiliser dans la portée du scénario de sauvegarde au lieu du format .tar.xz par défaut. Lisez le commentaire dans leMakefile, situé au-dessus de la sectionbackuppour plus de détails.
Téléchargez le contenu du dossier docker-compose example dans le dossier de votre serveur, où vous prévoyez d'héberger les données internes de PhotoView (base de données et fichiers de cache).
Veuillez noter que ce dossier contient 2 versions du fichier docker-compose:
docker-compose.example.yml - la configuration entièrement fonctionnelle et recommandée pour la plupart des casdocker-compose.minimal.example.yml - la configuration minimale et simple pour ceux qui trouvent le précédent trop complexe et difficile à comprendre et à gérerLorsque vous téléchargez des fichiers, vous devez choisir un seul d'entre eux.
Renommez les fichiers téléchargés et supprimez l' example de leurs noms (vous devez donc avoir .env , docker-compose.yml et les fichiers Makefile ). Si vous choisissez le docker-compose.minimal.example.yml à l'étape précédente, assurez-vous de le renommer sur docker-compose.yml .
Ouvrez ces fichiers dans un éditeur de texte et lisez-les. Modifiez le besoin en fonction des commentaires de la documentation pour correspondre correctement à votre configuration. Il y a des commentaires de 2 types: ceux, à commencer par ## , sont des explications et des exemples, qui ne devraient pas être non émis; Ceux, en commençant par # , sont des pièces de configuration facultatives ou alternatives, qui peuvent être non chez certaines circonstances, décrites dans des explications correspondantes. Il est préférable de passer par les fichiers dans la prochaine commande: .env , docker-compose.yml et Makefile .
Si votre
PGSQL_PASSWORDouMARIADB_PASSWORDcontiennent des caractères spéciaux (par exemple@), assurez-vous de les encoder URL.
Assurez-vous que le dossier racine de votre bibliothèque de médias et tous les fichiers et sous-dossiers sont lisibles et consultables par les autres utilisateurs: exécutez la commande suivante (ou séquence correspondante de commandes à partir du Makefile ):
make readable Si l'erreur Permission denied , exécutez-les sous l'utilisateur, possédant des fichiers et des dossiers correspondants. Alternativement, exécutez-les en ajoutant sudo avant la commande: cela changera le contexte d'exécution à l'utilisateur root et demandera le mot de passe racine. Vous devez avoir la permission d'exécuter sudo dans le système.
Si vous ne souhaitez pas donner les autorisations requises à others groupes pour vos fichiers, vous pouvez également:
photoview appartenant à ce groupe; Définissez ensuite les autorisations appropriées sur la section group .photoview à cet utilisateur; Définissez ensuite les autorisations appropriées sur la section user . Si vous avez configuré d'autres supports avec des fichiers multimédias à partir d'autres emplacements de l'hôte (comme host_photoviview_media_family ou autre chose), vous devez exécuter les mêmes commandes, comme dans la cible readable Makefile , pour chaque dossier racine multimédia sur votre hôte manuellement: Copiez chaque commande à votre shell et remplacez la variable par le chemin absolu vers un dossier multimédia supplémentaire sans le trace / . Exécutez les deux commandes pour chaque dossier racine supplémentaire.
Dans le cas où vous n'avez pas make installation dans votre système ou ne souhaitez pas l'utiliser pour les activités de gestion de PhotoView, vous pouvez utiliser les mêmes commandes à partir du Makefile et les exécuter directement dans votre shell, ou créer vos propres scripts. Assurez-vous d'appliquer ou de remplacer les variables de votre .env d'abord dans ce cas. Makefile est fourni juste pour votre commodité et votre simplicité, mais est facultatif.
Démarrez le serveur en exécutant la commande suivante (ou séquence correspondante de commandes à partir du Makefile ):
make all Si le point de terminaison ou le port n'a pas été modifié dans le fichier docker-compose.yml , PhotoView est désormais accessible sur http: // localhost: 8000
Si tout est configuré correctement, vous devez être présenté avec un assistant de configuration initial lors de l'accès au site Web la première fois.

Entrez un nouveau nom d'utilisateur et un nouveau mot de passe.
Pour le chemin photo, entrez le chemin à l'intérieur du conteneur Docker où se trouvent vos photos. Cela peut être défini à partir du fichier docker-compose.yml sous photoview -> volumes . L'emplacement par défaut est /photos .
Un nouvel utilisateur d'administration sera créé, avec un accès aux photos situées sur le chemin fourni sous la configuration initiale.
Les photos devront être numérisées avant qu'elles se présentent, vous pouvez démarrer une analyse manuellement, en naviguant vers Settings et en cliquant sur Scan All
Nous suggérons de sécuriser l'instance PhotoView avant de l'exposer en dehors de votre réseau local: même s'il offre un accès en lecture seule à votre galerie de médias et a des fonctionnalités de base d'authentification des utilisateurs, il ne suffit pas de protéger vos médias privés contre les acteurs malveillants sur Internet.
Les moyens possibles de garantir un service auto-hébergé peuvent être (mais sans s'y limiter):
La configuration et la configuration de toutes ces protections dépend et nécessitent beaucoup d'informations sur votre réseau local et vos services auto-hébergés. Sur la base de ces informations, le flux de configuration et l'architecture des services résultants peuvent différer beaucoup entre les cas. C'est pourquoi dans la portée de ce projet, nous ne pouvons vous fournir que cette liste de haut niveau des façons possibles de protection de la ligne de ligne. Vous devrez les enquêter, trouver la meilleure combinaison et la meilleure configuration pour votre cas et prendre la responsabilité de configurer tout de manière correcte et cohérente. Nous ne pouvons pas vous fournir une prise en charge de ces configurations hautement sécurisées, car de nombreuses choses pourraient fonctionner différemment en raison de limitations de sécurité.
Il est possible d'exécuter le FFMPEG avec un codec supposant l'accélération matérielle, en définissant PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION . La valeur doit être l'une des qsv , vaapi , nvenc .
Nous avons vérifié l'accélération matérielle avec qsv sur une puce Intel. Pour le laisser fonctionner, il doit cartographier /dev/dri les périphériques et définir un Env PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv . Voir [docker-compose.example.yml] (./ docker-compose Exemple / docker-compose.example.yml).
Si vous vérifiez que d'autres accélérations matérielles fonctionnent bien, faites-le nous savoir.
? Tout d'abord, merci pour votre intérêt pour la contribution! ?
Ce projet est le résultat d'un travail acharné, et c'est formidable de vous voir intéressé à contribuer. Les contributions ne concernent pas seulement le code - vous pouvez aider à bien des égards!
Avant de commencer, veuillez prendre un moment pour lire notre guide de contribution. Il comprend des informations sur notre code de conduite, le processus de soumission des demandes de traction, et plus encore.
N'oubliez pas que chaque contribution compte. Rendons ce projet meilleur ensemble! ?
L'environnement de développement de Docker est facile à configurer. Il ne nécessite que Docker et Docker Compose Plugin localement. Toutes les dépendances sont installées dans un conteneur mais pas dans l'hôte.
Il a également quelques lacunes. Dans MacOS, Docker s'exécute dans une machine virtuelle Linux. La notification FS ne fonctionne pas bien dans ce cas. Vous ne pouvez pas utiliser reflex ou nodemon pour relancer les serveurs lorsque le code change. Le compilateur est également assez lent.
Nous vous recommandons d'utiliser un environnement de développement Docker. Si l'environnement Docker ne fonctionne pas bien, comme sur MacOS, veuillez utiliser un environnement de développement local.
Il peut prendre beaucoup de temps pour construire des dépendances lors du lancement des serveurs pour la première fois.
$ docker compose -f dev-compose.yaml build # Build images for development
$ docker compose -f dev-compose.yaml up # Launch API and UI serversLe terrain de jeu GraphQL est désormais accessible à LocalHost: 4001. Le site est désormais accessible à LocalHost: 1234. Les deux serveurs seront relancés après la modification du code.
Par défaut, il utilise SQLite3 comme base de données. Pour exécuter des serveurs avec une autre base de données, veuillez mettre à jour la valeur PHOTOVIEW_DATABASE_DRIVER dans le fichier dev-compose.yaml et l'exécution:
$ docker compose -f dev-compose.yaml --profile mysql up # Run with mysql database
or
$ docker compose -f dev-compose.yaml --profile postgres up # Run with postgresql databaseSi vous ne voulez pas dépendre de Docker Compose mais uniquement Docker, vous pouvez lancer le serveur comme ci-dessous.
Il peut prendre beaucoup de temps pour construire des dépendances lors du lancement des serveurs pour la première fois.
$ docker build --target api -t photoview/api . # Build image for development
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file api/example.env photoview/api
reflex -g ' *.go ' -s -- go run . # Monitor source code and (re)launch API serverLe terrain de jeu GraphQL est désormais accessible à LocalHost: 4001.
Note
Le serveur s'exécute sur le réseau hôte en tant qu'approvisionnement --network host . Il est facile de communiquer entre le serveur API et le serveur d'interface utilisateur. Si vous ne voulez pas le faire, veuillez consulter Docker Network pour créer un nouveau réseau pour exécuter des serveurs.
Il peut prendre beaucoup de temps pour construire des dépendances lors du lancement des serveurs pour la première fois.
$ docker build --target ui -t photoview/ui . # Build image for development
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file ui/example.env photoview/ui
npm install # Install dependencies
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file ui/example.env photoview/ui
npm run mon # Monitor source code and (re)launch UI serverLe site est désormais accessible à LocalHost: 1234.
Note
Le serveur s'exécute sur le réseau hôte en tant qu'approvisionnement --network host . Il est facile de communiquer entre le serveur API et le serveur d'interface utilisateur. Si vous ne voulez pas le faire, veuillez consulter Docker Network pour créer un nouveau réseau pour exécuter des serveurs.
Dans Linux, nous recommandons d'utiliser Docker Compose ou Docker comme environnement de développement local.
Nous ne pouvons pas continuer à vérifier les commandes ci-dessous sur chaque environnement. Les gens peuvent avoir besoin de résoudre les dépendances par eux-mêmes.
golang > = 1,22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas , recommandé d'utiliser libatlas-base dans Debian.liblapackreflex : un outil de surveillance du code source, qui reconstruise et redémarre automatiquement le serveur, exécutant le code en développement.sqlite : le SQLite DBMS, utile pour interagir directement avec SQLite DB de PhotoView si vous l'utilisez dans votre environnement de développement.node = 18Dans Debian / Ubuntu, installez les dépendances:
$ sudo apt update # Update the package list
$ sudo apt install golang g++ libc-dev libheif-dev libdlib-dev libjpeg-dev libblas-dev libatlas-base-dev liblapack-dev # For API requirement
$ sudo apt install reflex sqlite3 # For API optional toolsDans MacOS, installez les dépendances:
$ brew update # Update the package list
$ brew install golang gcc pkg-config libheif dlib jpeg # For API
$ brew install reflex sqlite3 # For API optional tools Veuillez suivre les conseils du gestionnaire de packages si vous n'utilisez pas apt ou homebrew .
Pour node , recommandez d'utiliser NVM. Suivez l'installation et la mise à jour pour installer nvm localement, puis:
$ nvm install 18
$ nvm use 18 Vous pouvez installer node avec un autre gestionnaire de packages si vous le souhaitez.
/api/example.env à .envPHOTOVIEW_SQLITE_PATH si vous ne souhaitez pas mettre le fichier SQLite sous /apiPHOTOVIEW_DATABASE_DRIVER avec votre piloteSi votre
PGSQL_PASSWORDouMARIADB_PASSWORDcontiennent des caractères spéciaux (par exemple@), assurez-vous de les encoder URL.
/ui/example.env à .envEnsuite, exécutez les commandes suivantes:
# Optional: Set the compiler environment in Debian/Ubuntu
$ source ./scripts/set_compiler_env.sh
# Set the compiler environment with `homebrew`
$ export CPLUS_INCLUDE_PATH= " $( brew --prefix ) /opt/jpeg/include: $( brew --prefix ) /opt/dlib/include "
$ export LD_LIBRARY_PATH= " $( brew --prefix ) /opt/jpeg/lib: $( brew --prefix ) /opt/dlib/lib "
$ export LIBRARY_PATH= " $( brew --prefix ) /opt/jpeg/lib: $( brew --prefix ) /opt/dlib/lib "
# Start API server
$ cd ./api
$ go run .Si vous souhaitez recompiler automatiquement le serveur lorsque le code change:
# Start API server
$ cd ./api
$ reflex -g ' *.go ' -s -- go run .Le terrain de jeu GraphQL est désormais accessible à LocalHost: 4001.
Dans une nouvelle fenêtre de terminal, exécutez les commandes suivantes:
cd ./ui
npm install
npm startSi vous souhaitez recompiler automatiquement le serveur lorsque le code change:
$ cd ./ui
$ npm run monLe site est désormais accessible à LocalHost: 1234.
@erinerkz | @ Robin-Moser | @Revorge | @DeExno | @Fkrauss | @Jupblb |