Google Drive et Dropbox sont pratiques, mais vos données ne vous appartiennent pas. Nextcloud est la solution open-source pour synchroniser fichiers, agendas et contacts. Mais attention : sans une configuration soignée (Cache Redis, Base de données dédiée), l'interface peut être lente. Voici comment déployer une instance performante.
1. L'Architecture
Pour une installation robuste, nous n'utiliserons pas la base de données SQLite intégrée (trop lente). Nous allons déployer 3 conteneurs :
- App : Le serveur web Nextcloud.
- MariaDB : La base de données performante.
- Redis : Le cache mémoire (indispensable pour la fluidité).
2. Le fichier docker-compose.yml
Créez un dossier nextcloud et le fichier YAML suivant. (Nous supposons que vous utilisez Traefik comme vu dans le tutoriel précédent, sinon décommentez la section "ports").
version: '3.8'
services:
db:
image: mariadb:10.6
container_name: nextcloud_db
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=mot_de_passe_root_robuste
- MYSQL_PASSWORD=mot_de_passe_user
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- default
redis:
image: redis:alpine
container_name: nextcloud_redis
restart: always
networks:
- default
app:
image: nextcloud:latest
container_name: nextcloud_app
restart: always
depends_on:
- db
- redis
volumes:
- nextcloud_data:/var/www/html
environment:
- MYSQL_PASSWORD=mot_de_passe_user
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
- REDIS_HOST=redis
# Optimisations vitales pour Traefik
- OVERWRITEHOST=cloud.mondomaine.fr
- OVERWRITEPROTOCOL=https
networks:
- default
- proxy # Le réseau de Traefik
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=myresolver"
# Middleware pour corriger les headers CalDAV/CardDAV
- "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.routers.nextcloud.middlewares=nextcloud-dav"
volumes:
db_data:
nextcloud_data:
networks:
proxy:
external: true
3. Optimisation Post-Installation (Le secret de la vitesse)
Une fois lancé, Nextcloud fonctionnera, mais il vous affichera des avertissements de performance. Corrigeons-les.
A. Passer les tâches de fond en "Cron" (et non AJAX)
Par défaut, Nextcloud lance ses tâches de maintenance à chaque chargement de page (AJAX), ce qui ralentit l'utilisateur. Passons au vrai Cron système.
1. Dans l'interface Web Nextcloud : Paramètres > Paramètres de base > Tâches de fond -> Cochez Cron.
2. Sur votre serveur (Hôte), ajoutez cette ligne dans votre crontab (crontab -e) :
*/5 * * * * docker exec -u www-data nextcloud_app php -f /var/www/html/cron.php
Cela force le conteneur à exécuter le script de maintenance toutes les 5 minutes sans ralentir l'interface.
B. Augmenter la limite mémoire PHP
Par défaut, PHP est limité à 512Mo. Pour les gros transferts, c'est peu. Modifions cela sans recréer l'image.
Ajoutez cette ligne dans la section environment: du service app dans le docker-compose :
- PHP_MEMORY_LIMIT=1024M
- PHP_UPLOAD_LIMIT=10G
4. Configuration du Reverse Proxy (Trusted Proxies)
Si vous êtes derrière Traefik, Nextcloud va se plaindre qu'il ne connait pas l'IP du proxy. Il faut éditer le fichier de config.
docker exec -u www-data nextcloud_app php occ config:system:set trusted_proxies 0 --value="172.0.0.0/8"
Cette commande occ (la CLI de Nextcloud) autorise toutes les IP privées Docker à agir comme proxy.
5. La maintenance (Mise à jour)
Mettre à jour Nextcloud Docker est simple, mais il ne faut pas sauter les étapes (versions majeures une par une).
docker compose pull
docker compose up -d
# Attendre le démarrage puis lancer la migration DB
docker exec -u www-data nextcloud_app php occ upgrade
Conclusion
Vous avez maintenant un cloud privé aussi rapide que Dropbox, mais hébergé chez vous. Grâce à Redis, la navigation dans les galeries photos est instantanée, et grâce à la base MariaDB, vous pouvez gérer des milliers de fichiers sans ralentissement.