# 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 : ```bash 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. ```bash 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. ```bash 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é. ```bash 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`. ```bash cd bonsai-api/ # Créer un fichier .env avec le mot de passe PostgreSQL echo "POSTGRES_PASSWORD=" > .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 ```bash 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 ```bash 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 ```bash 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 : ```bash 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 ```bash # État de tous les conteneurs docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" # Logs d'un service docker logs --tail 50 -f # Certificats TLS Traefik docker logs traefik 2>&1 | grep -i "certificate\|acme" ```