Compare commits
3 Commits
43517b36cc
...
a1b51599c6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1b51599c6 | ||
|
|
123f7b6a9c | ||
|
|
f02c9b36b2 |
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
|
||||
|
||||
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)
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Active les modules Apache nécessaires pour Nextcloud derrière Traefik
|
||||
|
||||
a2enmod headers
|
||||
a2enmod rewrite
|
||||
a2enmod dir
|
||||
a2enmod mime
|
||||
a2enmod remoteip # Pour récupérer les vraies IPs clients
|
||||
a2enmod env # Pour SetEnvIf (détection HTTPS)
|
||||
|
||||
# Redémarre Apache
|
||||
apache2ctl graceful
|
||||
@@ -1,12 +1,20 @@
|
||||
services:
|
||||
nextcloud:
|
||||
image: nextcloud:latest
|
||||
build: .
|
||||
image: nextcloud-custom:latest
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "127.0.0.1:8888:80"
|
||||
volumes:
|
||||
- ./data:/var/www/html
|
||||
- ./apache/nextcloud.conf:/etc/apache2/conf-enabled/nextcloud.conf:ro
|
||||
- ./logs/apache:/var/log/apache2
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
tag: "nextcloud"
|
||||
environment:
|
||||
# Database
|
||||
- MYSQL_HOST=db
|
||||
@@ -56,7 +64,7 @@ services:
|
||||
- nextcloud-net
|
||||
|
||||
cron:
|
||||
image: nextcloud:latest
|
||||
image: nextcloud-custom:latest
|
||||
restart: always
|
||||
volumes_from:
|
||||
- nextcloud
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user