

A PhotoView é uma galeria de fotos simples e fácil de usar, feita para fotógrafos e tem como objetivo fornecer uma maneira fácil e rápida de navegar nos diretórios, com milhares de fotos de alta resolução.
Você configura o PhotoView para procurar fotos e vídeos em um diretório em seu sistema de arquivos. O scanner pega automaticamente sua mídia e começa a gerar imagens de miniatura para tornar a navegação super rápida.
Quando sua mídia foi digitalizada, eles aparecem no site, organizados da mesma maneira que no sistema de arquivos.
Se você tiver dúvidas sobre configuração ou desenvolvimento, sinta -se à vontade para ingressar no servidor Discord https://discord.gg/jq392948u9
Migramos para o novo Docker Registry https://hub.docker.com/r/photoview/photoview e todas as novas imagens para a tag master , bem como lançamentos futuros serão publicados lá em vez do registro usado anteriormente. As imagens antigas ainda estarão acessíveis no antigo registro https://hub.docker.com/r/viktorstrate/photoview; portanto, se você deseja usar 1 dessas imagens antigas, precisará voltar ao antigo registro.
Atualize seu arquivo docker-compose.yml para usar o novo registro para a imagem photoview , conforme mostrado no exemplo correspondente do arquivo de composição: https://github.com/photoview/photoview/tree/master/docker-compose%20example
Visite https://photos.qpqp.dk/
Nome de usuário: demonstração
Senha: demonstração
Existe muitas galerias de fotos auto-hospedadas de código aberto. Aqui estão alguns, apenas para mencionar alguns.
Então, por que outro? Adoro tirar fotos e guardo todas elas no meu servidor de arquivos local. Isso é ótimo porque eu posso organizar minhas fotos diretamente no sistema de arquivos, por isso é fácil movê -las ou fazer backups. Eu quero poder controlar onde e como as fotos são armazenadas.
O problema é, no entanto, que as imagens brutas são extremamente tediosas para navegar de um servidor de arquivos, mesmo pela rede local.
Meu servidor contém muitas fotos de família antigas às quais eu gostaria que minha família também tivesse acesso. E algumas das fotos que eu gostaria de compartilhar facilmente com outras pessoas sem o incômodo delas terem que fazer uma conta primeiro.
Assim, preciso de uma solução que possa fazer o seguinte:
Todas as galerias de fotos podem fazer muito do que eu preciso, mas ninguém pode fazer tudo.
Esta seção descreve como colocar o PhotoView em funcionamento no seu servidor com o Docker. Certifique-se de ter o Docker e o Docker-Compose instalados e executando em seu servidor.
makedeve ser instalada também se você quiser usarMakefilefornecido, o que é opcional (consulte a Etapa 4 para obter mais detalhes).7zzdeve ser instalado, caso você gostaria de usá -lo no escopo do cenário de backup em vez do formato padrão .tar.xz. Leia o comentário noMakefile, localizado no topo da seçãobackuppara obter mais detalhes.
Faça o download do conteúdo da pasta docker-compose example na pasta no seu servidor, onde você espera hospedar os dados internos do PhotoView (arquivos de banco de dados e cache).
Observe que esta pasta contém 2 versões do arquivo Docker-Compose:
docker-compose.example.yml -o totalmente funcional e recomendado para a maioria dos casos configuradocker-compose.minimal.example.yml - a configuração mínima e simples para aqueles que acham o anterior muito complexo e difícil de entender e gerenciarAo baixar arquivos, você precisa escolher apenas um deles.
Renomeie os arquivos baixados e remova o example de seus nomes (então, você precisa ter arquivos .env , docker-compose.yml e Makefile ). Se você escolher o docker-compose.minimal.example.yml na etapa anterior, certifique-se de renomeá-lo para o docker-compose.yml .
Abra esses arquivos em um editor de texto e leia -os. Modifique onde necessário de acordo com os comentários da documentação para corresponder adequadamente à sua configuração. Existem comentários de 2 tipos: esses, começando com ## , são explicações e exemplos, que não devem ser descomentados; Aqueles, começando com # , são peças de configuração opcionais ou alternativas, que podem ser não obrigadas em determinadas circunstâncias, descritas nas explicações correspondentes. É melhor passar pelos arquivos na próxima ordem: .env , docker-compose.yml e Makefile .
Se o seu
PGSQL_PASSWORDouMARIADB_PASSWORDcontiver caracteres especiais (por@), certifique-se de encoder-os de URL.
Certifique -se de que a pasta raiz da sua biblioteca de mídia e todos os arquivos e subpastas sejam legíveis e pesquisáveis por outros usuários: execute o próximo comando (ou sequência correspondente de comandos do Makefile ):
make readable Se o comando (s) devolver Permission denied erro, execute -os sob o usuário, possuindo arquivos e pastas correspondentes. Como alternativa, execute -os adicionando sudo antes do comando: isso alternará o contexto de execução para o usuário root e solicitará a senha raiz. Você precisa ter permissão para executar sudo no sistema.
Se você não quiser dar as permissões necessárias ao grupo others para seus arquivos, alternativamente, você pode:
photoview de propriedade deste grupo; Em seguida, defina as permissões apropriadas para a seção group .photoview para este usuário; Em seguida, defina as permissões apropriadas para a seção user . Se você configurou outros montados com arquivos de mídia de outros locais do host (como host_photoview_media_family ou qualquer outra coisa), precisará executar os mesmos comandos, como no alvo readable Makefile , para cada pasta de raiz de mídia em seu host manualmente: copie cada comando para a pasta de trilha / shell e substitua o caminho absoluto para uma pasta de raiz de mídia adicional adicional, sem a pasta adicional adicional, sem a pasta Raiad / Execute os dois comandos para cada pasta raiz adicional.
Caso você não make instalação no seu sistema ou não deseja usá -lo para as atividades de gerenciamento do PhotoView, você pode usar os mesmos comandos do Makefile e executá -los diretamente no seu shell ou criar seus próprios scripts. Certifique -se de aplicar ou substituir as variáveis do seu .env primeiro neste caso. Makefile é fornecido apenas para sua conveniência e simplicidade, mas é opcional.
Inicie o servidor executando o seguinte comando (ou sequência correspondente de comandos do Makefile ):
make all Se o endpoint ou a porta não tiver sido alterada no arquivo docker-compose.yml , o PhotoView agora pode ser acessado em http: // localhost: 8000
Se tudo estiver configurado corretamente, você deve receber um assistente de configuração inicial ao acessar o site pela primeira vez.

Digite um novo nome de usuário e senha.
Para o caminho da foto, insira o caminho dentro do recipiente do Docker, onde suas fotos estão localizadas. Isso pode ser definido no arquivo docker-compose.yml em photoview -> volumes . O local padrão é /photos .
Um novo usuário administrador será criado, com acesso às fotos localizadas no caminho fornecido na configuração inicial.
As fotos terão que ser digitalizadas antes de aparecer, você pode iniciar uma varredura manualmente, navegando para Settings e clicando em Scan All
Sugerimos proteger a instância do PhotoView antes de expor-a fora da rede local: mesmo que ela forneça acesso somente leitura à sua galeria de mídia e tenha funcionalidade básica de autenticação de usuário, não é suficiente para proteger sua mídia privada de atores maliciosos na Internet.
As formas possíveis de garantir um serviço auto-hospedado podem ser (mas não se limitando a):
A configuração e configuração de todas essas proteções depende e requer muitas informações sobre sua rede local e serviços auto-hospedados. Com base nessas informações, o fluxo de configuração e a arquitetura de serviços resultantes podem diferir muito entre os casos. É por isso que, no escopo deste projeto, só podemos fornecer a você esta lista de alto nível de maneiras possíveis de proteção da web. Você precisará investigá -los, encontrar a melhor combinação e configuração para o seu caso e assumir a responsabilidade de configurar tudo da maneira correta e consistente. Não podemos fornecer suporte a configurações tão altamente seguras, pois muitas coisas podem funcionar de maneira diferente devido às limitações de segurança.
É possível executar o FFMPEG com um codec que supõe a aceleração do hardware, definindo PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION . O valor deve ser um de qsv , vaapi , nvenc .
Verificamos apenas a aceleração de hardware com qsv em um chip Intel. Para deixá -lo funcionar, ele deve mapear /dev/dri e definir um env PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv . Consulte [Docker-compose.example.yml] (./ Docker-Compose Exple/Docker-compose.example.yml).
Se você verificar outras acelerações de hardware funcionando bem, informe -nos.
? Primeiro, obrigado pelo seu interesse em contribuição! ?
Este projeto é resultado de um trabalho duro e é ótimo vê -lo interessado em contribuir. As contribuições não são apenas sobre código - você pode ajudar de várias maneiras!
Antes de começar, reserve um momento para ler nosso guia contribuinte. Ele inclui informações sobre nosso código de conduta, o processo para enviar solicitações de tração e muito mais.
Lembre -se de que toda contribuição conta. Vamos tornar este projeto melhor juntos! ?
O ambiente de desenvolvimento do Docker é fácil de configurar. Requer apenas o Docker e o Docker compor o plug -in localmente. Todas as dependências são instaladas em um contêiner, mas não no host.
Ele também tem algumas deficiências. No MacOS, o Docker está sendo executado em uma VM Linux. A notificação do FS não funciona bem neste caso. Você não pode usar reflex ou nodemon para relançar os servidores quando o código for alterado. O compilador também funciona muito devagar.
Recomendamos usar o ambiente de desenvolvimento do Docker. Se o ambiente do Docker não funcionar bem, como no MacOS, use o ambiente de desenvolvimento local.
Pode levar muito tempo para criar dependências ao iniciar os servidores pela primeira vez.
$ docker compose -f dev-compose.yaml build # Build images for development
$ docker compose -f dev-compose.yaml up # Launch API and UI serversO playground do GraphQL agora pode ser acessado no localhost: 4001. O site agora pode ser acessado no localhost: 1234. Ambos os servidores serão relançados após a alteração do código.
Por padrão, ele usa SQLite3 como banco de dados. Para executar servidores com outro banco de dados, atualize o Valor PHOTOVIEW_DATABASE_DRIVER no arquivo dev-compose.yaml e execute:
$ 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 databaseSe você não deseja depender da composição do Docker, mas apenas o Docker, poderá iniciar o servidor como abaixo.
Pode levar muito tempo para criar dependências ao iniciar os servidores pela primeira 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 serverO playground do GraphQL agora pode ser acessado no localhost: 4001.
Observação
O servidor é executado na rede de hosts como --network host sinalizador. É fácil se comunicar entre o servidor API e o servidor de interface do usuário. Se você não quiser fazer isso, verifique a rede Docker para criar uma nova rede para executar servidores.
Pode levar muito tempo para criar dependências ao iniciar os servidores pela primeira 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 serverO site agora pode ser acessado no localhost: 1234.
Observação
O servidor é executado na rede de hosts como --network host sinalizador. É fácil se comunicar entre o servidor API e o servidor de interface do usuário. Se você não quiser fazer isso, verifique a rede Docker para criar uma nova rede para executar servidores.
No Linux, recomendamos usar o Docker Compose ou Docker como um ambiente de desenvolvimento local.
Não podemos continuar verificar os comandos abaixo em cada ambiente. As pessoas podem precisar resolver dependências por conta própria.
golang > = 1,22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas , recomendado usando libatlas-base em Debian.liblapackreflex : Uma ferramenta de monitoramento de código -fonte, que reconstrói e reinicia automaticamente o servidor, executando do código no desenvolvimento.sqlite : O SQLITE DBMS, útil para interagir diretamente com o SQLite DB da PhotoView se você o usar em seu ambiente de desenvolvimento.node = 18Em Debian/Ubuntu, instale dependências:
$ 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 toolsNo macOS, instale dependências:
$ 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 a orientação do gerenciador de pacotes se você não usar apt ou homebrew .
Para node , recomendo usar o NVM. Siga a instalação e a atualização para instalar nvm localmente, então:
$ nvm install 18
$ nvm use 18 Você pode instalar node com outro gerenciador de pacotes, se quiser.
/api/example.env para .envPHOTOVIEW_SQLITE_PATH se você não quiser colocar o arquivo SQLITE em /apiPHOTOVIEW_DATABASE_DRIVER com seu driverSe o seu
PGSQL_PASSWORDouMARIADB_PASSWORDcontiver caracteres especiais (por@), certifique-se de encoder-os de URL.
/ui/example.env para .envEm seguida, execute os seguintes 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 .Se você deseja recompilar o servidor automaticamente quando o código é alterado:
# Start API server
$ cd ./api
$ reflex -g ' *.go ' -s -- go run .O playground do GraphQL agora pode ser acessado no localhost: 4001.
Em uma nova janela do terminal, execute os seguintes comandos:
cd ./ui
npm install
npm startSe você deseja recompilar o servidor automaticamente quando o código é alterado:
$ cd ./ui
$ npm run monO site agora pode ser acessado no localhost: 1234.
@ericakz | @Robin-Moser | @Revorge | @deexno | @Fkrauss | @jupblb |