Rayon Fichiers et photos

Nextcloud

Votre cloud complet : fichiers, agenda, contacts.

Ajouter à mon serveurGénérer le docker-composeLire le guide pas à pasComparer avec les alternativesDocumentation officielle

À 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

  1. 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.
  2. Créez ensuite un compte par personne : évitez d’utiliser le compte admin au quotidien.
  3. Installez l’application Nextcloud sur votre téléphone et votre ordinateur pour synchroniser vos fichiers.
  4. 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