Nextcloud : Une solution cloud Open-Source sécurisée et modulable
Introduction
Cet article a pour objectif Nextcloud est une plateforme cloud open source permettant l’auto-hébergement et la gestion sécurisée des données. Conçue pour offrir une alternative indépendante aux solutions propriétaires comme Google Drive et Dropbox, elle s’adresse aux particuliers, mais aussi aux entreprises et institutions souhaitant garder le contrôle sur leurs données. Cet article a pour objectif de vous permettre de réaliser une Installation de Nextcloud avec Docker Compose.
Un écosystème complet et open source
Nextcloud est issu du projet OwnCloud et bénéficie d’une large communauté de contributeurs. Cette solution s’intègre facilement aux environnements existants et fonctionne sur :
- Ordinateurs : Windows, macOS, Linux
- Mobiles : Android, iOS
- Services tiers : Amazon S3, Google Drive, Microsoft Azure, Dropbox
Fonctionnalités essentielles
Nextcloud permet une synchronisation et un partage de fichiers sécurisés entre différents appareils et utilisateurs. Cela est rendu possible grâce au client Nextcloud qui permet une synchronisation entre des répertoires locaux et distants. Avec la gestion avancée des droits d’accès, il est possible de définir précisément qui peut consulter, modifier ou partager un fichier.
En plus de ses capacités de stockage, Nextcloud intègre plusieurs outils facilitant le travail en équipe, comme Nextcloud Office, qui permet l’édition collaborative de documents en ligne. Cette fonctionnalité offre une alternative open source aux solutions propriétaires (Goodle Docs ou Word pour ne citer qu’eux).
Nextcloud intègre aussi une solution de visioconférence / messagerie instantanée : Nextcloud Talk, ainsi que pleins d’autres fonctionnalités qui peuvent être configurées (mail, agenda, notes, …).

Plugins et intégrations pour Nextcloud Entreprise
Nextcloud Enterprise est conçu pour s’intégrer parfaitement dans les environnements Microsoft et autres solutions tierces, avec des intégrations avancées pour :
- Microsoft : intégration de Windows Desktop, Outlook, SharePoint, MS Office en ligne et Teams
- Gestion des utilisateurs : intégration Active Directory et authentification LDAP
- Solutions cloud : compatibilité avec Google Workspace et Microsoft 365
- Messagerie et calendrier : connecteur Exchange pour synchronisation avec Outlook
- Stockage : connecteurs pour les solutions cloud comme Amazon S3, Azure Blob Storage et Google Cloud Storage
Pourquoi adopter Nextcloud ?
Nextcloud se distingue par sa flexibilité, via de nombreux connecteurs et plugins, et par son aspect OpenSource permettant un contrôle total des données hébergées.

Pour plus de détails concernant Nextcloud, n’hésitez pas à visiter le site officiel.
Installation de Nextcloud avec Docker Compose
Prérequis
Dans cet article, nous réaliserons l’installation de Nextcloud via Docker Compose sur un serveur Linux. Il est donc nécéssaire d’avoir une installation de Docker fonctionnelle pour poursuivre l’installation.
L’image de Nextcloud sera l’image officielle, disponible à l’adresse suivante : https://hub.docker.com/_/nextcloud/
De nombreuses architectures de Nextcloud sont disponibles lors du déploiement en fonction du type de base de données choisie et de l’utilisation d’un reverse proxy ou non pour y appliquer un certificat SSL / TLS. Ces différentes architectures sont disponibles avec des exemples de configuration sur le projet Github officiel https://github.com/nextcloud/docker.
Cet article se concentrera sur le déploiement de Nextcloud sans proxy, mais le conteneur Nextcloud sera rattaché au réseau d’un Reverse Proxy existant (dans mon cas, Nginx proxy Manager) afin de tout de même sécuriser l’application avec un certificat SSL valide.
Un article dédié à la présentation et à la mise en place De Nginx Proxy Manager sera réalisé prochainement.
Un fichier .env sera généré pour stocker les variables d’environnement sensibles en dehors du fichier docker-compose.yml.
Le déploiement est également possible en créant un nouveau Stack via Portainer.
docker-compose.yml
services:
db:
image: mariadb:latest
deploy:
resources:
limits:
memory: 4096m
reservations:
memory: 160m
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: always
volumes:
- db:/var/lib/mysql
environment:
- MARIADB_AUTO_UPGRADE=1
- MARIADB_DISABLE_UPGRADE_BACKUP=1
- MYSQL_PASSWORD
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_ROOT_PASSWORD
redis:
image: redis:alpine
restart: always
app:
image: nextcloud:apache
deploy:
resources:
limits:
memory: 16g
reservations:
memory: 500m
restart: always
volumes:
- nextcloud:/var/www/html
- ./nextcloud/data:/var/www/html/data
- clamsocket:/var/run/clamav/
- clamav_db:/var/lib/clamav/
environment:
- MYSQL_HOST=db
- MYSQL_PASSWORD
- MYSQL_DATABASE
- MYSQL_USER
- PHP_MEMORY_LIMIT=8192M
- PHP_UPLOAD_LIMIT=100G
- MAX_EXECUTION_TIME=3600
- NEXTCLOUD_TRUSTED_DOMAINS= nextcloud.sudo-ad.fr www.nextcloud.sudo-ad.fr
- OVERWRITECLIURL=https://nextcloud.sudo-ad.fr
- OVERWRITEPROTOCOL=https
- REDIS_HOST=redis
- TRUSTED_PROXIES
links:
- db
depends_on:
- db
- redis
- antivirus
networks:
- nginx-proxy_nginx-proxy
- default
#ports:
# - 8080:80
cron:
image: nextcloud:apache
restart: always
volumes:
- nextcloud:/var/www/html
- ./nextcloud/data:/var/www/html/data
entrypoint: /cron.sh
depends_on:
- db
- redis
antivirus:
image: clamav/clamav:stable_base
volumes:
# Socket
- clamsocket:/var/run/clamav/
# Virus DB
- clamav_db:/var/lib/clamav/
restart: unless-stopped
networks:
- default
volumes:
db:
nextcloud:
clamsocket:
clamav_db:
networks:
nginx-proxy_nginx-proxy:
name: nginx-proxy_nginx-proxy
external: true
Il est ensuite nécessaire de remplir le fichier .env avec les informations suivantes :
MYSQL_USER=username
MYSQL_PASSWORD=password
MYSQL_DATABASE=nextcloud_db
MYSQL_ROOT_PASSWORD=root-password
TRUSTED_PROXIES=172.0.0.0/16 #CIDR notation for the network proxy
Quelques précisions sur le docker-compose :
- MariaDB : Base de données
- Redis : Système de gestion de base de données
- Cron : pour les jobs planifiés du conteneur Nextcloud (tâches de maintenance, …)
- Clamav : antivirus pour scanner les fichiers
- nginx-proxy_nginx-proxy : réseau externe (autre conteneur docker) qui est relié à Nginx Proxy Manager
Toutes les variables d’environnement sont expliquées sur la page officiel du dépôt https://hub.docker.com/_/nextcloud/
Déploiement des conteneurs
Si vous ne possédez pas de sous réseau relié à un reverse proxy, il est possible d’en ajouter un directement à ce fichier en déployer des conteneurs comme Nginx Proxy manager, Nginx ou encore Squid. Il est également possible de décomenter la section suivante pour executer votre serveur nextcloud sur le port 8080 sans certificat SSL :
#ports:
# - 8080:80
Il suffit ensuite de se placer dans le répertoire contenant votre fichier docker-compose.yml et votre fichier .env et de lancer la commande suivante :
docker compose up -d
Il vous suffit ensuite de vous rendre sur l’URL sélectionnée et vous pourrez commencer à utiliser Nextcloud.

Comments are closed