docs: ajout du projet Luz (luz.goutailler-olivier.com)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-05 05:51:19 +02:00
parent 135187f69f
commit bd6ee2ba2b
4 changed files with 87 additions and 6 deletions
+11
View File
@@ -0,0 +1,11 @@
# Changelog
## 2026-06-05 — Ajout du projet Luz
- `Home.md` — ajout de Luz dans l'architecture et le tableau des services
- `Installation-Production.md` — section 7 Luz avec commandes de démarrage et secrets requis
- `Mise-a-jour-Applications.md` — procédure de rollback Luz, Luz ajouté dans la boucle de mise à jour globale
## 2026-06-02 — Fix CI release Bonsai-webapp : bump version commité avant merge main
- `Mise-a-jour-Applications.md` — documentation du bug (package.json modifié non commité bloquait git checkout main) et de la correction (commit du bump avant le merge, sauvegarde du RELEASE_HEAD)
+3
View File
@@ -15,6 +15,7 @@ Internet
├── bonsai.goutailler-olivier.com ├── bonsai.goutailler-olivier.com
│ ├── /api → Bonsai API (Spring Boot) │ ├── /api → Bonsai API (Spring Boot)
│ └── / → Bonsai Webapp (front-end) │ └── / → Bonsai Webapp (front-end)
├── luz.goutailler-olivier.com → Luz (front-end Angular)
├── cloud.goutailler-olivier.com → Nextcloud ├── cloud.goutailler-olivier.com → Nextcloud
└── notes.goutailler-olivier.com → Trilium └── notes.goutailler-olivier.com → Trilium
``` ```
@@ -28,6 +29,7 @@ Internet
| Keycloak | `keycloak/` | `auth.goutailler-olivier.com` | | Keycloak | `keycloak/` | `auth.goutailler-olivier.com` |
| Bonsai API | `bonsai-api/` | `bonsai.goutailler-olivier.com/api` | | Bonsai API | `bonsai-api/` | `bonsai.goutailler-olivier.com/api` |
| Bonsai Webapp | `bonsai-webapp/` | `bonsai.goutailler-olivier.com` | | Bonsai Webapp | `bonsai-webapp/` | `bonsai.goutailler-olivier.com` |
| Luz | `luz/` | `luz.goutailler-olivier.com` |
| Nextcloud | `nextcloud/` | `cloud.goutailler-olivier.com` | | Nextcloud | `nextcloud/` | `cloud.goutailler-olivier.com` |
| Trilium | `trilium/` | `notes.goutailler-olivier.com` | | Trilium | `trilium/` | `notes.goutailler-olivier.com` |
@@ -36,3 +38,4 @@ Internet
- [Installation Production](Installation-Production) - [Installation Production](Installation-Production)
- [Installation Développement](Installation-Developpement) - [Installation Développement](Installation-Developpement)
- [Mise à jour des applications](Mise-a-jour-Applications) - [Mise à jour des applications](Mise-a-jour-Applications)
- [CI/CD — Pipelines Gitea Actions](CI-CD)
+23 -4
View File
@@ -131,7 +131,25 @@ L'image `git.goutailler-olivier.com/bonsai/bonsai-webapp:latest` est également
--- ---
## 7. Nextcloud ## 7. Luz
```bash
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
```bash ```bash
cd nextcloud/ cd nextcloud/
@@ -149,7 +167,7 @@ Variables à personnaliser dans `docker-compose.yml` avant le premier lancement
--- ---
## 8. Trilium ## 10. Trilium
```bash ```bash
cd trilium/ cd trilium/
@@ -173,8 +191,9 @@ mkdir -p /home/gato/Applications/Trilium/data
4. Gitea 4. Gitea
5. Bonsai API 5. Bonsai API
6. Bonsai Webapp 6. Bonsai Webapp
7. Nextcloud 7. Luz
8. Trilium 8. Nextcloud
9. Trilium
``` ```
--- ---
+50 -2
View File
@@ -53,6 +53,46 @@ docker compose up -d
--- ---
## Notes sur le workflow de release (CI)
### `fetch-depth: 0` requis sur le checkout
Le job `release.yml` de Bonsai-webapp (et Bonsai-api) effectue un `git merge` du tag de release dans `main` à la fin du pipeline. `actions/checkout@v4` fait par défaut un clone superficiel (`--depth 1`), ce qui empêche git de trouver l'ancêtre commun entre le tag et `main` → erreur `refusing to merge unrelated histories`.
**Solution appliquée** : ajouter `fetch-depth: 0` sur le step Checkout :
```yaml
- name: Checkout
uses: https://github.com/actions/checkout@v4
with:
fetch-depth: 0
```
Sans ce paramètre, tout nouveau runner qui clone le dépôt avec historique limité fera échouer l'étape « Merge release to main ».
### Bump de version commité avant le merge
Le step « Bump version in package.json » modifie `package.json` pour y inscrire la version de la release. Ce changement est **commité sur le HEAD détaché** (tag checkout) avant que le build Docker ne commence. Le step « Merge release to main » sauvegarde ensuite le hash de ce commit (`RELEASE_HEAD`) et merge ce commit (et non le tag) sur `main` :
```yaml
- name: Bump version in package.json
run: |
# ... sed + git config ...
git add package.json
git commit -m "chore: set version to $VERSION"
- name: Merge release to main
run: |
RELEASE_HEAD=$(git rev-parse HEAD)
git checkout main
git merge --no-ff "$RELEASE_HEAD" -m "chore: release ..."
git push origin main
```
**Pourquoi** : sans ce commit préalable, `git checkout main` échoue avec *"Your local changes would be overwritten by checkout"* car `package.json` est modifié mais non commité.
---
## Revenir à une version précédente (rollback) ## Revenir à une version précédente (rollback)
Un workflow Gitea Actions dédié permet de déclencher un rollback sans toucher au serveur manuellement. Un workflow Gitea Actions dédié permet de déclencher un rollback sans toucher au serveur manuellement.
@@ -76,7 +116,7 @@ Un workflow Gitea Actions dédié permet de déclencher un rollback sans toucher
### Ce que fait le workflow en coulisse ### Ce que fait le workflow en coulisse
1. Retague l'image `image:vX.Y.Z` en `image:latest` dans le registry Gitea 1. Retague l'image `image:vX.Y.Z` en `image:latest` dans le registry Gitea
2. (Si `restore_db=yes`) Se connecte en SSH au serveur, arrête l'API, restaure le dump PostgreSQL 2. (Si `restore_db=yes`) Via le socket Docker du runner, arrête l'API et restaure le dump PostgreSQL depuis `/opt/backups/bonsai-api/`
3. Déclenche Watchtower → redéploie le conteneur avec la version rétrogradée 3. Déclenche Watchtower → redéploie le conteneur avec la version rétrogradée
--- ---
@@ -112,10 +152,18 @@ docker start bonsai-api
--- ---
## Rollback Luz
1. Aller dans **Gitea → Luz → Actions → Rollback → Run workflow**
2. Saisir la version cible (ex. `v1.2.3`)
3. Lancer — Watchtower redéploie automatiquement
---
## Mettre à jour tous les services d'un coup ## Mettre à jour tous les services d'un coup
```bash ```bash
for dir in traefik keycloak gitea bonsai-api bonsai-webapp nextcloud trilium; do for dir in traefik keycloak gitea bonsai-api bonsai-webapp luz nextcloud trilium; do
echo "=== $dir ===" echo "=== $dir ==="
(cd "$dir" && docker compose pull && docker compose up -d) (cd "$dir" && docker compose pull && docker compose up -d)
done done