Nextcloud est une solution Cloud open source qui a fait ses preuves. En plus des clients pour les systèmes d’ex­ploi­ta­tion sur bureau et sur mobile, le logiciel propose également un composant serveur. Découvrez avec nous comment installer un serveur Nextcloud dans un en­vi­ron­ne­ment Docker.

Free Cloud Server Trial
Serveurs Virtuels Privés de niveau en­tre­prise
  • Serveurs pour les dé­ve­lop­peurs basés sur KVM
  • Évo­lu­ti­vité flexible, jusqu'au Cloud d'en­tre­prise
  • Pay-as-you-go : fac­tu­ra­tion à la minute, selon l'uti­li­sa­tion

Installer Nextcloud sous Docker

Nextcloud est une solution Cloud open source issue du frac­tion­ne­ment du projet ownCloud. Ses fonc­tion­na­li­tés sont com­pa­rables à celles de solutions Cloud pro­prié­taires comme Microsoft 365 ou Google Workspace. Nextcloud syn­chro­nise les données telles que les ca­len­driers et les contacts entre les dif­fé­rents uti­li­sa­teurs et appareils. En plus de cette syn­chro­ni­sa­tion obli­ga­toire des fichiers, des fonc­tion­na­li­tés liées à la col­la­bo­ra­tion et à la com­mu­ni­ca­tion propres à une équipe sont également dis­po­nibles. La stratégie dite de « Federal Cloud », qui existe depuis 2020, est également basée sur Nextcloud.

Comme la plupart des solutions Cloud équi­va­lentes, un composant serveur Nextcloud est proposé, mais aussi des clients pour les systèmes d’ex­ploi­ta­tion sur bureau et sur mobile. Le serveur Nextcloud permet la gestion des données et la com­mu­ni­ca­tion avec les clients, tout en mettant à dis­po­si­tion une interface Web in­dé­pen­dante de ceux-ci.

Nous allons vous montrer comment installer un serveur Nextcloud sur Ubuntu (Linux). Pour ce faire, nous allons utiliser Docker Compose et nous référer à une ins­tal­la­tion sur une in­fras­truc­ture Cloud. Vous pouvez également installer le serveur sur votre propre matériel et con­fi­gu­rer, par exemple, Nextcloud sur votre appareil Raspberry Pi.

Conseil

Nextcloud et ownCloud partagent de nombreux points communs. Lisez notre article de com­pa­rai­son entre ownCloud et Nextcloud pour découvrir leurs dif­fé­rences.

Ar­chi­tec­ture de Nextcloud sur Docker

Quels sont les com­po­sants du serveur Nextcloud sous Docker ? Comment sont-ils liés entre eux ? En plus du logiciel Nextcloud pro­pre­ment dit, trois services con­te­neu­ri­sés sup­plé­men­taires peuvent être utilisés. Pour pro­vi­sion­ner le réseau de con­te­neurs et le contrôler comme une seule entité, nous allons utiliser l’outil Docker Compose. Voici quelques-uns des dif­fé­rents services qu’il propose :

  1. Proxy inverse Nginx : essentiel pour la création de con­nexions HTTPS cryptées lors de l’accès à Nextcloud
  2. Let’s Encrypt : utilisé pour l’au­to­ma­ti­sa­tion de la con­fi­gu­ra­tion de cer­ti­fi­cats SSL
  3. MariaDB : permet de stocker les données générées (côté serveur) par l’uti­li­sa­tion de Nextcloud
  4. Serveur Nextcloud : fournit les vé­ri­tables fonc­tion­na­li­tés de Nextcloud en com­mu­ni­quant avec les clients et en hé­ber­geant l’interface Web.

Comment préparer l’ins­tal­la­tion du serveur Nextcloud ?

Une fois le système d’ex­ploi­ta­tion Ubuntu (Linux) cor­rec­te­ment configuré, commencez par installer le moteur Docker et l’outil Docker Compose. Le moteur Docker fournit les prin­ci­pales fonc­tion­na­li­tés des con­te­neurs et l’outil Docker Compose vous permet de gérer tous les réseaux de con­te­neurs couplés. Si le moteur Docker et l’outil Docker Compose sont déjà installés sur votre appareil, vous pouvez passer cette étape.

Installer le moteur Docker sur Ubuntu

Nous allons ici vous expliquer comment installer le moteur Docker sous Ubuntu (Linux) en suivant les ins­truc­tions d’ins­tal­la­tion of­fi­cielles. Pour toute autre dis­tri­bu­tion de Linux, les ins­truc­tions cor­res­pon­dantes sont dis­po­nibles sur le site Web de Docker. Com­men­çons par l’ins­tal­la­tion du moteur Docker.

  1. Le cas échéant, supprimez la version de Docker préa­la­ble­ment installée :
sudo apt-get remove docker docker-engine docker.io containerd runc
  1. Mettez à jour le programme d’ins­tal­la­tion :
sudo apt-get update
  1. Préparez les ré­fé­ren­tiels :
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
  1. Ajoutez la clé GPG of­fi­cielle de Docker :
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. Con­fi­gu­rez un ré­fé­ren­tiel Docker stable :
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. Mettez à jour les ré­fé­ren­tiels :
sudo apt-get update
  1. Installez le moteur Docker et ses in­ter­dé­pen­dances :
sudo apt-get install docker-ce docker-ce-cli containerd.io
  1. Exécutons main­te­nant le conteneur « Hello World » à des fins de test :

Si vous avez bien installé le moteur Docker, le conteneur s’exécute (le message cor­res­pon­dant s’affiche alors).

sudo docker run hello-world

Installer l’outil Docker Compose sur Ubuntu

Passons main­te­nant à l’ins­tal­la­tion de l’outil Docker Compose. Le processus d’ins­tal­la­tion est plus simple que l’ins­tal­la­tion du moteur Docker, avec une ampleur moins im­por­tante. Vous trouverez ci-dessous les étapes concrètes que vous devez suivre.

  1. Activez le ré­fé­ren­tiel universel d’Ubuntu :
sudo add-apt-repository universe
  1. Mettez à jour le ges­tion­naire de paquets :
sudo apt update
  1. Installez l’outil Docker Compose :
sudo apt install docker-compose
  1. Vérifiez la bonne ins­tal­la­tion de l’outil Docker Compose :
docker-compose --version

Si un numéro de version s’affiche, cela signifie que votre outil Docker Compose a été installé cor­rec­te­ment.

Procéder à l’ins­tal­la­tion du serveur Nextcloud

Une fois le moteur Docker et l’outil Docker Compose installés, la véritable con­fi­gu­ra­tion de Nextcloud peut commencer. Ensemble, nous allons pa­ra­mé­trer des con­te­neurs Docker in­di­vi­duels pour les dif­fé­rents services. Vous devez utiliser deux fichiers pour con­fi­gu­rer les con­te­neurs, les volumes et les réseaux Docker dont vous avez besoin :

Fichier Ex­pli­ca­tion
docker-compose.yaml Ins­truc­tions au format YAML con­cer­nant la mise en place de l’ap­pli­ca­tion multi-con­te­neurs avec l’outil Docker Compose
.env Fichier texte contenant des variables d’en­vi­ron­ne­ment (avec une dé­fi­ni­tion de variable par ligne)

Comme nous venons de le men­tion­ner, l’outil Docker Compose permet de gérer des ap­pli­ca­tions multi-con­te­neurs. Il suffit pour cela d’utiliser des ins­truc­tions dans le cadre de l’outil Docker Compose afin de définir la manière dont l’ap­pli­ca­tion est struc­tu­rée et dont les dif­fé­rents com­po­sants in­te­ra­gis­sent entre eux. Les ins­truc­tions de l’outil Docker Compose décrivent les dif­fé­rents services, pa­ra­mètres et éléments Docker. Ils sont rédigés en langage YAML (« Yet Another Markup Language », ce qui signifie lit­té­ra­le­ment « Encore un autre langage de balisage »). Nous allons pro­gres­si­ve­ment créer le fichier docker-compose.yaml dont il est question ici.

En plus de ce fichier docker-compose.yaml, un fichier sup­plé­men­taire est né­ces­saire : celui-ci contient les variables d’en­vi­ron­ne­ment à intégrer aux ins­truc­tions relatives à l’outil Docker Compose. Ces variables d’en­vi­ron­ne­ment et leurs valeurs sont stockées, par défaut, dans le fichier .env qui se trouve dans le dossier du projet. Ce fichier .env n’étant pas inclus dans le système de contrôle de version, vos données sensibles (comme vos mots de passe) sont ainsi protégées contre toute di­vul­ga­tion ac­ci­den­telle.

En utilisant ce fichier .env, vous pouvez fa­ci­le­ment définir plusieurs pa­ra­mètres pour dif­fé­rents en­vi­ron­ne­ments d’ap­pli­ca­tion. Si vous souhaitez par exemple utiliser des pa­ra­mètres dif­fé­rents pour votre site en direct et votre site de staging, il vous suffit de modifier le fichier .env cor­res­pon­dant.

Créer les struc­tures né­ces­saires au bon fonc­tion­ne­ment du serveur Nextcloud

Quelques éléments struc­tu­rels sont né­ces­saires pour commencer à installer le serveur Nextcloud. Pour créer ces derniers, il suffit de suivre les étapes ci-dessous.

  1. Création d’un dossier de projet. Créez un dossier nextcloud-docker dans le ré­per­toire personnel de votre interface uti­li­sa­teur :
mkdir ~/nextcloud-docker/
  1. Création des fichiers. Créez les fichiers docker-compose.yaml et .env dans le dossier du projet :
touch ~/nextcloud-docker/docker-compose.yaml
touch ~/nextcloud-docker/.env
  1. Création d’un réseau Docker. Utilisez la commande docker pour créer un nouveau réseau, les quatre con­te­neurs com­mu­ni­quant au sein de celui-ci :
docker network create nextcloud_network

Une fois ces struc­tures créées, pour­sui­vez l’ins­tal­la­tion de votre serveur Nextcloud.

Con­fi­gu­rer un proxy inverse pour le serveur Nextcloud

Pour installer votre serveur Nextcloud, commencez par con­fi­gu­rer un proxy inverse. Vous devez pour cela utiliser Nginx. Comme votre ap­pli­ca­tion est assemblée à partir de plusieurs con­te­neurs, le processus d’ins­tal­la­tion se déroule ma­jo­ri­tai­re­ment dans le fichier docker-compose.yaml. Ici, nous allons vous expliquer dans le détail comment modifier ce fichier. Suivez le même modèle pour les étapes d’ins­tal­la­tion qui suivent.

  1. Ouvrir le fichier docker-compose.yaml pour le modifier.

La commande suivante permet d’ouvrir le fichier encore vide dans l’éditeur « Nano » :

nano ~/nextcloud-docker/docker-compose.yaml
  1. Insérer le bloc de code suivant dans l’éditeur « Nano » et en­re­gis­trer le fichier.

Pour fermer le fichier, vous pouvez utiliser le raccourci clavier suivant : [Ctrl] + [X]. Une question relative à l’en­re­gis­tre­ment du fichier s’affiche ; répondez-y par « y », pour « Yes » (« Oui »). Pour confirmer l’uti­li­sa­tion du nom de fichier existant, appuyez sur la touche [Entrée].

Si vous le souhaitez, vous pouvez aussi laisser l’éditeur ouvert et utiliser le raccourci clavier [Ctrl] + [O] (« Write out », soit « Rédiger dans le fichier ») pour écrire le texte de l’éditeur dans votre fichier.

version: ’3’
services:
    proxy:
        image: jwilder/nginx-proxy:alpine
        labels:
            - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
        container_name: nextcloud-proxy
        networks:
            - nextcloud_network
        ports:
            - 80:80
            - 443:443
        volumes:
            - ./proxy/conf.d:/etc/nginx/conf.d:rw
            - ./proxy/vhost.d:/etc/nginx/vhost.d:rw
            - ./proxy/html:/usr/share/nginx/html:rw
            - ./proxy/certs:/etc/nginx/certs:ro
            - /etc/localtime:/etc/localtime:ro
            - /var/run/docker.sock:/tmp/docker.sock:ro
        restart: unless-stopped

Que sig­ni­fient les dif­fé­rentes entrées ? En premier lieu, vous demandez à l’outil Docker Compose de créer un nouveau service, intitulé proxy, en utilisant une image Nginx basée sur Alpine (Linux). Vous lui indiquez également que le proxy inverse doit com­mu­ni­quer avec les autres services par l’in­ter­mé­diaire du réseau Nextcloud nextcloud_network.

Vous devez ensuite créer une cor­res­pon­dance entre les ports HTTP et HTTPS standard 80 et 443 du système hôte et le conteneur. Toute connexion entrante passe alors par ce proxy. Pour la dernière étape de cette con­fi­gu­ra­tion, vous devez créer dif­fé­rents volumes Docker et indiquer la nécessité d’un re­dé­mar­rage au­to­ma­tique du proxy inverse si celui-ci n’a pas été clai­re­ment arrêté.

Con­fi­gu­rer le service « Let’s Encrypt » pour le serveur Nextcloud

Il est main­te­nant temps d’installer « Let’s Encrypt ». Vous pourrez ainsi chiffrer vos com­mu­ni­ca­tions avec le serveur Nextcloud grâce au protocole HTTPS.

  1. Ouvrir le fichier docker-compose.yaml pour le modifier :
nano ~/nextcloud-docker/docker-compose.yaml
  1. Ajouter un bloc de service :

Suivez les mêmes étapes que dans la section pré­cé­dente en prenant garde à la ta­bu­la­tion : le début du bloc com­men­çant par « let­sen­crypt: » doit en effet se trouver au même niveau que « proxy: ». Cette règle est également valable pour les blocs de service suivants.

letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nextcloud-letsencrypt
    depends_on:
        - proxy
    networks:
        - nextcloud_network
    volumes:
        - ./proxy/certs:/etc/nginx/certs:rw
        - ./proxy/vhost.d:/etc/nginx/vhost.d:rw
        - ./proxy/html:/usr/share/nginx/html:rw
        - /etc/localtime:/etc/localtime:ro
        - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped

Dé­fi­nis­sez une fois encore un nouveau service du nom de let­sen­crypt et basé sur le conteneur let­sen­crypt-nginx-proxy-companion. Vous devez ici préciser que celui-ci dépend du service de proxy inverse et qu’il com­mu­nique par l’in­ter­mé­diaire du même réseau Docker. De plus, n’oubliez pas de définir les volumes Docker né­ces­saires à l’échange de données. Vous devez également pa­ra­mé­trer ce service de matière à ce qu’il redémarre au­to­ma­ti­que­ment, sauf s’il a clai­re­ment été arrêté.

Conseil

Vous voulez bé­né­fi­cier d’un chif­fre­ment pro­fes­sion­nel pour votre site Web ? Achetez votre cer­ti­fi­cat SSL au meilleur prix avec IONOS !

Con­fi­gu­rer le service MariaDB pour le serveur Nextcloud

Une fois le proxy inverse et le service « Let’s Encrypt » con­fi­gu­rés, il ne vous reste plus que la moitié de l’ins­tal­la­tion à effectuer. Il est main­te­nant temps de passer à la base de données MariaDB. Vous avez besoin de celle-ci pour gérer les données créées par l’uti­li­sa­tion de Nextcloud. Le stockage à pro­pre­ment parler s’effectue en dehors du conteneur, par l’in­ter­mé­diaire d’un volume Docker.

  1. Ouvrir le fichier docker-compose.yaml pour le modifier :
nano ~/nextcloud-docker/docker-compose.yaml
  1. Ajoutez un bloc de service :
db:
    image: mariadb
    container_name: nextcloud-mariadb
    networks:
        - nextcloud_network
    volumes:
        - db:/var/lib/mysql
        - /etc/localtime:/etc/localtime:ro
    environment:
        - MYSQL_ROOT_PASSWORD
        - MYSQL_PASSWORD
        - MYSQL_DATABASE
        - MYSQL_USER
    restart: unless-stopped

La plupart de ces pa­ra­mètres doivent main­te­nant vous être familiers. Vous devez à présent définir un service db basé sur l’image Docker mariadb. Spécifiez ensuite le réseau nextcloud_network, déjà utilisé pour les autres services, ainsi qu’un volume Docker dédié au stockage des données.

Ce bloc de con­fi­gu­ra­tion est toutefois différent, car des variables d’en­vi­ron­ne­ment sont utilisées. Dans la section en­vi­ron­ment, vous devez donc indiquer les noms des variables d’en­vi­ron­ne­ment né­ces­saires pour MariaDB. Les valeurs réelles seront ainsi lues dans le fichier .env lors de la prochaine exécution de l’outil Docker Compose.

Con­fi­gu­rer le conteneur du serveur Nextcloud

Et voilà : vous allez pouvoir passer à l’ins­tal­la­tion pro­pre­ment dite du logiciel relatif au serveur Nextcloud.

  1. Ouvrir le fichier docker-compose.yaml pour le modifier :
nano ~/nextcloud-docker/docker-compose.yaml
  1. Ajoutez un bloc de service :
app:
    image: nextcloud:latest
    container_name: nextcloud-app
    networks:
        - nextcloud_network
    depends_on:
        - letsencrypt
        - proxy
        - db
    volumes:
        - nextcloud:/var/www/html
        - ./app/config:/var/www/html/config
        - ./app/custom_apps:/var/www/html/custom_apps
        - ./app/data:/var/www/html/data
        - ./app/themes:/var/www/html/themes
        - /etc/localtime:/etc/localtime:ro
    environment:
        - VIRTUAL_HOST
        - LETSENCRYPT_HOST
        - LETSENCRYPT_EMAIL
    restart: unless-stopped

Vous devez créer le service app, basé sur l’image Docker nextcloud et qui com­mu­nique par l’in­ter­mé­diaire du réseau nextcloud_network, que vous con­nais­sez déjà. Pour vous assurer que le conteneur Nextcloud est bien lancé en dernier, vous devez définir les autres services comme des in­ter­dé­pen­dances. Spécifiez également les volumes Docker et les variables d’en­vi­ron­ne­ment né­ces­saires.

Terminer la con­fi­gu­ra­tion du serveur Nextcloud

Quelques entrées sup­plé­men­taires sont requises au niveau du fichier docker-compose.yaml pour achever la con­fi­gu­ra­tion du serveur Nextcloud. N’oubliez pas de créer le fichier .env et de le remplir avec les valeurs cor­res­pon­dantes.

  1. Ouvrir le fichier docker-compose.yaml pour le modifier :
nano ~/nextcloud-docker/docker-compose.yaml
  1. Ajouter les blocs suivants :

Comme il ne s’agit pas de blocs de service, la ta­bu­la­tion doit cor­res­pondre à celle utilisée pour services:.

volumes:
    nextcloud:
    db:
networks:
    nextcloud_network:
  1. Ouvrir un fichier .env vide pour le modifier :
nano ~/nextcloud-docker/.env
  1. Remplir le fichier env. avec les variables d’en­vi­ron­ne­ment et leurs valeurs :

Copiez le code ci-dessous dans la fenêtre de l’éditeur et rem­plis­sez les <balises> avec les valeurs sou­hai­tées avant de les en­re­gis­trer.

# MariaDB
MYSQL_ROOT_PASSWORD=toor
MYSQL_PASSWORD=mysql
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
# Nextcloud
VIRTUAL_HOST=<your.domain></your.domain>
LETSENCRYPT_HOST=<your.domain></your.domain>
LETSENCRYPT_EMAIL=<your@email></your@email>
  1. Une fois cet en­re­gis­tre­ment effectué, affichez le contenu du fichier .env pour vérifier que les valeurs ont bien été ajoutées cor­rec­te­ment :
cat ~/nextcloud-docker/.env

Con­fi­gu­ra­tion complète du serveur Nextcloud

Avant de trans­fé­rer la con­fi­gu­ra­tion ainsi créée à l’outil Docker Compose et de créer et démarrer vos con­te­neurs, vérifiez que vous avez bien tout ce dont vous avez besoin.

  1. Émettre la con­fi­gu­ra­tion existante :
cat ~/nextcloud-docker/docker-compose.yaml
  1. La comparer avec le modèle. La con­fi­gu­ra­tion ainsi obtenue doit cor­res­pondre au code suivant :
version: ’3’
services:
    proxy:
        image: jwilder/nginx-proxy:alpine
        labels:
            - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
        container_name: nextcloud-proxy
        networks:
            - nextcloud_network
        ports:
            - 80:80
            - 443:443
        volumes:
            - ./proxy/conf.d:/etc/nginx/conf.d:rw
            - ./proxy/vhost.d:/etc/nginx/vhost.d:rw
            - ./proxy/html:/usr/share/nginx/html:rw
            - ./proxy/certs:/etc/nginx/certs:ro
            - /etc/localtime:/etc/localtime:ro
            - /var/run/docker.sock:/tmp/docker.sock:ro
        restart: unless-stopped
    letsencrypt:
        image: jrcs/letsencrypt-nginx-proxy-companion
        container_name: nextcloud-letsencrypt
        depends_on:
            - proxy
        networks:
            - nextcloud_network
        volumes:
            - ./proxy/certs:/etc/nginx/certs:rw
            - ./proxy/vhost.d:/etc/nginx/vhost.d:rw
            - ./proxy/html:/usr/share/nginx/html:rw
            - /etc/localtime:/etc/localtime:ro
            - /var/run/docker.sock:/var/run/docker.sock:ro
        restart: unless-stopped
    db:
        image: mariadb
        container_name: nextcloud-mariadb
        networks:
            - nextcloud_network
        volumes:
            - db:/var/lib/mysql
            - /etc/localtime:/etc/localtime:ro
        environment:
            - MYSQL_ROOT_PASSWORD
            - MYSQL_PASSWORD
            - MYSQL_DATABASE
            - MYSQL_USER
        restart: unless-stopped
    app:
        image: nextcloud:latest
        container_name: nextcloud-app
        networks:
            - nextcloud_network
        depends_on:
            - letsencrypt
            - proxy
            - db
        volumes:
            - nextcloud:/var/www/html
            - ./app/config:/var/www/html/config
            - ./app/custom_apps:/var/www/html/custom_apps
            - ./app/data:/var/www/html/data
            - ./app/themes:/var/www/html/themes
            - /etc/localtime:/etc/localtime:ro
        environment:
            - VIRTUAL_HOST
            - LETSENCRYPT_HOST
            - LETSENCRYPT_EMAIL
        restart: unless-stopped
volumes:
    nextcloud:
    db:
networks:
    nextcloud_network:

Si votre version du fichier YAML cor­res­pond bien à celle-ci, vous pouvez passer à la dernière étape.

Terminer l’ins­tal­la­tion du serveur Nextcloud

Pour obtenir un serveur Nextcloud sous la forme d’une ap­pli­ca­tion mul­ti­con­te­neurs à partir des ins­truc­tions de l’outil Docker Compose, vous devez exécuter la commande suivante sur la ligne de commande :

cd ~/nextcloud-docker/ && docker-compose up -d

Pour finir, vérifiez que les con­te­neurs ont bien été lancés :

docker ps -a

Une liste des con­te­neurs en cours d’exécution s’affiche. Celle-ci doit contenir les quatre con­te­neurs que vous avez définis dans le fichier docker-compose.yaml.

Aller au menu principal