update readme

This commit is contained in:
BeauTroll
2025-12-15 11:00:58 +01:00
parent db65cd7ec9
commit a7e6cf402d

347
README.md
View File

@@ -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 ## Architecture
git clone https://gitea.agence66.fr/vous/nextcloud.git
cd nextcloud
\`\`\`
### 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 <repository-url>
cd agence66-nextcloud-docker
```
2. **Configurer l'environnement**
```bash
cp .env.example .env cp .env.example .env
nano .env # Éditer avec vos valeurs nano .env
\`\`\` ```
Générer des mots de passe sécurisés: 3. **Générer des mots de passe sécurisés**
\`\`\`bash
openssl rand -base64 32 # Pour chaque secret
\`\`\`
### 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 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: **Accès à l'instance**:
\`\`\`bash
make occ config:system:set memcache.local --value='\\OC\\Memcache\\APCu' - **Via Traefik** (production): `https://votre-domaine.com` (recommandé)
make occ config:system:set memcache.locking --value='\\OC\\Memcache\\Redis' - **Accès direct** (développement): `http://localhost:8888`
make occ config:system:set default_phone_region --value='FR'
\`\`\` **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 ## 🛠️ Maintenance
### Backup quotidien ### Backup pré-mise à jour
\`\`\`bash Créer une sauvegarde de sécurité avant une mise à jour:
```bash
make backup make backup
\`\`\` ```
Configurer un cron sur le serveur: Les sauvegardes incluent:
\`\`\`bash
0 3 \* \* \* cd /path/to/nextcloud && make backup - 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 ### 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 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 ### 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 make occ status
# Lister les utilisateurs
make occ user:list make occ user:list
# Scanner tous les fichiers
make occ files:scan --all make occ files:scan --all
# Lister les applications installées
make occ app:list 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 ## 🔧 Résolution de problèmes
### Erreur 423 WebDAV Locked ### Erreur 423 WebDAV Locked
\`\`\`bash Si vous rencontrez des erreurs de fichiers verrouillés:
```bash
make occ files:cleanup make occ files:cleanup
\`\`\` ```
### Performance lente ### Performance lente
\`\`\`bash Optimisations recommandées:
# Vérifier les indices
```bash
# Ajouter les indices manquants en base de données
make occ db:add-missing-indices 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 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 squareSizes --value="256 512"
make occ config:app:set previewgenerator widthSizes --value="256 512 1024" make occ config:app:set previewgenerator widthSizes --value="256 512 1024"
make occ config:app:set previewgenerator heightSizes --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 ## 📊 Monitoring
\`\`\`bash ### Vérifications de santé
# Status
```bash
# Status général
make health make health
# Logs en temps réel # Vérifier les containers actifs
make ps
# Voir les logs en temps réel
make logs 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