🎯 TUTORIEL PAS À PAS

☁️ Installation de Nextcloud avec Docker Compose

📅 Mis à jour : Août 2026 ⏱️ Durée : 20 min 📋 Niveau : Intermédiaire 🐳 Docker 📦 Docker Compose ☁️ Nextcloud

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.

📌 Prérequis :

1 Préparation du projet

Étape 1 – Créer le répertoire du projet
Créez un répertoire dédié pour le projet Nextcloud.
$ mkdir -p ~/nextcloud && cd ~/nextcloud
Étape 2 – Créer les répertoires de données
Créez les dossiers qui seront montés comme volumes pour persister les données.
$ mkdir -p data db redis
📂 Organisation :
  • data/ : fichiers de Nextcloud (documents, photos, etc.).
  • db/ : données de la base de données MariaDB.
  • redis/ : données du cache Redis.

2 Création du fichier docker-compose.yml

Étape 1 – Créer le fichier docker-compose.yml
Créez le fichier de composition avec les services Nextcloud, MariaDB et Redis, en utilisant la syntaxe moderne sans version.
$ nano docker-compose.yml
---
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
📌 Syntaxe moderne : La directive version n'est plus obligatoire. On utilise --- en début de fichier pour indiquer le début du document YAML.
⚠️ Modifications nécessaires :
  • Remplacez root_password et nextcloud_password par des mots de passe forts.
  • La version 30-fpm correspond à la dernière version stable de Nextcloud (ajustez si nécessaire).
Étape 2 – Créer le fichier de configuration Nginx
Créez le fichier nginx.conf pour servir Nextcloud.
$ nano nginx.conf
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";
    }
}
🔍 Explication : Ce fichier configure Nginx pour servir les fichiers statiques et forwarder les requêtes PHP vers le conteneur Nextcloud (FPM).

3 Démarrage de la stack

Étape 1 – Lancer les conteneurs
$ docker compose up -d
✅ Les conteneurs nextcloud-db, nextcloud-redis, nextcloud-app et nextcloud-web sont démarrés.
Étape 2 – Vérifier l'état des conteneurs
$ docker compose ps
✅ Les 4 conteneurs doivent être Up.
Étape 3 – Accès à Nextcloud
Depuis un navigateur, accédez à http://IP_DU_SERVEUR:8080.
http://IP_DU_SERVEUR:8080
Vous devriez voir la page de bienvenue de Nextcloud.

4 Configuration initiale de Nextcloud

Étape 1 – Créer un compte administrateur
Depuis l'interface web, créez un compte administrateur en renseignant :
Étape 2 – Vérifier la configuration
Une fois connecté, Nextcloud vous proposera peut-être des ajustements (ex: configurer une adresse de courriel, installer des applications). Ne vous en préoccupez pas pour l'instant.

5 (Optionnel) Sécuriser avec HTTPS via Traefik

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).

Étape 1 – Ajouter les labels Traefik au service web
Modifiez le service 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"
⚠️ Modifications nécessaires : Remplacez nextcloud.mon-domaine.fr par votre domaine réel.
Étape 2 – Relancer la stack avec Traefik
Si vous utilisez Traefik en bare-metal (comme dans le tutoriel dédié), assurez-vous que Traefik est en cours d'exécution sur le même réseau ou qu'il peut accéder aux conteneurs via le réseau nextcloud-network.
# Pour utiliser le réseau de Traefik, vous pouvez connecter votre stack :
$ docker compose down
$ docker compose up -d
Étape 3 – Accéder à Nextcloud en HTTPS
https://nextcloud.mon-domaine.fr
✅ Nextcloud est maintenant accessible en HTTPS !

Test de validation

🎉 Installation réussie si :


📚 Ressources complémentaires


← Retour au portail
BTS SIO – Lycée NDLP Avranches – Tutoriel Nextcloud v1.0