improve transparency and fix variable naming
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
# ============================================
|
||||
# Base de données
|
||||
MYSQL_DATABASE=nextcloud
|
||||
MYSQL_ROOT_USER=
|
||||
MYSQL_ROOT_PASSWORD=
|
||||
MYSQL_USER=
|
||||
MYSQL_PASSWORD=
|
||||
|
||||
40
Makefile
40
Makefile
@@ -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
|
||||
|
||||
163
README.md
163
README.md
@@ -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)
|
||||
@@ -77,20 +77,18 @@ 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 (\*) | `********` |
|
||||
| `REDIS_HOST_PASSWORD` | Mot de passe Redis | `********` |
|
||||
| `NEXTCLOUD_DOMAIN` | Domaine de confiance | `cloud.example.com` |
|
||||
| `OVERWRITE_PROTOCOL` | Protocole (http/https) | `https` |
|
||||
| `OVERWRITE_HOST` | Hôte public | `cloud.example.com` |
|
||||
| `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)
|
||||
| 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_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` |
|
||||
| `OVERWRITE_HOST` | Hôte public | `cloud.example.com` |
|
||||
| `TRUSTED_PROXIES` | Proxies de confiance | `172.18.0.0/16` |
|
||||
| `OVERWRITE_CLI_URL` | URL pour CLI (optionnel) | `https://...` |
|
||||
|
||||
### Volumes
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -331,17 +397,34 @@ 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 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 |
|
||||
| Commande | Description |
|
||||
| -------------------------- | ------------------------------------------------------------------------------------------------ |
|
||||
| `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 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
|
||||
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user