À quoi ça sert ?
Nextcloud est une suite complète : stockage et partage de fichiers synchronisés sur tous vos appareils, agenda, contacts, notes, et des centaines d'extensions. C'est l'alternative libre la plus complète à Google Drive.
Pour qui ?
Ceux qui veulent quitter Google Drive ou Dropbox et partager des fichiers en famille.
Bon à savoir
Version majeure fixée (35). Pour passer à la suivante, changez 35 en 36 dans les deux services, une version à la fois, après une sauvegarde.
Après l'installation
- Nextcloud s’installe tout seul au premier démarrage (2 à 3 minutes). Connectez-vous avec l’utilisateur admin et le mot de passe ADMIN_PASSWORD du fichier .env, puis changez-le dans Paramètres personnels.
- Créez ensuite un compte par personne : évitez d’utiliser le compte admin au quotidien.
- Installez l’application Nextcloud sur votre téléphone et votre ordinateur pour synchroniser vos fichiers.
- Pour un Nextcloud rapide (tâches de fond, miniatures, applis inutiles) : https://marketcompose.com/fr/guides/installer-nextcloud/
Le docker-compose
Exemple derrière Traefik, avec une explication sur chaque ligne. Pour l'adapter à votre cas (Nginx Proxy Manager, port local…), utilisez le générateur.
# docker-compose.yml : Nextcloud
# Ce fichier décrit les « conteneurs » à lancer : chaque conteneur est une petite
# boîte isolée qui contient un programme. Lancez-le avec : docker compose up -d
services:
# Conteneur principal : l'application Nextcloud
nextcloud:
# Le programme à télécharger (l'« image »), avec sa version
image: nextcloud:35-apache
container_name: nextcloud
# Redémarre tout seul après une panne ou un redémarrage du serveur
restart: unless-stopped
# Démarre ces conteneurs avant celui-ci
depends_on:
- db
- redis
# Réglages de l'application. Les valeurs ${...} viennent du fichier .env
environment:
POSTGRES_HOST: db
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: "${DB_PASSWORD}"
REDIS_HOST: redis
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: "${ADMIN_PASSWORD}"
NEXTCLOUD_TRUSTED_DOMAINS: cloud.mondomaine.fr
OVERWRITEPROTOCOL: https
TRUSTED_PROXIES: "172.16.0.0/12 127.0.0.1"
TZ: Europe/Paris
# Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
# Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
volumes:
- ./html:/var/www/html
# Réseau partagé avec le reverse proxy pour qu'il puisse joindre l'application
networks:
- traefik
- default
# Indique à Traefik de publier l'application sur https://cloud.mondomaine.fr avec un certificat HTTPS
labels:
- traefik.enable=true
- traefik.http.routers.nextcloud.rule=Host(`cloud.mondomaine.fr`)
- traefik.http.routers.nextcloud.entrypoints=websecure
- traefik.http.routers.nextcloud.tls.certresolver=letsencrypt
- traefik.http.services.nextcloud.loadbalancer.server.port=80
- traefik.docker.network=traefik
# Les applis d'agenda et de contacts cherchent /.well-known/caldav : redirection en HTTPS vers /remote.php/dav/
- traefik.http.routers.nextcloud.middlewares=nextcloud-dav
- traefik.http.middlewares.nextcloud-dav.redirectregex.regex=^https://([^/]+)/\.well-known/(?:card|cal)dav
- traefik.http.middlewares.nextcloud-dav.redirectregex.replacement=https://$${1}/remote.php/dav/
- traefik.http.middlewares.nextcloud-dav.redirectregex.permanent=true
# Conteneur annexe « cron » (utilisé par l'application, pas accessible de l'extérieur)
cron:
# Le programme à télécharger (l'« image »), avec sa version
image: nextcloud:35-apache
container_name: nextcloud-cron
entrypoint: /cron.sh
# Redémarre tout seul après une panne ou un redémarrage du serveur
restart: unless-stopped
# Démarre ces conteneurs avant celui-ci
depends_on:
- db
- redis
# Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
# Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
volumes:
- ./html:/var/www/html
# Conteneur annexe « db » (utilisé par l'application, pas accessible de l'extérieur)
db:
# Le programme à télécharger (l'« image »), avec sa version
image: postgres:17-alpine
container_name: nextcloud-db
# Redémarre tout seul après une panne ou un redémarrage du serveur
restart: unless-stopped
# Réglages de l'application. Les valeurs ${...} viennent du fichier .env
environment:
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: "${DB_PASSWORD}"
# Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
# Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
volumes:
- ./db:/var/lib/postgresql/data
# Conteneur annexe « redis » (utilisé par l'application, pas accessible de l'extérieur)
redis:
# Le programme à télécharger (l'« image »), avec sa version
image: redis:7-alpine
container_name: nextcloud-redis
# Redémarre tout seul après une panne ou un redémarrage du serveur
restart: unless-stopped
# Empêche un programme piraté de devenir administrateur
security_opt:
- no-new-privileges:true
# Le réseau du reverse proxy existe déjà : on s'y raccroche
networks:
traefik:
external: true