OffshoreVps
Tutoriels10 oct. 20269 min de lecturePar l’équipe OffshoreVps

Auto-héberger Nextcloud sur un VPS avec Docker Compose

Faites tourner votre propre cloud privé pour fichiers, agendas et contacts : fichier Compose, reverse proxy HTTPS, domaines de confiance, tâches cron et sauvegardes.

Nextcloud vous offre la synchronisation de fichiers, les agendas, les contacts et l'édition de documents sur un serveur que vous contrôlez, au lieu de confier vos fichiers à un grand fournisseur cloud. Voici comment l'exécuter sur un VPS avec Docker Compose.

Fenêtre de terminal sur un VPS montrant les commandes utilisées pour auto-héberger Nextcloud, à commencer par « mkdir -p ~/nextcloud && cd ~/nextcloud »
Le type de commandes que vous exécuterez sur votre serveur dans ce guide.

Avant de commencer

  • Un VPS avec 2 vCPU et 4 Go de RAM est un départ confortable. Le stockage est la principale contrainte : choisissez donc une taille de disque adaptée à vos fichiers.
  • Un domaine pointant vers le serveur, expliqué dans notre guide DNS.
  • Docker installé, voir installer Docker sur Ubuntu.

1. Le fichier Compose

mkdir -p ~/nextcloud && cd ~/nextcloud
cat > compose.yaml <<'EOF'
services:
  db:
    image: mariadb:11
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: change-me-root
      MYSQL_PASSWORD: change-me-db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
    volumes:
      - db:/var/lib/mysql
  redis:
    image: redis:7-alpine
    restart: unless-stopped
  app:
    image: nextcloud:stable
    restart: unless-stopped
    depends_on: [db, redis]
    ports:
      - "127.0.0.1:8080:80"
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: change-me-db
      REDIS_HOST: redis
    volumes:
      - nc:/var/www/html
volumes:
  db:
  nc:
EOF
docker compose up -d

Changez les trois mots de passe avant de le lancer. Utilisez de longues chaînes aléatoires.

Les étapes de ce guide dans l’ordre : 1. Avant de commencer ; 2. 1. Le fichier Compose ; 3. 2. Placer HTTPS devant ; 4. 3. Terminer la configuration ; 5. 4. Le garder en bonne santé
Les étapes de ce guide, dans l’ordre.

2. Placez HTTPS devant

Ajoutez un bloc server Nginx qui fait proxy vers 127.0.0.1:8080, puis lancez Certbot comme dans notre guide Nginx. Le bloc de proxy a besoin de ces lignes pour que Nextcloud voie le bon protocole et que les gros envois fonctionnent :

client_max_body_size 2G;
location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
}

3. Terminez la configuration

Ouvrez votre domaine et créez le compte administrateur. Ajoutez ensuite votre domaine à la liste de confiance et définissez les paramètres du proxy :

docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=cloud.example.com
docker compose exec -u www-data app php occ config:system:set overwriteprotocol --value=https

4. Gardez-le en bonne santé

  • Mises à jour : docker compose pull && docker compose up -d, une version majeure à la fois.
  • Tâches de fond : passez à Cron dans les paramètres d'administration et ajoutez une entrée cron sur l'hôte qui exécute cron.php toutes les cinq minutes.
  • Sauvegardes : enregistrez les deux volumes et un export de la base de données. Voir comment sauvegarder un VPS.
  • Authentification à deux facteurs : activez l'application TOTP pour chaque compte.