feat: add custom Docker image with ffmpeg for video previews
- Create Dockerfile extending nextcloud:latest with ffmpeg - Add .dockerignore to optimize build context - Update docker-compose.yml to use custom image build - Modify update.sh to rebuild custom image on updates - Document custom image setup in README - Enable video preview generation for .mov, .mp4 files 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
17
.dockerignore
Normal file
17
.dockerignore
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Données Nextcloud
|
||||||
|
data/
|
||||||
|
db/
|
||||||
|
backups/
|
||||||
|
logs/
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
docker-compose*.yml
|
||||||
|
.env*
|
||||||
|
|
||||||
|
# Git
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
README.md
|
||||||
|
*.md
|
||||||
7
Dockerfile
Normal file
7
Dockerfile
Normal file
@@ -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/*
|
||||||
58
README.md
58
README.md
@@ -16,12 +16,13 @@ Déploiement Nextcloud avec Docker Compose comprenant MariaDB 10.11, Redis (cach
|
|||||||
|
|
||||||
## Architecture
|
## 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
|
- **db**: MariaDB 10.11 avec healthcheck
|
||||||
- **redis**: Cache Redis avec politique LRU (512MB max)
|
- **redis**: Cache Redis avec politique LRU (512MB max)
|
||||||
- **cron**: Tâches planifiées Nextcloud (préviews, nettoyage, etc.)
|
- **cron**: Tâches planifiées Nextcloud (préviews, nettoyage, etc.)
|
||||||
|
- **backup-cron**: Système de backup automatisé (quotidien)
|
||||||
|
|
||||||
**Réseaux**:
|
**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.
|
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
|
### Configuration Apache pour Traefik
|
||||||
|
|
||||||
Le fichier `apache/nextcloud.conf` configure Apache pour fonctionner correctement derrière le reverse proxy 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
|
### Première installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Builder l'image personnalisée (inclut ffmpeg)
|
||||||
|
docker compose build nextcloud
|
||||||
|
|
||||||
# Démarrer tous les services
|
# Démarrer tous les services
|
||||||
make up
|
make up
|
||||||
|
|
||||||
@@ -269,7 +321,7 @@ make update
|
|||||||
1. 💾 **Backup automatique de sécurité**
|
1. 💾 **Backup automatique de sécurité**
|
||||||
- Exécute `scripts/backup.sh` complet
|
- Exécute `scripts/backup.sh` complet
|
||||||
- Archive créée dans `./backups/`
|
- 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
|
3. ⏸️ Active le mode maintenance
|
||||||
4. 🔄 Redémarre les containers avec `--force-recreate`
|
4. 🔄 Redémarre les containers avec `--force-recreate`
|
||||||
5. ⏳ Attend que Nextcloud soit prêt (health check jusqu'à 60s)
|
5. ⏳ Attend que Nextcloud soit prêt (health check jusqu'à 60s)
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
nextcloud:
|
nextcloud:
|
||||||
image: nextcloud:latest
|
build: .
|
||||||
|
image: nextcloud-custom:latest
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:8888:80"
|
- "127.0.0.1:8888:80"
|
||||||
@@ -56,7 +57,7 @@ services:
|
|||||||
- nextcloud-net
|
- nextcloud-net
|
||||||
|
|
||||||
cron:
|
cron:
|
||||||
image: nextcloud:latest
|
image: nextcloud-custom:latest
|
||||||
restart: always
|
restart: always
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- nextcloud
|
- nextcloud
|
||||||
|
|||||||
@@ -80,10 +80,16 @@ cp docker-compose.yml "$COMPOSE_BACKUP" || {
|
|||||||
}
|
}
|
||||||
log "INFO" "docker-compose.yml sauvegardé: $COMPOSE_BACKUP"
|
log "INFO" "docker-compose.yml sauvegardé: $COMPOSE_BACKUP"
|
||||||
|
|
||||||
# Pull nouvelle image
|
# Pull nouvelle image de base et rebuild image custom
|
||||||
log "INFO" "Téléchargement de la nouvelle version..."
|
log "INFO" "Téléchargement de la nouvelle version de base..."
|
||||||
if ! docker-compose pull nextcloud 2>&1 | tee -a "$LOG_FILE"; then
|
if ! docker pull nextcloud:latest 2>&1 | tee -a "$LOG_FILE"; then
|
||||||
log "ERROR" "Erreur lors du téléchargement de l'image"
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user