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