Compartilhe suas fotos e álbuns do Immich de maneira segura, sem expor sua instância do Immich ao público.
A configuração leva menos de um minuto e você nunca mais precisará tocá-la, pois todo o seu compartilhamento permanece gerenciado no Immich.
Sobre este projeto
Instalar com Docker
Como usar
Como funciona
Configuração adicional
Solução de problemas
Solicitações de recursos
Immich é um software maravilhoso, mas como ele contém todas as suas fotos privadas, é melhor mantê-lo totalmente bloqueado. Isso representa um problema quando você deseja compartilhar uma foto ou galeria com alguém.
O Proxy Público Immich fornece uma barreira de segurança entre o público e o Immich e só permite solicitações que você compartilhou publicamente.
É apátrida e não sabe nada sobre sua instância do Immich. Não requer uma chave de API, o que reduz ainda mais a superfície de ataque. As únicas coisas que o proxy pode acessar são as fotos que você disponibilizou publicamente no Immich.
Veja uma galeria de demonstração ao vivo saindo diretamente da minha própria instância do Immich.
Suporta compartilhamento de fotos e vídeos.
Suporta compartilhamentos protegidos por senha.
Se estiver compartilhando uma única imagem, por padrão o link abrirá diretamente o arquivo de imagem para que você possa incorporá-lo em qualquer lugar onde faria uma imagem normal. (Isso é configurável.)
Todo o uso acontece através do Immich - você não precisará mexer neste aplicativo após a configuração inicial.
/share/
ao público? Para visualizar um álbum compartilhado no Immich, você precisa acessar o caminho /api/
. Se estiver compartilhando uma galeria com o público, você precisará tornar esse caminho público. Qualquer vulnerabilidade existente ou futura tem o potencial de comprometer sua instância do Immich.
Para mim, a configuração ideal é ter o Immich protegido de forma privada por mTLS ou VPN e permitir apenas o acesso público ao Immich Public Proxy. Aqui está um exemplo de configuração para proteger Immich atrás de mTLS usando Caddy.
Baixe o arquivo docker-compose.yml.
Atualize o valor de IMMICH_URL
em seu arquivo docker-compose para apontar para sua URL local de Immich. Este não deve ser um URL público.
Inicie o contêiner do docker. Você pode testar se está funcionando visitando https://your-proxy-url.com/healthcheck
. Verifique a saída do console do contêiner em busca de mensagens de erro.
docker-compose up -d
Defina o "Domínio externo" nas configurações do servidor Immich para ser qualquer domínio que você usa para servir publicamente o Immich Public Proxy:
Agora, sempre que você compartilhar uma imagem ou galeria através do Immich, ele criará automaticamente o caminho público correto para você.
IMPORTANTE : Se você estiver usando Cloudflare, certifique-se de definir seu caminho /share/video/*
como Bypass Cache, caso contrário você poderá ter problemas de reprodução de vídeo. Consulte Solução de problemas para obter mais informações.
Como todos os caminhos IPP estão em /share/...
, você pode executar o Immich Public Proxy e o Immich no mesmo domínio.
Veja as instruções aqui: Executando em um único domínio.
Além da configuração inicial acima, todo o resto é gerenciado pelo Immich.
Você compartilha suas fotos/vídeos normalmente através do Immich. Como você definiu o domínio externo nas configurações do Immich como o URL do seu aplicativo proxy, os links gerados pelo Immich terão automaticamente o URL correto:
Quando o proxy receber uma solicitação, ela virá como um link como este:
https://your-proxy-url.com/share/ffSw63qnIYMtpmg0RNvOui0Dpio7BbxsObjvH8YZaobIjIAzl5n7zTX5d6EDHdOYEvo
A parte após /share/
é o ID público do link compartilhado do Immich (chamado de key
nos documentos).
O Immich Public Proxy pega essa chave e faz uma chamada de API para sua instância do Immich em sua rede local, para perguntar quais fotos ou vídeos são compartilhados naquele URL de compartilhamento.
Se for um URL de compartilhamento válido, o proxy busca apenas esses ativos por meio da API local e os retorna ao visitante como uma imagem ou galeria individual.
Se o link compartilhado expirou ou algum dos ativos foi colocado na lixeira do Immich, ele não os retornará.
Todos os dados recebidos são validados e higienizados, e qualquer coisa inesperada é simplesmente descartada com um 404.
Existem algumas opções de configuração adicionais que você pode alterar, por exemplo, a forma como a galeria é configurada.
Faça uma cópia de config.json na mesma pasta que seu docker-compose.yml
.
Passe a configuração para o contêiner do Docker adicionando um volume como este:
volumes: - ./config.json:/app/config.json:ro
Reinicie seu contêiner e sua configuração personalizada deverá estar ativa.
Opção | Descrição |
---|---|
responseHeaders | Altere os cabeçalhos enviados com suas respostas da web. Por padrão, há cache-control e CORS adicionados. |
downloadOriginalPhoto | Defina como false se desejar que as pessoas possam baixar apenas a foto com qualidade de 'visualização', em vez da foto original. |
showGalleryTitle | Mostre um título na página da galeria. |
allowDownloadAll | Permita que os visitantes baixem todos os arquivos como um zip. |
A galeria é criada usando lightGallery. Você pode encontrar todas as configurações do lightGallery aqui: https://www.lightgalleryjs.com/docs/settings/
Por exemplo, para desativar o botão de download de imagens, você editaria a seção lightGallery
e alteraria download
para false
:
{ "lightGallery": { "controles": verdadeiro, "download": falso, "mobileSettings": { "controles": falso, "showCloseIcon": verdadeiro, "download": falso } } }
Se você estiver usando Cloudflare e tiver problemas com a reprodução de vídeos, certifique-se de que seus caminhos /share/video/
estejam configurados para ignorar o cache. Eu mesmo me deparei com esse problema e encontrei alguns conselhos úteis aqui.
Você pode adicionar solicitações de recursos aqui, mas meu objetivo com este projeto é mantê-lo o mais enxuto possível.
Devido à confidencialidade dos dados contidos no Immich, quero que qualquer pessoa com um pouco de conhecimento de codificação seja capaz de ler esta base de código e entender completamente tudo o que ela está fazendo.
Coisas que não devem ser consideradas para este projeto são:
Qualquer coisa que modifique o Immich ou seus arquivos de alguma forma. Caso exija uma chave API ou acessos privilegiados, não será considerado um novo recurso.
Carregando fotos (veja acima).