Ce tutoriel vous guide pas à pas dans l'installation de Nextcloud avec Docker Compose. Vous déploierez une stack complète avec MariaDB (base de données), Redis (cache) et Nextcloud (interface web). Nous utiliserons également Traefik en reverse-proxy pour exposer Nextcloud avec HTTPS.
nextcloud.mon-domaine.fr).data/ : fichiers de Nextcloud (documents, photos, etc.).db/ : données de la base de données MariaDB.redis/ : données du cache Redis.docker-compose.ymlversion.
---
services:
db:
image: mariadb:11.6
container_name: nextcloud-db
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- ./db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: nextcloud_password
networks:
- nextcloud-network
redis:
image: redis:7.4-alpine
container_name: nextcloud-redis
restart: always
volumes:
- ./redis:/data
networks:
- nextcloud-network
nextcloud:
image: nextcloud:30-fpm
container_name: nextcloud-app
restart: always
depends_on:
- db
- redis
volumes:
- ./data:/var/www/html
environment:
- MYSQL_HOST=db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=nextcloud_password
- REDIS_HOST=redis
networks:
- nextcloud-network
web:
image: nginx:alpine
container_name: nextcloud-web
restart: always
depends_on:
- nextcloud
volumes:
- ./data:/var/www/html:ro
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "8080:80"
networks:
- nextcloud-network
networks:
nextcloud-network:
driver: bridge
version n'est plus obligatoire. On utilise --- en début de fichier pour indiquer le début du document YAML.
root_password et nextcloud_password par des mots de passe forts.30-fpm correspond à la dernière version stable de Nextcloud (ajustez si nécessaire).nginx.conf pour servir Nextcloud.
server {
listen 80;
server_name _;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass nextcloud:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ \.(js|css|png|jpg|svg|ico)$ {
expires 1y;
log_not_found off;
add_header Cache-Control "public, immutable";
}
}
nextcloud-db, nextcloud-redis, nextcloud-app et nextcloud-web sont démarrés.
Up.
http://IP_DU_SERVEUR:8080.http://IP_DU_SERVEUR:8080
admin)./var/www/html/data).db (nom du conteneur).nextcloud.nextcloud.docker-compose.yml.Pour exposer Nextcloud en HTTPS avec un certificat Let's Encrypt, vous pouvez utiliser Traefik comme reverse-proxy. Cette section suppose que vous avez déjà installé Traefik (voir le tutoriel Traefik).
web dans docker-compose.yml pour ajouter les labels Traefik.
web:
image: nginx:alpine
container_name: nextcloud-web
restart: always
depends_on:
- nextcloud
volumes:
- ./data:/var/www/html:ro
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
networks:
- nextcloud-network
labels:
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.mon-domaine.fr`)"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.tls.certresolver=le"
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
nextcloud.mon-domaine.fr par votre domaine réel.
nextcloud-network.
https://nextcloud.mon-domaine.fr
🎉 Installation réussie si :
Up (docker compose ps).http://IP:8080.