Quel VPS pour Nextcloud ?
Nextcloud a besoin d'un peu de mémoire pour PHP et sa base de données. Comptez le VPS Start (2 Go de RAM, 20 Go SSD) pour une ou deux personnes qui synchronisent surtout des documents, et le VPS Plus (4 Go, 40 Go) pour une famille, des photos ou quelques applications en plus. L'espace disque de nos offres monte à 100 Go : c'est confortable pour des documents, juste pour une photothèque complète.
Choisissez un VPS KVM pour Docker, et suivez d'abord notre guide Docker sur un VPS IPv6 : il installe Docker, le service NAT64 et le réglage IPv6 dont ce guide a besoin.
1. Le nom de domaine et l'accès IPv4
Créez un enregistrement AAAA, par exemple cloud.mondomaine.fr, vers l'adresse IPv6 du VPS. Deux cas se présentent ensuite :
- Tous vos appareils ont l'IPv6 (box et forfait mobile français récents) : rien d'autre à faire, Caddy obtiendra tout seul un certificat Let's Encrypt.
- Certains n'ont que l'IPv4 (Wi-Fi d'hôtel, réseau d'entreprise) : passez le domaine par Cloudflare avec le proxy activé, comme dans le guide du VPS IPv6, et générez un certificat d'origine Cloudflare (onglet SSL/TLS, « Origin Server »).
Avec Cloudflare en offre gratuite, une requête ne peut pas dépasser 100 Mo. Ce n'est pas gênant en pratique : l'interface web et les clients Nextcloud envoient les gros fichiers en petits morceaux.
2. Préparer les fichiers
mkdir -p /srv/nextcloud/certs && cd /srv/nextcloud
Créez un fichier .env avec des mots de passe longs et différents (openssl rand -base64 24 en génère un) :
DOMAINE=cloud.mondomaine.fr
MYSQL_ROOT_PASSWORD=changez-moi-1
MYSQL_PASSWORD=changez-moi-2
chmod 600 .env
3. Le fichier docker-compose.yml
services:
db:
image: mariadb:11
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- db:/var/lib/mysql
networks: [nc]
redis:
image: redis:alpine
restart: unless-stopped
networks: [nc]
app:
image: nextcloud:stable-apache
restart: unless-stopped
depends_on: [db, redis]
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
REDIS_HOST: redis
NEXTCLOUD_TRUSTED_DOMAINS: ${DOMAINE}
OVERWRITEPROTOCOL: https
TRUSTED_PROXIES: 172.16.0.0/12 fd00::/8
volumes:
- nextcloud:/var/www/html
networks: [nc]
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./certs:/certs:ro
- caddy:/data
networks: [nc]
networks:
nc:
enable_ipv6: true
volumes:
db:
nextcloud:
caddy:
Les volumes nommés gardent vos données quand les conteneurs sont recréés lors des mises à jour.
4. Le Caddyfile
Créez /srv/nextcloud/Caddyfile. Sans Cloudflare, Caddy obtient et renouvelle seul un certificat Let's Encrypt :
cloud.mondomaine.fr {
reverse_proxy app:80
redir /.well-known/carddav /remote.php/dav 301
redir /.well-known/caldav /remote.php/dav 301
}
Avec Cloudflare, enregistrez le certificat d'origine dans certs/origin.pem et sa clé dans certs/origin.key, puis ajoutez cette ligne juste après l'accolade ouvrante :
tls /certs/origin.pem /certs/origin.key
Dans Cloudflare, réglez alors le chiffrement SSL/TLS sur « Full (strict) ».
5. Démarrer et terminer l'installation
docker compose up -d
docker compose logs -f app
Ouvrez https://cloud.mondomaine.fr : Nextcloud vous demande de créer le compte administrateur. La base de données est déjà configurée par les variables du fichier Compose.
6. Les tâches de fond
Nextcloud a besoin d'exécuter régulièrement des tâches de maintenance. Ajoutez cette ligne à la crontab de root (crontab -e) :
*/5 * * * * docker compose -f /srv/nextcloud/docker-compose.yml exec -T -u www-data app php -f /var/www/html/cron.php
Dans Nextcloud, ouvrez Paramètres d'administration, Paramètres de base, et choisissez « Cron ». Installez ensuite les applications Nextcloud sur vos ordinateurs et votre téléphone, et connectez-les à votre adresse.
Mettre à jour
cd /srv/nextcloud
docker compose pull
docker compose up -d
Nextcloud ne sait pas sauter de version majeure : l'image stable suit les versions dans l'ordre, mettez donc à jour régulièrement plutôt qu'une fois par an.