6.4 KiB
title: Immich Public Proxy created: 2026-06-06 updated: 2026-06-06 type: app tags: [catalogue, reverse-proxy, immich, partage-public, photos, go] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/alangrainger/immich-public-proxy]
🖼️ Immich Public Proxy
Reverse proxy spécialisé pour partager publiquement des photos Immich sans exposer l'instance complète. Réputation : le moyen le plus sûr d'utiliser Immich comme portfolio photo public.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | github.com/alangrainger/immich-public-proxy |
| GitHub | alangrainger/immich-public-proxy |
| License | MIT |
| Langage | Go |
| Étoiles GitHub | 1.9k ⭐ |
| Dernière MAJ | 2026-04 |
| Catégorie | cat-reverse-proxy, Photo, Immich |
📝 Description
Immich Public Proxy est un reverse proxy léger en Go qui se place devant une instance app-immich et n'autorise le passage que des requêtes correspondant à des albums que vous avez explicitement marqués comme publics. Toutes les autres requêtes sont rejetées en 404/403.
Le problème résolu est subtil mais important : Immich dispose d'un système de partage natif (liens publics pour les albums), mais pour rendre ces liens accessibles depuis Internet il faut exposer Immich derrière un reverse proxy. Or, exposer Immich tel quel, même avec une bonne configuration, révèle des endpoints d'API (login, utilisateurs, bibliothèque complète) que des attaquants peuvent sonder. Immich Public Proxy agit comme une whitelist : seules les URLs des albums partagés passent, tout le reste est bloqué.
Fonctionnalités notables :
- Whitelist par album ID ou par user
- Authentification optionnelle par shared link Immich
- Proxy du flux RSS pour les galeries
- Cache des thumbnails pour réduire la charge sur Immich
- Statistiques d'accès (consultations par album)
- Image d'exemple : aucun endpoint
/api/*n'est proxifié
Public cible : utilisateurs Immich qui veulent partager publiquement un portfolio photo (photographes, familles, communautés) sans risquer de compromettre l'instance privée.
🚀 Installation
Option 1 : Docker Compose (standard)
# docker-compose.yml
services:
immich-public-proxy:
image: alangrainger/immich-public-proxy:latest
container_name: immich-public-proxy
restart: unless-stopped
ports:
- "8080:8080"
environment:
- IMMICH_URL=http://immich-server:2283
- ALLOWED_ALBUMS=album-uuid-1,album-uuid-2
- PUBLIC_URL=https://photos.example.com
- SHOW_DONATE_LINK=false
networks:
- proxy
networks:
proxy:
external: true
⚠️
ALLOWED_ALBUMSpeut être vide pour autoriser tous les albums marqués publics côté Immich, ou restrictif pour une whitelist manuelle.
Option 2 : Variante Traefik
# Labels Traefik sur le proxy
services:
immich-public-proxy:
labels:
- "traefik.enable=true"
- "traefik.http.routers.immich-public.rule=Host(`photos.example.com`)"
- "traefik.http.routers.immich-public.entrypoints=websecure"
- "traefik.http.routers.immich-public.tls.certresolver=cloudflare"
- "traefik.http.services.immich-public.loadbalancer.server.port=8080"
⚠️ Important : dans une architecture à 2 niveaux, Traefik expose
photos.example.compubliquement, et Immich Public Proxy filtre en aval. Ne pas exposer Immich directement.
⚙️ Configuration Initiale
- Créer un album dans Immich et le marquer Public (partage de lien)
- Récupérer l'UUID de l'album (URL de partage)
- Configurer
IMMICH_URLvers l'instance Immich (interne, pas publique) - Optionnel : restreindre avec
ALLOWED_ALBUMS=uuid1,uuid2 - Lancer :
docker compose up -d - Tester :
http://localhost:8080doit afficher la liste des albums publics
# Vérifier que les endpoints sensibles sont bloqués
curl -I http://localhost:8080/api/server/ping
# → attendu : 404 ou 403, pas 200
# Vérifier qu'un album public est accessible
curl -I http://localhost:8080/albums/UUID-ICI
# → attendu : 200
🔀 Alternatives
Open Source
- Partage natif Immich : fonctionnel, mais nécessite d'exposer Immich directement (risqué)
- app-caddy avec restriction d'URL : possible, mais à configurer à la main
- Cloudflare Access devant Immich : Zero Trust, mais plus complexe
- Lychee / Piwigo : alternatives à Immich orientées partage public
Comparaison Immich Public Proxy vs partage natif
| Critère | Immich Public Proxy | Partage natif Immich exposé |
|---|---|---|
Endpoints /api/* exposés |
❌ Bloqués | ✅ Tous exposés |
| Whitelist par album | ✅ | ❌ (auth sur chaque lien) |
| Authentification | ❌ (URL = secret) | ✅ Token dans URL |
| Cache thumbnails | ✅ | ❌ |
| Statistiques | ✅ | ❌ |
| Simplicité de setup | ⚠️ Conteneur de plus | ✅ |
| Sécurité | ✅ | ⚠️ Surface large |
Propriétaires (ce que ça remplace)
- Adobe Portfolio + Lightroom Cloud
- Google Photos public albums (limités)
- SmugMug / Pixieset pour photographes pros
🔒 Sécurité
- ✅ Aucune route API d'Immich n'est proxifiée (vérifié dans le code)
- ✅ URLs d'albums = secret : la sécurité repose sur l'aléatoire de l'UUID
- ✅ Pas de stockage : proxy stateless, reboot = safe
- ✅ Image minimaliste (Go, ~10 MB)
- ⚠️ Pas de rate limiting natif : prévoir un WAF ou un rate-limiter en amont
- ⚠️ URLs shareables immuables : changer l'UUID = régénérer les liens
- ⚠️ Si Immich est compromis derrière : le proxy ne peut rien faire (mais limite la surface)
📚 Ressources
🔗 Pages Liées
- cat-reverse-proxy — Catégorie Reverse Proxy
- app-immich — Application sous-jacente
- app-traefik — Reverse proxy en amont
- app-caddy — Alternative
- comparatif-reverse-proxy — Comparaison détaillée
- securisation-home-lab — Sécurité