Files
Infra/Installation-Production.md
T
2026-06-05 05:51:19 +02:00

5.3 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 :

  1. Se connecter à https://auth.goutailler-olivier.com/admin
  2. Créer le realm bonsai
  3. Créer le client bonsai-webapp (type OpenID Connect, flux Authorization Code)
  4. 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 :

  1. Accéder à https://git.goutailler-olivier.com et terminer l'installation via l'interface web
  2. Créer l'organisation bonsai
  3. Récupérer un token d'enregistrement pour le runner dans Administration → Actions → Runners
  4. Mettre à jour GITEA_RUNNER_REGISTRATION_TOKEN dans gitea-compose.yml, puis redémarrer le service act_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.

Documentation API (Swagger UI) :

Environnement URL
Production https://bonsai.goutailler-olivier.com/api/swagger-ui.html
Développement local http://localhost:8080/swagger-ui.html

La définition OpenAPI brute est disponible sur /v3/api-docs.


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. Luz

cd luz/
docker compose up -d

L'image git.goutailler-olivier.com/gato/luz:latest est construite par la CI Gitea lors d'une release. Aucune variable d'environnement spécifique n'est requise.

Secrets Gitea à configurer dans le dépôt Luz :

Secret Description
RELEASE_TOKEN Token Gitea avec droits write:packages et write:repository
WATCHTOWER_TOKEN Token HTTP de l'API Watchtower pour déclencher le redéploiement

9. 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

10. 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. Luz
8. Nextcloud
9. 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"