

PhotoView es una galería de fotos simple y fácil de usar que está hecha para fotógrafos y tiene como objetivo proporcionar una forma fácil y rápida de navegar por los directorios, con miles de fotos de alta resolución.
Configura PhotoView para buscar fotos y videos dentro de un directorio en su sistema de archivos. El escáner recoge automáticamente sus medios y comienza a generar imágenes en miniatura para que la navegación sea súper rápida.
Cuando sus medios han sido escaneados, aparecen en el sitio web, organizados de la misma manera que en el sistema de archivos.
Si tiene preguntas sobre la configuración o el desarrollo, no dude en unirse al servidor Discord https://discord.gg/JQ392948u9
Migramos al nuevo Docker Registry https://hub.docker.com/r/photoview/photoview y todas las imágenes nuevas para la etiqueta master , así como futuros lanzamientos se publicarán allí en lugar del registro utilizado anteriormente. Las imágenes antiguas aún se pueden acceder en el antiguo registro https://hub.docker.com/r/viktorstrate/photoview, por lo que si desea usar 1 de esas imágenes antiguas, debe volver al registro anterior.
Actualice su archivo docker-compose.yml para usar el nuevo registro para la imagen photoview , como se muestra en el ejemplo correspondiente del archivo de composición: https://github.com/photoview/photoview/tree/master/docker-Compose%20Example
Visite https://photos.qpqp.dk/
Nombre de usuario: demostración
Contraseña: demostración
Existe muchas galerías de fotos autohostadas de código abierto ya. Aquí hay algunos, solo por mencionar algunos.
Entonces, ¿por qué otro? Me encanta tomar fotos y las almaceno todas en mi servidor de archivos local. Esto es genial porque puedo organizar mis fotos directamente en el sistema de archivos, por lo que es fácil moverlas o tomar copias de seguridad. Quiero poder controlar dónde y cómo se almacenan las fotos.
Sin embargo, el problema es que las imágenes sin procesar son extremadamente tediosas para navegar desde un servidor de archivos, incluso a través de la red local.
Mi servidor contiene muchas fotos familiares antiguas a las que también me gustaría que mi familia tuviera acceso. Y algunas de las imágenes me gustaría poder compartir fácilmente con otras personas sin que la molestia tuviera que hacer una cuenta primero.
Por lo tanto, necesito una solución que pueda hacer lo siguiente:
Todas las galerías de fotos pueden hacer mucho de lo que necesito, pero ningún solo puede hacerlo todo.
Esta sección describe cómo obtener fotoview en funcionamiento en su servidor con Docker. Asegúrese de tener Docker y Docker-composa instalados y ejecutados en su servidor.
maketambién debe instalarse si desea usarMakefileprovisto, que es opcional (consulte el Paso 4 para obtener más detalles). Se debe instalar7zzen caso de que lo desee usar en el alcance del escenario de copia de seguridad en lugar del formato .tar.xz predeterminado. Lea el comentario enMakefile, ubicado en la parte superior de la secciónbackuppara obtener más detalles.
Descargue el contenido de la carpeta docker-compose example a la carpeta en su servidor, donde espera alojar los datos internos de PhotoView (base de datos y archivos de caché).
Tenga en cuenta que esta carpeta contiene 2 versiones del archivo Docker-Compose:
docker-compose.example.yml : el completamente funcional y recomendado para la mayoría de los casos configdocker-compose.minimal.example.yml : la configuración mínima y simple para aquellos que encuentran el anterior demasiado complejo y difícil de entender y administrarAl descargar archivos, debe elegir solo uno de ellos.
Cambie el nombre de los archivos descargados y elimine el example de sus nombres (por lo tanto, debe tener .env , docker-compose.yml y Makefile archivos). Si elige docker-compose.minimal.example.yml en el paso anterior, asegúrese de cambiar el nombre de docker-compose.yml .
Abra estos archivos en un editor de texto y léelos. Modifique dónde sea necesario de acuerdo con los comentarios de documentación para que coincidan correctamente con su configuración. Hay comentarios de 2 tipos: aquellos, que comienzan con ## , son explicaciones y ejemplos, que no deben estar sin comodidad; Aquellos, que comienzan con # , son piezas de configuración opcionales o alternativas, que podrían estar sin comodidad en ciertas circunstancias, descritas en las explicaciones correspondientes. Es mejor revisar los archivos en el próximo orden: .env , docker-compose.yml y Makefile .
Si su
PGSQL_PASSWORDoMARIADB_PASSWORDcontienen caracteres especiales (por ejemplo@), asegúrese de encenderlos URL.
Asegúrese de que la carpeta raíz de su biblioteca de medios y todos los archivos y subcarpetas sean legibles y de búsqueda de otros usuarios: ejecute el siguiente comando (o la secuencia de comandos correspondiente desde el Makefile ):
make readable Si el comando (s) devuelve el error Permission denied , ejecutarlos debajo del usuario, poseer los archivos y carpetas correspondientes. Alternativamente, ejecutarlos agregando sudo antes del comando: esto cambiará el contexto de ejecución al usuario root y solicitará la contraseña de root. Debe tener permiso para ejecutar sudo en el sistema.
Si no desea dar permisos requeridos al grupo others para sus archivos, alternativamente, puede:
photoview que es propiedad de este grupo; Luego establezca los permisos apropiados en la sección group .photoview a este usuario; Luego establezca los permisos apropiados en la sección user . Si configuró otras monturas con archivos multimedia de otras ubicaciones en el host (como host_photoview_media_family o cualquier otra cosa), debe ejecutar los mismos comandos, como en el objetivo readable Makefile , para cada carpeta root de los medios en su host manualmente: copie cada comando a su shell y reemplazar la variable con la ruta absoluta a una carpinter de medios adicional sin el seguimiento / . Ejecute ambos comandos para cada carpeta raíz adicional.
En caso de que no haya make en su sistema o no desea usarlo para las actividades de administración de PhotoView, puede usar los mismos comandos desde Makefile y ejecutarlos en su shell directamente, o crear sus propios scripts. Asegúrese de aplicar o reemplazar las variables de su .env primero en este caso. Makefile se proporciona solo para su conveniencia y simplicidad, pero es opcional.
Inicie el servidor ejecutando el siguiente comando (o la secuencia de comandos correspondiente desde Makefile ):
make all Si el punto final o el puerto no se ha cambiado en el archivo docker-compose.yml , ahora se puede acceder a Photoview en http: // localhost: 8000
Si todo está configurado correctamente, se le debe presentar un asistente de configuración inicial al acceder al sitio web la primera vez.

Ingrese un nuevo nombre de usuario y contraseña.
Para la ruta de la foto, ingrese la ruta dentro del contenedor Docker donde se encuentran sus fotos. Esto se puede configurar desde el archivo docker-compose.yml en photoview -> volumes . La ubicación predeterminada es /photos .
Se creará un nuevo usuario administrador, con acceso a las fotos ubicadas en la ruta proporcionada en la configuración inicial.
Las fotos tendrán que ser escaneadas antes de aparecer, puede iniciar un escaneo manualmente, navegando hasta Settings y haciendo clic en Scan All
Sugerimos asegurar la instancia de fotoview antes de exponerla fuera de su red local: incluso si bien proporciona acceso de solo lectura a su galería de medios y tiene una funcionalidad básica de autenticación de usuarios, no es suficiente proteger a sus medios privados de actores maliciosos en Internet.
Las posibles formas de asegurar un servicio autohospedado podrían estar (pero no limitarse):
Configurar y configurar todas estas protecciones depende y requiere mucha información sobre su red local y sus servicios autohospedados. Según esta información, el flujo de configuración y la arquitectura de servicios resultantes pueden diferir mucho entre los casos. Es por eso que en el alcance de este proyecto, solo podemos proporcionarle esta lista de alto nivel de posibles formas de protección del servicio web. Deberá investigarlos, encontrar la mejor combinación y configuración para su caso, y asumir la responsabilidad de configurar todo de la manera correcta y consistente. No podemos brindarle apoyo para configuraciones tan altamente seguras, ya que muchas cosas pueden funcionar de manera diferente debido a las limitaciones de seguridad.
Es posible ejecutar el FFMPEG con un códec Supploting la aceleración de hardware, definiendo PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION . El valor debe ser uno de qsv , vaapi , nvenc .
Solo verificamos la aceleración del hardware con qsv en un chip Intel. Para dejar que funcione, debe mapear /dev/dri dispositivos y establecer un envía PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv . Consulte [Docker-Compose.example.yml] (./ Docker-compose Ejemplo/Docker-Compose.example.yml).
Si verifica que otras aceleraciones de hardware funcionen bien, háganoslo saber.
? En primer lugar, ¡gracias por su interés en la contribución! ?
Este proyecto es el resultado del trabajo duro, y es genial verlo interesado en contribuir. Las contribuciones no se tratan solo del código, ¡puede ayudar de muchas maneras!
Antes de comenzar, tómese un momento para leer nuestra guía contribuyente. Incluye información sobre nuestro código de conducta, el proceso para enviar solicitudes de extracción y más.
Recuerde, cada contribución cuenta. ¡Hagamos este proyecto mejor juntos! ?
El entorno de desarrollo de Docker es fácil de configurar. Solo requiere el complemento Docker y Docker Compose localmente. Todas las dependencias se instalan en un contenedor pero no en el host.
También tiene algunas deficiencias. En MacOS, Docker se está ejecutando en una VM Linux. La notificación FS no funciona bien en este caso. No puede usar reflex o nodemon para relanzar servidores cuando cambia el código. El compilador también funciona bastante lento.
Recomendamos usar el entorno de desarrollo de Docker. Si el entorno de Docker no funciona bien, como en macOS, utilice el entorno de desarrollo local.
Puede llevar mucho tiempo construir dependencias al lanzar servidores por primera vez.
$ docker compose -f dev-compose.yaml build # Build images for development
$ docker compose -f dev-compose.yaml up # Launch API and UI serversAhora se puede acceder al patio de juegos GraphQL en Localhost: 4001. Ahora se puede acceder al sitio en Localhost: 1234. Ambos servidores se relanzarán después de que se cambie el código.
Por defecto, utiliza SQLITE3 como base de datos. Para ejecutar servidores con otra base de datos, actualice el valor PHOTOVIEW_DATABASE_DRIVER en el archivo dev-compose.yaml y ejecute:
$ 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 no desea depender de Docker Compose pero solo Docker, puede iniciar el servidor como se muestra a continuación.
Puede llevar mucho tiempo construir dependencias al lanzar servidores por primera vez.
$ 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 serverAhora se puede acceder al patio de juegos GraphQL en Localhost: 4001.
Nota
El servidor se ejecuta en la red de host como el indicador --network host . Es fácil comunicarse entre API Server y UI Server. Si no desea hacer eso, consulte Docker Network para crear una nueva red para ejecutar servidores.
Puede llevar mucho tiempo construir dependencias al lanzar servidores por primera vez.
$ 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 serverAhora se puede acceder al sitio en Localhost: 1234.
Nota
El servidor se ejecuta en la red de host como el indicador --network host . Es fácil comunicarse entre API Server y UI Server. Si no desea hacer eso, consulte Docker Network para crear una nueva red para ejecutar servidores.
En Linux, recomendamos usar Docker Compose o Docker como un entorno de desarrollo local.
No podemos seguir verificando los comandos a continuación en cada entorno. Las personas pueden necesitar resolver dependencias por las suyas.
golang > = 1.22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas , recomendado usando libatlas-base en Debian.liblapackreflex : una herramienta de monitoreo de código fuente, que reconstruye y reinicia automáticamente el servidor, que se ejecuta desde el código en desarrollo.sqlite : el DBMS SQLite, útil para interactuar con SQLite DB de PhotoView directamente si lo usa en su entorno de desarrollo.node = 18En Debian/Ubuntu, Instale Dependencias:
$ 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 toolsEn macOS, instalar dependencias:
$ 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 Siga la guía del Administrador de paquetes si no usa apt o homebrew .
Para node , recomiende usar NVM. Siga la instalación y la actualización para instalar nvm localmente, luego:
$ nvm install 18
$ nvm use 18 Puede instalar node con otro Administrador de paquetes si lo desea.
/api/example.env a .envPHOTOVIEW_SQLITE_PATH si no desea colocar el archivo sqlite en /apiPHOTOVIEW_DATABASE_DRIVER con su controladorSi su
PGSQL_PASSWORDoMARIADB_PASSWORDcontienen caracteres especiales (por ejemplo@), asegúrese de encenderlos URL.
/ui/example.env a .envLuego ejecute los siguientes comandos:
# 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 desea recompilar el servidor automáticamente cuando cambia el código:
# Start API server
$ cd ./api
$ reflex -g ' *.go ' -s -- go run .Ahora se puede acceder al patio de juegos GraphQL en Localhost: 4001.
En una nueva ventana de terminal, ejecute los siguientes comandos:
cd ./ui
npm install
npm startSi desea recompilar el servidor automáticamente cuando cambia el código:
$ cd ./ui
$ npm run monAhora se puede acceder al sitio en Localhost: 1234.
@Imarerkz | @Robin-Moser | @Revorge | @DeExno | @Fkrauss | @jupblb |