improve transparency and fix variable naming

This commit is contained in:
BeauTroll
2025-12-16 03:23:42 +01:00
parent 386f731c2b
commit f3655144a7
4 changed files with 154 additions and 52 deletions

View File

@@ -3,7 +3,6 @@
# ============================================
# Base de données
MYSQL_DATABASE=nextcloud
MYSQL_ROOT_USER=
MYSQL_ROOT_PASSWORD=
MYSQL_USER=
MYSQL_PASSWORD=

View File

@@ -5,16 +5,36 @@ export
help:
@echo "Nextcloud Docker - Commandes disponibles:"
@echo " make up - Démarrer les services"
@echo " make down - Arrêter les services"
@echo " make restart - Redémarrer"
@echo " make logs - Voir les logs"
@echo " make ps - Status des containers"
@echo " make occ <cmd> - Lancer une commande occ"
@echo " make backup - Backup complet"
@echo " make restore <file> - Restaurer un backup"
@echo " make update - Mettre à jour Nextcloud"
@echo " make health - Vérifier la santé du système"
@echo ""
@echo "Services:"
@echo " make up - Démarrer tous les services Docker"
@echo " make down - Arrêter et supprimer les containers"
@echo " make restart - Redémarrer tous les services"
@echo " make ps - Lister les containers actifs"
@echo " make logs - Afficher les logs Nextcloud en temps réel"
@echo ""
@echo "Maintenance:"
@echo " make backup - Backup complet (DB + fichiers + config)"
@echo " → Active mode maintenance"
@echo " → Sauvegarde MariaDB, config, données, apps"
@echo " → Désactive mode maintenance"
@echo " → Archive dans ./backups/"
@echo ""
@echo " make update - Mise à jour Nextcloud (avec backup auto)"
@echo " → Backup de sécurité automatique"
@echo " → Pull nouvelle image Docker"
@echo " → Restart avec nouvelle version"
@echo " → Upgrade base de données"
@echo " → Optimisations post-update"
@echo ""
@echo " make restore <file> - Restaurer depuis un backup"
@echo " → Arrêt des services"
@echo " → Restauration DB + fichiers"
@echo " → Redémarrage et réparation"
@echo ""
@echo "Outils:"
@echo " make occ <cmd> - Exécuter une commande OCC Nextcloud"
@echo " make health - Vérifier l'état (Nextcloud + DB + config)"
up:
docker-compose up -d

139
README.md
View File

@@ -65,7 +65,7 @@ Variables importantes à configurer dans `.env`:
- `MYSQL_DATABASE`: Nom de la base de données (défaut: nextcloud)
- `MYSQL_USER`: Utilisateur de la base de données
- `MYSQL_PASSWORD`: Mot de passe de la base de données
- `MYSQL_ROOT_USER`: Mot de passe root MariaDB (note: malgré le nom, c'est bien le mot de passe)
- `MYSQL_ROOT_PASSWORD`: Mot de passe root MariaDB
- `REDIS_HOST_PASSWORD`: Mot de passe Redis
- `NEXTCLOUD_DOMAIN`: Votre nom de domaine
- `OVERWRITE_PROTOCOL`: Protocole (http/https)
@@ -78,11 +78,11 @@ Variables importantes à configurer dans `.env`:
Créez votre fichier `.env` basé sur `.env.example`:
| Variable | Description | Exemple |
| --------------------- | ------------------------------ | ------------------- |
| ---------------------- | --------------------------- | ------------------- |
| `MYSQL_DATABASE` | Nom de la base de données | `nextcloud` |
| `MYSQL_USER` | Utilisateur base de données | `nextcloud` |
| `MYSQL_PASSWORD` | Mot de passe utilisateur DB | `********` |
| `MYSQL_ROOT_USER` | Mot de passe root MariaDB (\*) | `********` |
| `MYSQL_ROOT_PASSWORD` | Mot de passe root MariaDB | `********` |
| `REDIS_HOST_PASSWORD` | Mot de passe Redis | `********` |
| `NEXTCLOUD_DOMAIN` | Domaine de confiance | `cloud.example.com` |
| `OVERWRITE_PROTOCOL` | Protocole (http/https) | `https` |
@@ -90,8 +90,6 @@ Créez votre fichier `.env` basé sur `.env.example`:
| `TRUSTED_PROXIES` | Proxies de confiance | `172.18.0.0/16` |
| `OVERWRITE_CLI_URL` | URL pour CLI (optionnel) | `https://...` |
(\*) Note: Malgré le nom `MYSQL_ROOT_USER`, cette variable contient le mot de passe root (utilisé pour `MYSQL_ROOT_PASSWORD` dans le container)
### Volumes
Les données persistantes sont stockées dans:
@@ -159,11 +157,21 @@ Créer une sauvegarde de sécurité avant une mise à jour:
make backup
```
Les sauvegardes incluent:
**Actions effectuées par le script:**
- Base de données MariaDB (dump SQL)
- Fichiers de données Nextcloud
- Configuration Nextcloud
1. ⏸️ Active le mode maintenance Nextcloud
2. 💾 Sauvegarde la base de données MariaDB (mysqldump avec transactions)
3. ⚙️ Sauvegarde la configuration (`/var/www/html/config`)
4. 📁 Sauvegarde les données utilisateurs (avec exclusions: previews, cache, thumbnails)
5. 📦 Sauvegarde les apps personnalisées (`custom_apps`)
6. ▶️ Désactive le mode maintenance
7. 🗜️ Compresse le tout en `.tar.gz` dans `./backups/`
8. 🧹 Nettoie les backups de plus de 7 jours
**Sécurité:**
- Tous les tar s'exécutent dans le container en tant que `www-data`
- Mots de passe sécurisés via `MYSQL_PWD` (pas visible dans `ps`)
- Cleanup automatique en cas d'erreur avec trap handler
**Note**: Un service cron intégré est déjà configuré dans docker-compose.yml pour les tâches planifiées Nextcloud (préviews, nettoyage, etc.)
@@ -173,29 +181,87 @@ Les sauvegardes incluent:
# Lister les backups disponibles
ls -lh backups/
# Restaurer depuis une sauvegarde (remplacer par le nom du fichier backup)
bash scripts/restore.sh backups/nextcloud_backup_YYYYMMDD_HHMMSS.tar.gz
# Restaurer depuis une sauvegarde
make restore backups/nextcloud_backup_YYYYMMDD_HHMMSS.tar.gz
```
**Actions effectuées par le script:**
1. ⚠️ Demande confirmation (opération destructive!)
2. 📂 Extrait l'archive dans un répertoire temporaire
3. ✅ Valide le contenu de l'archive (type MIME, fichiers requis)
4. ⏹️ Arrête tous les services Docker
5. 💾 Restaure la base de données MariaDB
- Démarre uniquement le container DB
- Attend que MariaDB soit prêt (health check)
- Importe le dump SQL
6. ▶️ Démarre tous les services
7. 📁 Restaure les fichiers (config, données, apps) via le container
8. 🔧 Exécute `maintenance:repair` pour corriger les éventuels problèmes
9. ▶️ Désactive le mode maintenance
10. 🔍 Scanne tous les fichiers avec `files:scan --all`
11. 🧹 Nettoie le répertoire temporaire
**Sécurité:**
- Validation du chemin (protection path traversal)
- Vérification du type de fichier (gzip)
- Restauration via container en tant que `www-data`
- Cleanup garanti avec trap handler
### Mise à jour
**Important**: Toujours créer un backup avant de mettre à jour:
Mettre à jour Nextcloud vers la dernière version:
```bash
# 1. Créer un backup de sécurité
make backup
# 2. Mettre à jour Nextcloud et ses dépendances
make update
```
# 3. Vérifier la version après mise à jour
**Le script effectue automatiquement un backup avant la mise à jour!**
**Actions effectuées par le script:**
1. 💾 **Backup automatique de sécurité**
- Exécute `scripts/backup.sh` complet
- Archive créée dans `./backups/`
2. 📥 Télécharge la nouvelle image Docker Nextcloud
3. ⏸️ Active le mode maintenance
4. 🔄 Redémarre les containers avec `--force-recreate`
5. ⏳ Attend que Nextcloud soit prêt (health check jusqu'à 60s)
6. ▶️ Désactive temporairement le mode maintenance
7. ⬆️ Exécute `occ upgrade` (migrations base de données)
8. 🔍 Scanne tous les fichiers (`files:scan --all`)
9. 📊 Ajoute les indices manquants (`db:add-missing-indices`)
10. 🔧 Convertit les colonnes en bigint (`db:convert-filecache-bigint`)
11. ▶️ Désactive le mode maintenance
12. ✅ Affiche le statut final
**Vérification post-update:**
```bash
# Vérifier la version et l'état
make occ status
# 4. Vérifier que tout fonctionne
# Vérifier la santé globale
make health
```
En cas de problème après la mise à jour, utilisez la commande de restauration avec la date du backup créé à l'étape 1.
**En cas de problème:**
Si la mise à jour échoue, restaurez le backup automatique créé à l'étape 1:
```bash
# Lister les backups (le plus récent est celui de l'update)
ls -lht backups/ | head
# Restaurer
make restore backups/nextcloud_backup_YYYYMMDD_HHMMSS.tar.gz
```
**Sécurité:**
- Backup automatique avant toute modification
- Trap handler pour cleanup en cas d'erreur
- Mode maintenance automatiquement désactivé même en cas d'échec
- Instructions de rollback affichées en cas d'erreur
### Commandes OCC
@@ -332,16 +398,33 @@ make occ app:enable bruteforcesettings
## Commandes Make disponibles
| Commande | Description |
| -------------- | ---------------------------- |
| `make up` | Démarrer tous les services |
| `make down` | Arrêter tous les services |
| -------------------------- | ------------------------------------------------------------------------------------------------ |
| `make up` | Démarrer tous les services Docker (nextcloud, db, redis, cron) |
| `make down` | Arrêter et supprimer tous les containers |
| `make restart` | Redémarrer tous les services |
| `make ps` | Lister les containers actifs |
| `make logs` | Afficher les logs |
| `make health` | Vérifier l'état de santé |
| `make backup` | Créer une sauvegarde |
| `make update` | Mettre à jour Nextcloud |
| `make occ` | Exécuter une commande OCC |
| `make ps` | Lister les containers actifs avec leur état |
| `make logs` | Afficher les logs Nextcloud en temps réel (tail -100) |
| `make health` | Vérifier l'état: statut Nextcloud + config système + connexion MariaDB |
| `make backup` | Backup complet: DB + config + données + apps (avec mode maintenance) |
| `make restore <file>` | Restaurer depuis un backup (destructif - demande confirmation) |
| `make update` | Mise à jour complète: backup auto + pull + upgrade + optimisations |
| `make occ <commande>` | Exécuter une commande OCC Nextcloud (ex: `make occ user:list`) |
**Exemples d'utilisation:**
```bash
# Backup et update
make backup
make update
# Restaurer un backup spécifique
make restore backups/nextcloud_backup_20251215_112450.tar.gz
# Commandes OCC
make occ status
make occ user:list
make occ files:scan --all
```
## Support

View File

@@ -70,7 +70,7 @@ services:
- ./db:/var/lib/mysql
- ./db-config/my.cnf:/etc/mysql/conf.d/custom.cnf:ro
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_USER}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}