docs: ajout du projet Luz (luz.goutailler-olivier.com)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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)
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user