--- 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](https://github.com/alangrainger/immich-public-proxy) | | **GitHub** | [alangrainger/immich-public-proxy](https://github.com/alangrainger/immich-public-proxy) | | **License** | MIT | | **Langage** | Go | | **Étoiles GitHub** | 1.9k ⭐ | | **DerniĂšre MAJ** | 2026-04 | | **CatĂ©gorie** | [[cat-reverse-proxy\|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) ```yaml # 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_ALBUMS` peut ĂȘtre vide pour autoriser tous les albums marquĂ©s publics cĂŽtĂ© Immich, ou restrictif pour une whitelist manuelle. ### Option 2 : Variante Traefik ```yaml # 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.com` publiquement, et **Immich Public Proxy** filtre en aval. **Ne pas exposer Immich directement**. ## ⚙ Configuration Initiale 1. **CrĂ©er un album** dans Immich et le marquer **Public** (partage de lien) 2. **RĂ©cupĂ©rer l'UUID** de l'album (URL de partage) 3. **Configurer** `IMMICH_URL` vers l'instance Immich (interne, pas publique) 4. **Optionnel** : restreindre avec `ALLOWED_ALBUMS=uuid1,uuid2` 5. **Lancer** : `docker compose up -d` 6. **Tester** : `http://localhost:8080` doit afficher la liste des albums publics ```bash # 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 - [README GitHub](https://github.com/alangrainger/immich-public-proxy) - [Documentation Immich - Partage public](https://immich.app/docs/features/sharing/) - [Wiki selfh.st](https://selfh.st/apps/?tag=Reverse+Proxy) ## 🔗 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Ă©