185 lines
4.5 KiB
Markdown
185 lines
4.5 KiB
Markdown
# 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`.
|
|
|
|
Le registre Gitea requiert une authentification. Se connecter une première fois avec son compte Gitea :
|
|
|
|
```bash
|
|
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](https://docs.docker.com/engine/reference/commandline/login/#credentials-store).
|
|
|
|
```bash
|
|
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
|
|
|
|
```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 <nom_conteneur> --tail 50 -f
|
|
|
|
# Certificats TLS Traefik
|
|
docker logs traefik 2>&1 | grep -i "certificate\|acme"
|
|
```
|