Configure Immich to work with existing Traefik instance: - Add Traefik labels to immich-server for automatic routing - Add external traefik network connection - Disable direct port exposure (use Traefik instead) - Add DOMAIN variable to .env.example - Improve .gitignore for generated files and volumes - Add comprehensive README with deployment instructions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
245 lines
4.8 KiB
Markdown
245 lines
4.8 KiB
Markdown
# Immich - Serveur de photos auto-hébergé
|
|
|
|
Déploiement Docker d'Immich configuré pour fonctionner avec Traefik existant.
|
|
|
|
## Prérequis
|
|
|
|
- Docker et Docker Compose
|
|
- Traefik déjà installé et configuré sur l'host
|
|
- Un réseau Docker nommé `traefik` pour Traefik
|
|
- Un nom de domaine pointant vers votre serveur
|
|
- Au moins 4GB de RAM
|
|
- Espace disque suffisant pour vos photos
|
|
|
|
## Installation
|
|
|
|
### 1. Cloner ce dépôt
|
|
|
|
```bash
|
|
git clone <url-du-repo>
|
|
cd agence66-immich
|
|
```
|
|
|
|
### 2. Vérifier le réseau Traefik
|
|
|
|
Assurez-vous que votre réseau Traefik existe :
|
|
|
|
```bash
|
|
docker network ls | grep traefik
|
|
```
|
|
|
|
Si le réseau n'existe pas, créez-le :
|
|
|
|
```bash
|
|
docker network create traefik
|
|
```
|
|
|
|
### 3. Configuration
|
|
|
|
Créer le fichier `.env` :
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
Modifier le fichier `.env` :
|
|
|
|
```bash
|
|
# Votre domaine
|
|
DOMAIN=photos.votredomaine.com
|
|
|
|
# Base de données - CHANGEZ CE MOT DE PASSE !
|
|
DB_PASSWORD=VotreMotDePasseSecurise123!
|
|
```
|
|
|
|
### 4. Créer le répertoire de stockage
|
|
|
|
```bash
|
|
mkdir -p library
|
|
```
|
|
|
|
### 5. Lancer les services
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
### 6. Vérifier le déploiement
|
|
|
|
```bash
|
|
docker-compose logs -f
|
|
```
|
|
|
|
## Accès
|
|
|
|
L'application sera accessible sur `https://photos.votredomaine.com`
|
|
|
|
Le routage et SSL sont gérés par votre Traefik existant.
|
|
|
|
**Important** : Au premier lancement, créez un compte administrateur.
|
|
|
|
## Configuration Traefik
|
|
|
|
### Labels configurés
|
|
|
|
Le service `immich-server` utilise ces labels Traefik :
|
|
|
|
- `traefik.enable=true` : Active Traefik pour ce conteneur
|
|
- `traefik.http.routers.immich.rule=Host(\`${DOMAIN}\`)` : Règle de routage par domaine
|
|
- `traefik.http.routers.immich.entrypoints=websecure` : Utilise l'entrypoint HTTPS
|
|
- `traefik.http.routers.immich.tls=true` : Active TLS
|
|
- `traefik.http.routers.immich.tls.certresolver=letsencrypt` : Utilise Let's Encrypt
|
|
- `traefik.http.services.immich.loadbalancer.server.port=3001` : Port interne du service
|
|
|
|
### Personnalisation
|
|
|
|
Si votre Traefik utilise des noms différents, modifiez dans le docker-compose.yml :
|
|
|
|
- `websecure` : nom de votre entrypoint HTTPS
|
|
- `letsencrypt` : nom de votre certresolver
|
|
- `traefik` : nom de votre réseau Docker
|
|
|
|
## Architecture
|
|
|
|
- **Immich Server** : Application principale (exposée via Traefik)
|
|
- **Immich Microservices** : Services de traitement en arrière-plan
|
|
- **Immich ML** : Machine Learning pour reconnaissance faciale et objets
|
|
- **PostgreSQL** : Base de données avec extension pgvecto-rs
|
|
- **Redis** : Cache et gestion des tâches
|
|
|
|
### Réseaux
|
|
|
|
- `traefik` (externe) : Réseau partagé avec Traefik pour le reverse proxy
|
|
- `immich-internal` : Réseau interne pour la communication entre services
|
|
|
|
## Gestion
|
|
|
|
### Arrêter les services
|
|
|
|
```bash
|
|
docker-compose down
|
|
```
|
|
|
|
### Voir les logs
|
|
|
|
```bash
|
|
# Tous les services
|
|
docker-compose logs -f
|
|
|
|
# Un service spécifique
|
|
docker-compose logs -f immich-server
|
|
```
|
|
|
|
### Mettre à jour Immich
|
|
|
|
```bash
|
|
docker-compose pull
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Redémarrer un service
|
|
|
|
```bash
|
|
docker-compose restart immich-server
|
|
```
|
|
|
|
## Sauvegardes
|
|
|
|
### Base de données
|
|
|
|
```bash
|
|
docker exec -t immich_postgres pg_dumpall -c -U postgres > backup_$(date +%Y%m%d_%H%M%S).sql
|
|
```
|
|
|
|
### Restaurer une sauvegarde
|
|
|
|
```bash
|
|
cat backup_XXXXXXXX_XXXXXX.sql | docker exec -i immich_postgres psql -U postgres
|
|
```
|
|
|
|
### Sauvegarder les photos
|
|
|
|
```bash
|
|
# Sauvegarde locale
|
|
tar -czf immich-library-$(date +%Y%m%d).tar.gz library/
|
|
|
|
# Ou avec rsync vers un serveur distant
|
|
rsync -avz ./library/ user@backup-server:/path/to/backup/
|
|
```
|
|
|
|
### Script de sauvegarde automatique
|
|
|
|
Créez un cron job pour sauvegardes quotidiennes :
|
|
|
|
```bash
|
|
#!/bin/bash
|
|
# /opt/scripts/backup-immich.sh
|
|
|
|
BACKUP_DIR="/var/backups/immich"
|
|
DATE=$(date +%Y%m%d_%H%M%S)
|
|
|
|
mkdir -p $BACKUP_DIR
|
|
|
|
# Sauvegarde DB
|
|
docker exec -t immich_postgres pg_dumpall -c -U postgres > $BACKUP_DIR/db_$DATE.sql
|
|
|
|
# Garder seulement les 7 dernières sauvegardes
|
|
find $BACKUP_DIR -name "db_*.sql" -mtime +7 -delete
|
|
```
|
|
|
|
Ajoutez au crontab :
|
|
|
|
```bash
|
|
crontab -e
|
|
# Ajouter : 0 2 * * * /opt/scripts/backup-immich.sh
|
|
```
|
|
|
|
## Dépannage
|
|
|
|
### Immich n'est pas accessible via Traefik
|
|
|
|
1. Vérifiez que le conteneur est sur le bon réseau :
|
|
```bash
|
|
docker inspect immich_server | grep -A 10 Networks
|
|
```
|
|
|
|
2. Vérifiez les logs Traefik pour voir s'il détecte le service
|
|
|
|
3. Vérifiez que le domaine résout bien vers votre serveur :
|
|
```bash
|
|
nslookup photos.votredomaine.com
|
|
```
|
|
|
|
### Erreur "network traefik not found"
|
|
|
|
Créez le réseau :
|
|
```bash
|
|
docker network create traefik
|
|
```
|
|
|
|
### Erreur de connexion à la base de données
|
|
|
|
Vérifiez que tous les services sont démarrés :
|
|
```bash
|
|
docker-compose ps
|
|
```
|
|
|
|
Consultez les logs :
|
|
```bash
|
|
docker-compose logs database
|
|
```
|
|
|
|
### Performance lente
|
|
|
|
Vérifiez les ressources :
|
|
```bash
|
|
docker stats
|
|
```
|
|
|
|
Immich nécessite au minimum 4GB de RAM.
|
|
|
|
## Support
|
|
|
|
- Documentation Immich : https://immich.app/docs/
|
|
- Issues : Créez une issue sur le dépôt Git
|