From a7e6cf402d4f9d0994416d09fed809307d3a8db0 Mon Sep 17 00:00:00 2001 From: BeauTroll <-> Date: Mon, 15 Dec 2025 11:00:58 +0100 Subject: [PATCH] update readme --- README.md | 347 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 293 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 1c0f3c8..29d9a25 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,352 @@ -# Nextcloud Self-Hosted +# Nextcloud Docker Deployment -Configuration Nextcloud en production pour agence66.fr +Déploiement Nextcloud avec Docker Compose comprenant MariaDB 10.11, Redis (cache), service cron intégré et support Traefik pour le reverse proxy. -## 🚀 Déploiement initial +## Table des matières -### 1. Cloner le repo +- [Architecture](#architecture) +- [Prérequis](#prérequis) +- [Installation](#installation) +- [Configuration](#configuration) +- [Démarrage](#démarrage) +- [Maintenance](#️-maintenance) +- [Résolution de problèmes](#-résolution-de-problèmes) +- [Monitoring](#-monitoring) +- [Sécurité](#-sécurité) -\`\`\`bash -git clone https://gitea.agence66.fr/vous/nextcloud.git -cd nextcloud -\`\`\` +## Architecture -### 2. Configuration +Le déploiement comprend 4 services: -\`\`\`bash +- **nextcloud**: Application Nextcloud (port 127.0.0.1:8888:80) +- **db**: MariaDB 10.11 avec healthcheck +- **redis**: Cache Redis avec politique LRU (512MB max) +- **cron**: Tâches planifiées Nextcloud (préviews, nettoyage, etc.) + +**Réseaux**: + +- `nextcloud-net`: Réseau interne pour la communication entre services +- `traefik-net`: Réseau externe pour Traefik (reverse proxy) + +## Prérequis + +- Docker >= 20.10 +- Docker Compose >= 2.0 +- Traefik configuré avec réseau `traefik-net` (pour exposition HTTPS) +- Nom de domaine configuré avec certificat SSL +- Minimum 2GB RAM recommandé +- Minimum 10GB d'espace disque + +## Installation + +1. **Cloner le dépôt** + +```bash +git clone +cd agence66-nextcloud-docker +``` + +2. **Configurer l'environnement** + +```bash cp .env.example .env -nano .env # Éditer avec vos valeurs -\`\`\` +nano .env +``` -Générer des mots de passe sécurisés: -\`\`\`bash -openssl rand -base64 32 # Pour chaque secret -\`\`\` +3. **Générer des mots de passe sécurisés** -### 3. Démarrage +```bash +# Génération pour chaque secret requis +openssl rand -base64 32 +``` -\`\`\`bash +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) +- `REDIS_HOST_PASSWORD`: Mot de passe Redis +- `NEXTCLOUD_DOMAIN`: Votre nom de domaine +- `OVERWRITE_PROTOCOL`: Protocole (http/https) +- `OVERWRITE_HOST`: Hôte public (optionnel) + +## Configuration + +### Variables d'environnement + +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) + +### Volumes + +Les données persistantes sont stockées dans: + +- `./data`: Fichiers Nextcloud et données utilisateurs +- `./db`: Base de données MariaDB +- `./db-config`: Configuration MariaDB personnalisée + +### Configuration PHP + +Les paramètres PHP sont préconfigurés dans docker-compose.yml: + +| Paramètre | Valeur | Description | +| ------------------------- | ------ | ------------------------------- | +| `PHP_MEMORY_LIMIT` | 4096M | Mémoire allouée à PHP | +| `PHP_UPLOAD_MAX_FILESIZE` | 2G | Taille max d'upload | +| `PHP_POST_MAX_SIZE` | 2G | Taille max POST | +| `PHP_MAX_EXECUTION_TIME` | 1800s | Timeout d'exécution (30min) | +| `PHP_MAX_INPUT_TIME` | 1800s | Timeout lecture données (30min) | +| `APACHE_BODY_LIMIT` | 2GB | Limite Apache pour le body | + +Ces valeurs permettent l'upload de fichiers jusqu'à 2GB. + +## Démarrage + +### Première installation + +```bash +# Démarrer tous les services make up -\`\`\` -### 4. Configuration initiale +# Vérifier que tous les containers sont actifs +make ps -Accéder à https://cloud.agence66.fr et créer le compte admin. +# Vérifier l'état de Nextcloud +make health +``` -Ensuite, optimiser: -\`\`\`bash -make occ config:system:set memcache.local --value='\\OC\\Memcache\\APCu' -make occ config:system:set memcache.locking --value='\\OC\\Memcache\\Redis' -make occ config:system:set default_phone_region --value='FR' -\`\`\` +**Accès à l'instance**: + +- **Via Traefik** (production): `https://votre-domaine.com` (recommandé) +- **Accès direct** (développement): `http://localhost:8888` + +**Note**: En production, Traefik doit être configuré pour exposer Nextcloud via HTTPS. Le port 8888 n'écoute que sur 127.0.0.1 pour des raisons de sécurité. + +### Arrêter les services + +```bash +make down +``` + +### Redémarrer les services + +```bash +make restart +``` ## 🛠️ Maintenance -### Backup quotidien +### Backup pré-mise à jour -\`\`\`bash +Créer une sauvegarde de sécurité avant une mise à jour: + +```bash make backup -\`\`\` +``` -Configurer un cron sur le serveur: -\`\`\`bash -0 3 \* \* \* cd /path/to/nextcloud && make backup -\`\`\` +Les sauvegardes incluent: + +- Base de données MariaDB (dump SQL) +- Fichiers de données Nextcloud +- Configuration Nextcloud + +**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.) + +### Restauration + +```bash +# 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 +``` ### Mise à jour -\`\`\`bash +**Important**: Toujours créer un backup avant de mettre à jour: + +```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 +make occ status + +# 4. Vérifier que tout fonctionne +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. ### Commandes OCC -\`\`\`bash +OCC (occ = ownCloud Console) est l'interface en ligne de commande de Nextcloud: + +```bash +# Vérifier le status de l'instance make occ status + +# Lister les utilisateurs make occ user:list + +# Scanner tous les fichiers make occ files:scan --all + +# Lister les applications installées make occ app:list -\`\`\` + +# Activer/désactiver le mode maintenance +make occ maintenance:mode --on +make occ maintenance:mode --off +``` ## 🔧 Résolution de problèmes ### Erreur 423 WebDAV Locked -\`\`\`bash +Si vous rencontrez des erreurs de fichiers verrouillés: + +```bash make occ files:cleanup -\`\`\` +``` ### Performance lente -\`\`\`bash - -# Vérifier les indices +Optimisations recommandées: +```bash +# Ajouter les indices manquants en base de données make occ db:add-missing-indices -# Nettoyer les fichiers supprimés +# Convertir les colonnes en big int si nécessaire +make occ db:convert-filecache-bigint +# Nettoyer les fichiers supprimés make occ files:cleanup -# Optimiser les previews - +# Optimiser la génération des previews make occ config:app:set previewgenerator squareSizes --value="256 512" make occ config:app:set previewgenerator widthSizes --value="256 512 1024" make occ config:app:set previewgenerator heightSizes --value="256 512 1024" -\`\`\` + +# Générer les previews +make occ preview:generate-all +``` + +### Problèmes de permissions + +```bash +# Réparer les permissions des fichiers +docker compose exec -u www-data nextcloud chown -R www-data:www-data /var/www/html/data +``` + +### Espace disque insuffisant + +```bash +# Nettoyer les anciennes versions de fichiers +make occ versions:cleanup + +# Nettoyer la corbeille +make occ trashbin:cleanup --all-users + +# Vérifier l'utilisation de l'espace +du -sh ./data # Données Nextcloud +du -sh ./db # Base de données MariaDB +``` ## 📊 Monitoring -\`\`\`bash - -# Status +### Vérifications de santé +```bash +# Status général make health -# Logs en temps réel +# Vérifier les containers actifs +make ps +# Voir les logs en temps réel make logs -# Containers actifs +# Logs d'un service spécifique +docker compose logs -f nextcloud +docker compose logs -f db +docker compose logs -f redis +``` -make ps -\`\`\` +### Métriques de performance + +```bash +# Statistiques système +make occ status + +# Informations sur la base de données MariaDB +docker compose exec db mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e "SELECT table_schema AS 'Database', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' FROM information_schema.TABLES WHERE table_schema = 'nextcloud';" + +# Utilisation Redis +docker compose exec redis redis-cli -a ${REDIS_HOST_PASSWORD} INFO stats +``` + +## 🔒 Sécurité + +### Bonnes pratiques + +1. **Mots de passe forts**: Utilisez `openssl rand -base64 32` pour tous les secrets +2. **HTTPS obligatoire**: Configurez SSL/TLS avec Let's Encrypt ou certificats valides +3. **Mises à jour régulières**: Exécutez `make backup` puis `make update` mensuellement +4. **Sauvegardes**: Utilisez `make backup` avant toute mise à jour (backup serveur quotidien géré au niveau système) +5. **Monitoring**: Vérifiez les logs régulièrement pour détecter les activités suspectes + +### Sécuriser l'accès + +```bash +# Activer l'authentification à deux facteurs +make occ app:enable twofactor_totp + +# Forcer HTTPS +make occ config:system:set overwriteprotocol --value="https" + +# Limiter les tentatives de connexion +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 | + +## Support + +Pour toute question ou problème: + +1. Consultez la [documentation officielle Nextcloud](https://docs.nextcloud.com/) +2. Vérifiez les logs: `make logs` +3. Consultez les issues du projet