Skip to main content

Nextcloud

Guide Déploiement : Nextcloud AIO avec LDAP, SSL (mkcert) et Docker

Cette documentation détaille l'installation d'une instance Nextcloud All-In-One (AIO) optimisée. La particularité de cette installation réside dans l'utilisation d'un stockage déporté, d'un reverse-proxy Caddy et de certificats SSL locaux via mkcert.

Prérequis système

Avant de commencer, nous installons les outils de base nécessaires à la gestion des dépôts, du réseau et des conteneurs.

apt install curl git wget rsync docker-compose-plugin

Configuration du stockage dédié

Pour garantir les performances, nous dédions un disque entier (/dev/sdb) aux données.

fdisk -l
mkfs -t ext4 /dev/sdb
sudo mkdir -p /mnt/sdb
lsblk -no UUID /dev/sdb  # Note l'UUID
echo "UUID=xxx /mnt/sdb ext4 defaults 0 2" >> /etc/fstab
sudo mount -a

Docker (sur /mnt/sdb)

# Installation Docker
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update && sudo apt install docker-ce docker-ce-cli docker-compose-plugin containerd.io

# Docker sur /mnt/sdb
sudo systemctl stop docker docker.socket
sudo mkdir -p /mnt/sdb/docker

sudo tee /etc/docker/daemon.json <<EOF
{
  "data-root": "/mnt/sdb/docker"
}
EOF

sudo rsync -aP /var/lib/docker/ /mnt/sdb/docker/
sudo systemctl start docker docker.socket

mkcert SSL

# Installation mkcert
wget $(curl -s https://api.github.com/repos/FiloSottile/mkcert/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4)
sudo mv mkcert* /usr/local/bin/mkcert && sudo chmod +x /usr/local/bin/mkcert
mkcert -install
mkcert cloud.eyrode.lan

# Permissions
sudo mkdir -p /var/opt/mkcert
sudo mv cloud.eyrode.lan*.pem /var/opt/mkcert/
sudo chown -R 1000:1000 /var/opt/mkcert
sudo chmod 644 /var/opt/mkcert/*.pem
sudo chmod 600 /var/opt/mkcert/*-key.pem

Nextcloud AIO (HTTPS + Caddy)

sudo mkdir -p /var/opt/nextcloud/all-in-one
cd /var/opt/nextcloud/all-in-one
git clone https://github.com/nextcloud/all-in-one.git .

compose.yaml FINAL (copie-colle complet) :

name: nextcloud-aio
services:
  nextcloud-aio-mastercontainer:
    image: ghcr.io/nextcloud-releases/all-in-one:latest
    init: true
    restart: always
    container_name: nextcloud-aio-mastercontainer
    volumes:
      - nextcloud_aio_mastercontainer:/mnt/docker-aio-config
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /var/opt/mkcert:/mnt/certs:ro
    ports:
      - 8080:8080
    environment:
      APACHE_PORT: 11000
      APACHE_IP_BINDING: 0.0.0.0
      NEXTCLOUD_DOMAIN: cloud.eyrode.lan
      SKIP_DOMAIN_VALIDATION: true
      SSL_CERTIFICATE_FILE: /mnt/certs/cloud.eyrode.lan.pem
      SSL_CERTIFICATE_KEY_FILE: /mnt/certs/cloud.eyrode.lan-key.pem

  caddy:
    image: caddy:alpine
    restart: always
    container_name: caddy
    volumes:
      - caddy_certs:/certs
      - caddy_config:/config
      - caddy_data:/data
      - caddy_sites:/srv
      - /var/opt/mkcert:/var/opt/mkcert:ro
    network_mode: host
    configs:
      - source: Caddyfile
        target: /etc/caddy/Caddyfile

configs:
  Caddyfile:
    content: |
      cloud.eyrode.lan {
        reverse_proxy localhost:11000
        tls /var/opt/mkcert/cloud.eyrode.lan.pem /var/opt/mkcert/cloud.eyrode.lan-key.pem
      }

volumes:
  nextcloud_aio_mastercontainer:
    name: nextcloud_aio_mastercontainer
  caddy_certs:
  caddy_config:
  caddy_data:
  caddy_sites:

Lancement :

docker compose up -d

Dépannage (Si nécessaire)

Port 443 bloqué :

sudo systemctl restart docker
docker system prune -af
docker compose up -d

Interface AIO : https://cloud.eyrode.lan:8080 Clique "Start all containers"5min → tout vert ✅

Accès Final

https://cloud.eyrode.lan           # Nextcloud (cadenas vert mkcert)
https://cloud.eyrode.lan:8080      # Interface AIO

Logs de diagnostic

docker compose logs nextcloud-aio-mastercontainer
docker compose logs caddy
docker ps  # Tous les conteneurs doivent être "Up"

🔐 Récupération Mot de Passe Admin

Méthode 1 : Interface AIO (RECOMMANDÉE) https://cloud.eyrode.lan:8080 → "Access details" → Password admin affiché !

Méthode 2 : Reset CLI (syntaxe correcte)

docker exec -u www-data -e OC_PASS="MonSuperPass123!" nextcloud-aio-nextcloud php occ user:add tanny --password-from-env --group=admin --display-name="Eythan"