diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..83cabc4 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,17 @@ +# Données Nextcloud +data/ +db/ +backups/ +logs/ + +# Docker +docker-compose*.yml +.env* + +# Git +.git/ +.gitignore + +# Documentation +README.md +*.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..51ecd0a --- /dev/null +++ b/Dockerfile @@ -0,0 +1,7 @@ +FROM nextcloud:latest + +# Installer ffmpeg pour les previews vidéo +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + ffmpeg \ + && rm -rf /var/lib/apt/lists/* diff --git a/README.md b/README.md index be371c3..6f8c70f 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,13 @@ Déploiement Nextcloud avec Docker Compose comprenant MariaDB 10.11, Redis (cach ## Architecture -Le déploiement comprend 4 services: +Le déploiement comprend 5 services: -- **nextcloud**: Application Nextcloud (port 127.0.0.1:8888:80) +- **nextcloud**: Application Nextcloud avec image personnalisée (inclut ffmpeg) - 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.) +- **backup-cron**: Système de backup automatisé (quotidien) **Réseaux**: @@ -113,6 +114,54 @@ Les paramètres PHP sont préconfigurés dans docker-compose.yml: Ces valeurs permettent l'upload de fichiers jusqu'à 2GB. +### Image Docker personnalisée + +Le projet utilise une image Docker personnalisée basée sur `nextcloud:latest` qui inclut **ffmpeg** pour la génération de previews vidéo (.mov, .mp4, etc.). + +**Dockerfile:** +```dockerfile +FROM nextcloud:latest + +# Installer ffmpeg pour les previews vidéo +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + ffmpeg \ + && rm -rf /var/lib/apt/lists/* +``` + +**Builder l'image:** + +```bash +# Builder l'image custom +docker compose build nextcloud + +# Ou forcer le rebuild +docker compose build --no-cache nextcloud +``` + +**Vérifier ffmpeg:** + +```bash +docker compose exec nextcloud ffmpeg -version +``` + +**Activer les previews vidéo:** + +Après le premier démarrage, activez les providers de preview pour les vidéos: + +```bash +docker compose exec -u www-data nextcloud php occ config:system:set enabledPreviewProviders 0 --value="OC\\Preview\\Movie" +docker compose exec -u www-data nextcloud php occ config:system:set enabledPreviewProviders 1 --value="OC\\Preview\\PNG" +docker compose exec -u www-data nextcloud php occ config:system:set enabledPreviewProviders 2 --value="OC\\Preview\\JPEG" +docker compose exec -u www-data nextcloud php occ config:system:set enabledPreviewProviders 3 --value="OC\\Preview\\GIF" +docker compose exec -u www-data nextcloud php occ config:system:set enabledPreviewProviders 4 --value="OC\\Preview\\BMP" + +# Générer les previews pour un utilisateur +docker compose exec -u www-data nextcloud php occ preview:generate-all nom_utilisateur +``` + +**Note:** L'image est buildée localement et taguée `nextcloud-custom:latest`. Lors des mises à jour Nextcloud, pensez à rebuild l'image. + ### Configuration Apache pour Traefik Le fichier `apache/nextcloud.conf` configure Apache pour fonctionner correctement derrière le reverse proxy Traefik. @@ -164,6 +213,9 @@ docker compose logs nextcloud --tail=20 ### Première installation ```bash +# Builder l'image personnalisée (inclut ffmpeg) +docker compose build nextcloud + # Démarrer tous les services make up @@ -269,7 +321,7 @@ make update 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 +2. 🔨 Rebuild l'image personnalisée avec la nouvelle version 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) diff --git a/docker-compose.yml b/docker-compose.yml index fc2df61..b7b39a7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ services: nextcloud: - image: nextcloud:latest + build: . + image: nextcloud-custom:latest restart: unless-stopped ports: - "127.0.0.1:8888:80" @@ -56,7 +57,7 @@ services: - nextcloud-net cron: - image: nextcloud:latest + image: nextcloud-custom:latest restart: always volumes_from: - nextcloud diff --git a/scripts/update.sh b/scripts/update.sh index 2ec5123..b1bc731 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -80,10 +80,16 @@ cp docker-compose.yml "$COMPOSE_BACKUP" || { } log "INFO" "docker-compose.yml sauvegardé: $COMPOSE_BACKUP" -# Pull nouvelle image -log "INFO" "Téléchargement de la nouvelle version..." -if ! docker-compose pull nextcloud 2>&1 | tee -a "$LOG_FILE"; then - log "ERROR" "Erreur lors du téléchargement de l'image" +# Pull nouvelle image de base et rebuild image custom +log "INFO" "Téléchargement de la nouvelle version de base..." +if ! docker pull nextcloud:latest 2>&1 | tee -a "$LOG_FILE"; then + log "ERROR" "Erreur lors du téléchargement de l'image de base" + exit 1 +fi + +log "INFO" "Rebuild de l'image personnalisée (avec ffmpeg)..." +if ! docker-compose build --no-cache nextcloud 2>&1 | tee -a "$LOG_FILE"; then + log "ERROR" "Erreur lors du rebuild de l'image personnalisée" exit 1 fi