Comparta sus fotos y álbumes de Immich de forma segura sin exponer su instancia de Immich al público.
La configuración lleva menos de un minuto y nunca necesitará volver a tocarla, ya que todo lo que comparte permanece administrado dentro de Immich.
Acerca de este proyecto
Instalar con Docker
como usarlo
como funciona
Configuración adicional
Solución de problemas
Solicitudes de funciones
Immich es un software maravilloso, pero como contiene todas tus fotos privadas, es mejor mantenerlo completamente bloqueado. Esto presenta un problema cuando quieres compartir una foto o una galería con alguien.
Immich Public Proxy proporciona una barrera de seguridad entre el público e Immich, y solo permite solicitudes que usted haya compartido públicamente.
No tiene estado y no sabe nada sobre su instancia de Immich. No requiere una clave API, lo que reduce aún más la superficie de ataque. Las únicas cosas a las que el proxy puede acceder son las fotos que usted haya puesto a disposición del público en Immich.
Vea una galería de demostración en vivo sacada directamente de mi propia instancia de Immich.
Admite compartir fotos y vídeos.
Admite recursos compartidos protegidos con contraseña.
Si comparte una sola imagen, de forma predeterminada el enlace abrirá directamente el archivo de imagen para que pueda incrustarlo en cualquier lugar donde colocaría una imagen normal. (Esto es configurable).
Todo el uso se realiza a través de Immich; no necesitará tocar esta aplicación después de la configuración inicial.
/share/
al público? Para ver un álbum compartido en Immich, necesita acceso a la ruta /api/
. Si compartes una galería con el público, debes hacer pública esa ruta. Cualquier vulnerabilidad existente o futura tiene el potencial de comprometer su instancia de Immich.
Para mí, la configuración ideal es tener a Immich protegido de forma privada detrás de mTLS o VPN, y solo permitir el acceso público a Immich Public Proxy. Aquí hay un ejemplo de configuración para proteger a Immich detrás de mTLS usando Caddy.
Descargue el archivo docker-compose.yml.
Actualice el valor de IMMICH_URL
en su archivo docker-compose para que apunte a su URL local para Immich. Esta no debería ser una URL pública.
Inicie el contenedor acoplable. Puede probar que funciona visitando https://your-proxy-url.com/healthcheck
. Verifique la salida de la consola del contenedor para ver si hay mensajes de error.
docker-componer -d
Configure el "Dominio externo" en la configuración de su servidor Immich para que sea cualquier dominio que utilice para servir públicamente el proxy público de Immich:
Ahora, cada vez que compartas una imagen o galería a través de Immich, se creará automáticamente la ruta pública correcta para ti.
IMPORTANTE : si está utilizando Cloudflare, asegúrese de configurar su ruta /share/video/*
en Bypass Cache; de lo contrario, puede tener problemas de reproducción de video. Consulte Solución de problemas para obtener más información.
Debido a que todas las rutas de IPP están en /share/...
, puede ejecutar Immich Public Proxy e Immich en el mismo dominio.
Consulte las instrucciones aquí: Ejecución en un solo dominio.
Aparte de la configuración inicial anterior, todo lo demás se gestiona a través de Immich.
Compartes tus fotos/vídeos normalmente a través de Immich. Debido a que ha configurado el dominio externo en la configuración de Immich como la URL de su aplicación proxy, los enlaces que genera Immich tendrán automáticamente la URL correcta:
Cuando el proxy reciba una solicitud, aparecerá un enlace como este:
https://your-proxy-url.com/share/ffSw63qnIYMtpmg0RNvOui0Dpio7BbxsObjvH8YZaobIjIAzl5n7zTX5d6EDHdOYEvo
La parte después de /share/
es la identificación pública del enlace compartido de Immich (llamada key
en los documentos).
Immich Public Proxy toma esa clave y realiza una llamada API a su instancia de Immich a través de su red local, para preguntar qué fotos o videos se comparten en esa URL compartida.
Si se trata de una URL compartida válida, el proxy recupera solo esos activos a través de la API local y los devuelve al visitante como una imagen o galería individual.
Si el enlace compartido ha caducado o alguno de los activos se ha colocado en la papelera de Immich, no los devolverá.
Todos los datos entrantes se validan y desinfectan, y cualquier cosa inesperada simplemente se descarta con un 404.
Hay algunas opciones de configuración adicionales que puedes cambiar, por ejemplo, la forma en que está configurada la galería.
Haga una copia de config.json en la misma carpeta que su docker-compose.yml
.
Pase la configuración a su contenedor acoplable agregando un volumen como este:
volúmenes: - ./config.json:/app/config.json:ro
Reinicie su contenedor y su configuración personalizada debería estar activa.
Opción | Descripción |
---|---|
responseHeaders | Cambie los encabezados enviados con sus respuestas web. De forma predeterminada, se agrega cache-control y CORS. |
downloadOriginalPhoto | Configúrelo en false si solo desea que las personas puedan descargar la foto con calidad de "vista previa", en lugar de su foto original. |
showGalleryTitle | Mostrar un título en la página de la galería. |
allowDownloadAll | Permita que los visitantes descarguen todos los archivos como zip. |
La galería se crea usando lightGallery. Puede encontrar todas las configuraciones de lightGallery aquí: https://www.lightgalleryjs.com/docs/settings/
Por ejemplo, para desactivar el botón de descarga de imágenes, editaría la sección lightGallery
y cambiaría download
a false
:
{ "lightGallery": { "controles": verdadero, "descargar": falso, "mobileSettings": { "controles": falso, "showCloseIcon": verdadero, "descargar": falso } } }
Si estás usando Cloudflare y tienes problemas con los videos que no se reproducen bien, asegúrate de que tus rutas /share/video/
estén configuradas para omitir el caché. Yo mismo me encontré con este problema y encontré algunos consejos útiles aquí.
Puede agregar solicitudes de funciones aquí; sin embargo, mi objetivo con este proyecto es mantenerlo lo más sencillo posible.
Debido a la sensibilidad de los datos contenidos en Immich, quiero que cualquier persona con un poco de conocimiento en codificación pueda leer este código base y comprender completamente todo lo que hace.
Las cosas que no se considerarán para este proyecto son:
Todo lo que modifique de cualquier forma a Immich o sus archivos. Si requiere una clave API o accesos privilegiados, no se considerará una característica nueva.
Subir fotos (ver arriba).