4.5 KiB
Installation Production
Prérequis
- Serveur Linux avec Docker 24+ et Docker Compose V2
- Domaine DNS pointant vers le serveur (
goutailler-olivier.com) - Ports 80, 443 et 2222 ouverts en entrée
1. Réseau Docker partagé
Tous les services communiquent via un réseau externe proxy. À créer une seule fois :
docker network create proxy
2. Traefik
Traefik est le point d'entrée unique : il gère le TLS (Let's Encrypt) et route les requêtes vers chaque service.
cd traefik/
docker compose up -d
Le dashboard est exposé sur https://traefik.goutailler-olivier.com (accès restreint par défaut).
3. Keycloak
Keycloak gère l'authentification SSO pour toute l'infrastructure.
cd keycloak/
cp .env.example .env
# Éditer .env avec des mots de passe sécurisés
docker compose up -d
Variables à définir dans .env :
| Variable | Description |
|---|---|
POSTGRES_PASSWORD |
Mot de passe de la base PostgreSQL |
KEYCLOAK_ADMIN |
Login administrateur (défaut : admin) |
KEYCLOAK_ADMIN_PASSWORD |
Mot de passe administrateur |
Configuration post-démarrage :
- Se connecter à
https://auth.goutailler-olivier.com/admin - Créer le realm
bonsai - Créer le client
bonsai-webapp(type OpenID Connect, flux Authorization Code) - Configurer les Valid redirect URIs :
https://bonsai.goutailler-olivier.com/*
4. Gitea
Gitea est la forge Git avec le runner CI/CD intégré.
cd gitea/
docker compose -f gitea-compose.yml up -d
Configuration post-démarrage :
- Accéder à
https://git.goutailler-olivier.comet terminer l'installation via l'interface web - Créer l'organisation
bonsai - Récupérer un token d'enregistrement pour le runner dans Administration → Actions → Runners
- Mettre à jour
GITEA_RUNNER_REGISTRATION_TOKENdansgitea-compose.yml, puis redémarrer le serviceact_runner
Le runner est configuré avec le label ubuntu-latest mappé sur ubuntu:22.04.
5. Bonsai API
L'image est construite par la CI Gitea et poussée sur le registre git.goutailler-olivier.com/bonsai/bonsai-api:latest.
Le registre Gitea requiert une authentification. Se connecter une première fois avec son compte Gitea :
docker login git.goutailler-olivier.com -u <utilisateur>
Note : par défaut, Docker stocke le mot de passe en clair dans
~/.docker/config.json. Pour éviter cela, configurer un credential helper.
cd bonsai-api/
# Créer un fichier .env avec le mot de passe PostgreSQL
echo "POSTGRES_PASSWORD=<mot_de_passe_sécurisé>" > .env
docker compose up -d
Variables d'environnement :
| Variable | Description |
|---|---|
POSTGRES_PASSWORD |
Mot de passe PostgreSQL (injecté via .env) |
DATASOURCE_URL |
jdbc:postgresql://db:5432/bonsai (défaut réseau interne) |
KEYCLOAK_JWKS_URI |
https://auth.goutailler-olivier.com/realms/bonsai/protocol/openid-connect/certs |
CORS_ALLOWED_ORIGIN_PROD |
https://bonsai.goutailler-olivier.com |
Flyway applique automatiquement les migrations SQL au démarrage.
6. Bonsai Webapp
cd bonsai-webapp/
docker compose up -d
L'image git.goutailler-olivier.com/bonsai/bonsai-webapp:latest est également construite par la CI. Aucune variable d'environnement spécifique n'est requise.
7. Nextcloud
cd nextcloud/
# Adapter les mots de passe dans docker-compose.yml avant le premier démarrage
docker compose up -d
Variables à personnaliser dans docker-compose.yml avant le premier lancement :
| Variable | Description |
|---|---|
POSTGRES_PASSWORD |
Mot de passe PostgreSQL |
NEXTCLOUD_ADMIN_USER |
Compte administrateur Nextcloud |
NEXTCLOUD_ADMIN_PASSWORD |
Mot de passe administrateur |
8. Trilium
cd trilium/
docker compose up -d
Les données sont persistées dans /home/gato/Applications/Trilium/data sur l'hôte. S'assurer que ce chemin existe avant le démarrage :
mkdir -p /home/gato/Applications/Trilium/data
Ordre de démarrage recommandé
1. Réseau proxy (une seule fois)
2. Traefik
3. Keycloak
4. Gitea
5. Bonsai API
6. Bonsai Webapp
7. Nextcloud
8. Trilium
Vérifications
# État de tous les conteneurs
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# Logs d'un service
docker logs <nom_conteneur> --tail 50 -f
# Certificats TLS Traefik
docker logs traefik 2>&1 | grep -i "certificate\|acme"