

PhotoView ist eine einfache und benutzerfreundliche Fotogalerie, die für Fotografen bereitgestellt wird und eine einfache und schnelle Möglichkeit bietet, mit Tausenden von hochauflösenden Fotos zu navigieren.
Sie konfigurieren PhotoView so, dass sie nach Fotos und Videos in einem Verzeichnis in Ihrem Dateisystem suchen. Der Scanner nimmt automatisch Ihre Medien auf und generiert Miniaturbilder, um das Surfen superschnell zu machen.
Wenn Ihre Medien gescannt wurden, werden sie auf der Website angezeigt, die auf die gleiche Weise wie im Dateisystem organisiert sind.
Wenn Sie Fragen zu Setup oder Entwicklung haben, können Sie sich dem Discord Server https://discord.gg/jq392948u9 anschließen
Wir haben in die neue Docker -Registrierung https://hub.docker.com/r/photoview/photoview migriert und alle neuen Bilder für das master -Tag sowie zukünftige Veröffentlichungen werden dort anstelle der zuvor verwendeten Registrierung veröffentlicht. Alte Bilder sind in der alten Registrierung https://hub.docker.com/r/viktorstrate/photoview weiterhin zugänglich. Wenn Sie also 1 dieser alten Bilder verwenden möchten, müssen Sie zur alten Registrierung zurückkehren.
Bitte aktualisieren Sie Ihre Datei docker-compose.yml um die neue Registrierung für das photoview Bild zu verwenden, wie im entsprechenden Beispiel der Komponierungsdatei gezeigt: https://github.com/photoview/photoview/tree/master/docker-compose%20example
Besuchen Sie https://photos.qpqp.dk/
Benutzername: Demo
Passwort: Demo
Es gibt bereits viele Open-Source-Fotogalerien. Hier sind einige, nur um einige zu erwähnen.
Warum noch ein anderer? Ich liebe es, Fotos zu machen, und ich speichere sie alle auf meinem lokalen Fileserver. Dies ist großartig, weil ich meine Fotos direkt auf dem Dateisystem organisieren kann, sodass es einfach ist, sie zu verschieben oder Backups zu entnehmen. Ich möchte steuern können, wo und wie die Fotos gespeichert werden.
Das Problem ist jedoch, dass Rohbilder auch über das lokale Netzwerk äußerst mühsam sind, um von einem Dateiserver zu navigieren.
Mein Server enthält viele alte Familienbilder, auf die meine Familie auch Zugriff hat. Und einige der Bilder, die ich leicht mit anderen Menschen teilen möchte, ohne dass sie zuerst ein Konto erstellen müssen.
Daher brauche ich eine Lösung, die Folgendes kann:
Alle Fotogalerien können viel von dem tun, was ich brauche, aber kein einziges kann alles tun.
In diesem Abschnitt wird beschrieben, wie PhotoView mit Docker auf Ihrem Server ausgeführt wird. Stellen Sie sicher, dass Docker und Docker-Compose auf Ihrem Server installiert und ausgeführt werden.
makesollte auch installiert werden, wenn Sie die bereitgestellteMakefileverwenden möchten, was optional ist (weitere Informationen finden Sie unter Schritt 4).7zzsollte für den Fall installiert werden, dass Sie es im Umfang des Sicherungsszenario anstelle des Standardformats von .tar.xz verwenden möchten. Lesen Sie den Kommentar imMakefile, der sich oben imbackup-Bereich befindet, um weitere Informationen zu erhalten.
Laden Sie den Inhalt des docker-compose example in den Ordner auf Ihrem Server herunter, in dem Sie die internen PhotoView-Daten (Datenbank- und Cache-Dateien) hosten.
Bitte beachten Sie, dass dieser Ordner 2 Versionen der Docker-Compose-Datei enthält:
docker-compose.example.yml -die voll funktionsfähige und für die meisten Fälle empfohlene Konfigurationdocker-compose.minimal.example.yml - Die minimale und einfache Konfiguration für diejenigen, die die vorherige zu komplex und schwer zu verstehen und zu verwalten findenBeim Herunterladen von Dateien müssen Sie nur eine davon auswählen.
Benennen Sie heruntergeladene Dateien um und entfernen Sie das example aus ihren Namen (Sie müssen also .env , docker-compose.yml und Makefile -Dateien haben). Wenn Sie in früheren Schritt den docker-compose.minimal.example.yml auswählen, sollten Sie ihn in docker-compose.yml umbenennen.
Öffnen Sie diese Dateien in einem Texteditor und lesen Sie sie. Ändern Sie bei Bedarf gemäß den Dokumentationskommentaren, um Ihrem Setup ordnungsgemäß übereinstimmen. Es gibt Kommentare von 2 Typen: Diejenigen, die mit ## beginnen, sind Erklärungen und Beispiele, die nicht unkontrolliert werden sollten; Diese, beginnend mit # , sind optionale oder alternative Konfigurationsteile, die unter bestimmten Umständen möglicherweise nicht in der Lage sind, in entsprechenden Erklärungen beschrieben. Es ist besser, die Dateien in der nächsten Reihenfolge durchzugehen: .env , docker-compose.yml und Makefile .
Wenn Ihr
PGSQL_PASSWORDoderMARIADB_PASSWORDSonderzeichen (z. B.@) enthält, stellen Sie sicher, dass Sie sie von URL-Codierung enthält.
Stellen Sie sicher, dass der Root -Ordner Ihrer Medienbibliothek und alle Dateien und Unterordner von anderen Benutzern lesbar und durchsucht werden können: Führen Sie den nächsten Befehl aus (oder die entsprechende Folge von Befehlen aus der Makefile ):
make readable Wenn die Befehl (n) die Rückgabe Permission denied , führen Sie diese unter dem Benutzer aus und besitzen entsprechende Dateien und Ordner. Alternativ führen Sie sie vor dem Befehl hin und addieren Sie sudo : Dadurch wechselt der Ausführungskontext auf root -Benutzer und fragt nach dem Stammkennwort. Sie müssen die Erlaubnis haben, sudo im System zu betreiben.
Wenn Sie others Gruppen für Ihre Dateien nicht die erforderlichen Berechtigungen geben möchten, können Sie alternativ:
photoview -Dienstes, der dieser Gruppe gehört. Stellen Sie dann die entsprechenden Berechtigungen in den group fest.photoview -Dienstes an diesen Benutzer. Legen Sie dann die entsprechenden Berechtigungen auf den user ein. Wenn Makefile andere Moderationen mit Mediendateien von anderen Standorten auf dem Host konfiguriert readable ( / . Führen Sie beide Befehle für jeden zusätzlichen Root -Ordner aus.
Falls Sie nicht in Ihrem System make sind oder es nicht für die PhotoView -Verwaltungsaktivitäten verwenden möchten, können Sie dieselben Befehle aus dem Makefile verwenden und sie direkt in Ihrer Shell ausführen oder Ihre eigenen Skripte erstellen. Stellen Sie sicher, dass .env die Variablen zuerst in diesem Fall anwenden oder ersetzen. Makefile wird nur für Ihre Bequemlichkeit und Einfachheit bereitgestellt, ist jedoch optional.
Starten Sie den Server, indem Sie den folgenden Befehl ausführen (oder die entsprechende Folge von Befehlen aus der Makefile ):
make all Wenn der Endpunkt oder der Port in der Datei docker-compose.yml nicht geändert wurden, kann jetzt auf PhotoView unter http: // localhost: 8000 zugegriffen werden
Wenn alles korrekt eingerichtet ist, sollten Sie beim ersten Mal mit einem ersten Setup -Assistenten auf die Website zugreifen.

Geben Sie einen neuen Benutzernamen und ein neues Passwort ein.
Geben Sie für den Fotopad den Pfad in den Docker -Container ein, in dem sich Ihre Fotos befinden. Dies kann aus der Datei docker-compose.yml unter photoview -> volumes festgelegt werden. Der Standardort ist /photos .
Ein neuer Administrator -Benutzer wird erstellt, der Zugriff auf die Fotos, die sich am Pfad unter dem ersten Setup befinden, zugreifen.
Settings Fotos müssen vor ihrer Anzeige gescannt werden Scan All
Wir empfehlen, die PhotoView-Instanz zu sichern, bevor wir sie außerhalb Ihres lokalen Netzwerks aussetzen: Auch wenn sie schreibgeschützte Zugriff auf Ihre Mediengalerie bietet und eine grundlegende Funktionen der Benutzerauthentifizierung hat, reicht es nicht aus, Ihre privaten Medien vor böswilligen Schauspielern im Internet zu schützen.
Mögliche Möglichkeiten zur Sicherung eines selbst gehosteten Dienstes könnten (aber nicht beschränkt auf) sein:
Das Einrichten und Konfigurieren all dieser Schutzmaßnahmen hängt von und erfordert viele Informationen über Ihr lokales Netzwerk und selbst gehostete Dienste. Basierend auf diesen Informationen können sich der Konfigurationsfluss und die resultierende Dienstearchitektur zwischen den Fällen stark unterscheiden. Aus diesem Grund können wir Ihnen im Rahmen dieses Projekts nur diese hochrangige Liste möglicher Möglichkeiten des Webservice-Schutzes zur Verfügung stellen. Sie müssen sie untersuchen, die beste Kombination und Konfiguration für Ihren Fall finden und die Verantwortung übernehmen, alles auf die richtige und konsistente Weise zu konfigurieren. Wir können Ihnen keine Unterstützung für so hoch gesicherte Setups bieten, da viele Dinge aufgrund von Sicherheitsbeschränkungen unterschiedlich funktionieren könnten.
Es ist möglich, den FFMPEG mit einer Codec -Supplastin der Hardware -Beschleunigung durchzuführen, indem er PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION definiert. Der Wert sollte einer von qsv , vaapi , nvenc sein.
Wir haben nur die Hardwarebeschleunigung mit qsv auf einem Intel -Chip überprüft. Um es funktionieren zu lassen, muss es /dev/dri -Geräte zu kartieren und ein Env PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv festlegen. Siehe [Docker-compose.example.yml] (./ Docker-compose Beispiel/Docker-compose.example.yml).
Wenn Sie andere Hardware -Beschleunigungen überprüfen, die gut funktionieren, lassen Sie es uns wissen.
? Zunächst einmal vielen Dank für Ihr Interesse am Beitrag! ?
Dieses Projekt ist ein Ergebnis harter Arbeit, und es ist großartig, Sie zu sehen, um einen Beitrag zu leisten. Bei Beiträgen geht es nicht nur um Code - Sie können in vielerlei Hinsicht helfen!
Bevor Sie beginnen, nehmen Sie sich bitte einen Moment Zeit, um unseren Beitrag zu lesen. Es enthält Informationen zu unserem Verhaltenskodex, dem Prozess zum Senden von Pull -Anfragen und vielem mehr.
Denken Sie daran, jeder Beitrag zählt. Lassen Sie uns dieses Projekt besser zusammenstellen! ?
Die Docker -Entwicklungsumgebung ist leicht eingerichtet. Es erfordert nur Docker und Docker Compose Plugin lokal. Alle Abhängigkeiten sind in einem Container installiert, aber nicht im Host.
Es hat auch einige Mängel. In MacOS läuft Docker in einem Linux -VM. Die FS -Benachrichtigung funktioniert in diesem Fall nicht gut. Sie können reflex oder nodemon nicht verwenden, um Server zu relaunchieren, wenn sich der Code ändert. Der Compiler läuft auch ziemlich langsam.
Wir empfehlen, die Docker -Entwicklungsumgebung zu verwenden. Wenn die Docker -Umgebung wie bei MacOS nicht gut funktioniert, nutzen Sie bitte die lokale Entwicklungsumgebung.
Das Erstellen von Abhängigkeiten beim ersten Start von Servern kann lange dauern.
$ docker compose -f dev-compose.yaml build # Build images for development
$ docker compose -f dev-compose.yaml up # Launch API and UI serversAuf den GraphQL -Spielplatz kann jetzt bei Localhost: 4001 zugegriffen werden. Auf die Website kann jetzt unter Localhost: 1234 zugegriffen werden. Beide Server werden nach der Änderung des Codes neu gestartet.
Standardmäßig wird SQLite3 als Datenbank verwendet. Um Server mit einer anderen Datenbank auszuführen, aktualisieren Sie bitte PHOTOVIEW_DATABASE_DRIVER Value in dev-compose.yaml -Datei und führen Sie aus:
$ 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 databaseWenn Sie sich nicht auf Docker Compose, sondern nur Docker verlassen möchten, können Sie den Server wie unten starten.
Das Erstellen von Abhängigkeiten beim ersten Start von Servern kann lange dauern.
$ 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 serverAuf den GraphQL -Spielplatz kann jetzt bei Localhost: 4001 zugegriffen werden.
Notiz
Der Server wird im Host -Netzwerk als --network host -Flag ausgeführt. Es ist einfach, zwischen API -Server und UI -Server zu kommunizieren. Wenn Sie dies nicht tun möchten, überprüfen Sie das Docker -Netzwerk, um ein neues Netzwerk für Server auszuführen.
Das Erstellen von Abhängigkeiten beim ersten Start von Servern kann lange dauern.
$ 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 serverAuf die Website kann jetzt unter Localhost: 1234 zugegriffen werden.
Notiz
Der Server wird im Host -Netzwerk als --network host -Flag ausgeführt. Es ist einfach, zwischen API -Server und UI -Server zu kommunizieren. Wenn Sie dies nicht tun möchten, überprüfen Sie das Docker -Netzwerk, um ein neues Netzwerk für Server auszuführen.
In Linux empfehlen wir, Docker Compose oder Docker als lokale Entwicklungsumgebung zu verwenden.
Wir können die folgenden Befehle in jeder Umgebung nicht weiter überprüfen. Menschen müssen möglicherweise Abhängigkeiten von ihren eigenen lösen.
golang > = 1,22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas , empfohlen mit libatlas-base in Debian.liblapackreflex : Ein Quellcode -Überwachungstool, das den Server automatisch neu aufgebaut und neu startet, und aus dem Code in der Entwicklung ausgeführt.sqlite : Das SQLite -DBMS, das nützlich ist, um mit PhotoViews SQLite DB direkt zu interagieren, wenn Sie es in Ihrer Entwicklungsumgebung verwenden.node = 18Installieren Sie in Debian/Ubuntu Abhängigkeiten:
$ 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 toolsInstallieren Sie in MacOS Abhängigkeiten:
$ 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 Bitte befolgen Sie die Paket -Manager -Anleitung, wenn Sie keine apt oder homebrew verwenden.
Für node empfehlen Sie NVM. Folgen Sie die Installation und Aktualisierung, um nvm lokal zu installieren, und dann: dann:
$ nvm install 18
$ nvm use 18 Sie können node mit einem anderen Paketmanager installieren, wenn Sie möchten.
/api/example.env in .env umbenennenPHOTOVIEW_SQLITE_PATH /apiPHOTOVIEW_DATABASE_DRIVER mit Ihrem TreiberWenn Ihr
PGSQL_PASSWORDoderMARIADB_PASSWORDSonderzeichen (z. B.@) enthält, stellen Sie sicher, dass Sie sie von URL-Codierung enthält.
/ui/example.env in .env umbenennenFühren Sie dann die folgenden Befehle aus:
# 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 .Wenn Sie den Server automatisch neu kompilieren möchten, wenn sich der Code ändert:
# Start API server
$ cd ./api
$ reflex -g ' *.go ' -s -- go run .Auf den GraphQL -Spielplatz kann jetzt bei Localhost: 4001 zugegriffen werden.
Führen Sie in einem neuen Terminalfenster die folgenden Befehle aus:
cd ./ui
npm install
npm startWenn Sie den Server automatisch neu kompilieren möchten, wenn sich der Code ändert:
$ cd ./ui
$ npm run monAuf die Website kann jetzt unter Localhost: 1234 zugegriffen werden.
@ererkz | @Robin-Moser | @Revorge | @Dexno | @Fkrauss | @JUPBLB |