5
Installation Production
Gato edited this page 2026-06-06 23:07:24 +02:00

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

8. Olhar

cd olhar/
docker compose up -d

L'image git.goutailler-olivier.com/gato/olhar: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 Olhar :

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