# 5.1 - Reverse proxy Caddy

Immich doit être publié à la racine d'un domaine ou sous-domaine. Une publication sous `/immich` n'est pas prise en charge.

## Exemple Caddy

Pour ton environnement :

```caddyfile
immich.dreamsaphir.net {
    reverse_proxy http://ADRESSE_TRUENAS:30041
}
```

Après modification :

```bash
caddy validate --config /etc/caddy/Caddyfile
sudo systemctl reload caddy
sudo systemctl status caddy --no-pager
```

Si Caddy fonctionne en conteneur, l'adresse `127.0.0.1` désigne le conteneur Caddy lui-même. Utiliser une adresse ou un réseau Docker permettant d'atteindre TrueNAS.

## En-têtes attendus

Le proxy doit transmettre :

```text
Host
X-Real-IP
X-Forwarded-For
X-Forwarded-Proto
```

Caddy gère normalement les en-têtes de proxy requis. Une configuration personnalisée ne doit pas les supprimer.

## Gros fichiers et délais

Les vidéos volumineuses exigent des délais suffisants. Tester un vrai upload depuis l'extérieur, pas seulement l'ouverture de la page de connexion.

## Contrôles

```bash
getent hosts immich.dreamsaphir.net
curl -I https://immich.dreamsaphir.net
curl -I http://ADRESSE_TRUENAS:30041
journalctl -u caddy -n 100 --no-pager
```

Tester également :

```text
https://immich.dreamsaphir.net/.well-known/immich
```

Ce point de terminaison doit atteindre Immich, notamment pour éviter des problèmes avec l'application mobile.

## Certificat interne

Si Caddy et Immich communiquent sur le réseau local en HTTP, le chiffrement public est terminé par Caddy. Restreindre le port 30041 au réseau interne et ne pas l'exposer directement sur Internet.

## Après une migration

1. tester la nouvelle instance par IP locale ;
2. conserver l'ancienne instance arrêtée ou en lecture seule ;
3. modifier la cible Caddy ;
4. recharger Caddy ;
5. vérifier Web, mobile, OAuth et uploads ;
6. conserver un moyen de retour rapide vers l'ancienne cible.

Référence : `https://docs.immich.app/administration/reverse-proxy/`