Nextcloud Docker Compose
Table of Contents
Installation
- Docker doit déjà être installé sur la machine
- On utilise
"docker compose"pour installer Nexcloud et Mariadb (ou Mysql) - Pour cela on va utiliser un fichier
docker-compose.ymlcontenant les informations suivantes (faire un copier / coller et s'assurer qu'en collant les décallages des différentes rubriques / services sont bien respectés):
Fichier docker compose
version: "2.1"
# XLH: pour upgrader, prendre la dernière image en modifiant "image:" sous "nextcloud:" ci-dessous.
# XLH: faire ensuite "docker compose pull" pour télécharger la version
# XLH: et enfin faire "docker compose up" pour relancer nextcloud et nextclouddb.
services:
nextcloud:
# image: lscr.io/linuxserver/nextcloud:28.0.10-previous
# image: lscr.io/linuxserver/nextcloud:previous-29.0.11-ls28
# image: lscr.io/linuxserver/nextcloud:30.0.16-previous
# image: lscr.io/linuxserver/nextcloud:31.0.14-previous
# image: lscr.io/linuxserver/nextcloud:32.0.6-previous
image: lscr.io/linuxserver/nextcloud:33.0.0
container_name: nextcloud3
environment:
- PUID=1006 #change PUID if needed
- PGID=100 #change PGID if needed
- TZ=Europe/Paris #change Time Zone if needed
volumes:
- /srv/dev-disk-by-label-Mimosa/NC/nextcloud3/config:/config #/srv/dev-disk-by-label-disk1 needs to be adjusted
- /srv/dev-disk-by-label-Mimosa/NC/nextcloud3/data:/data #/srv/dev-disk-by-label-disk1 needs to be adjusted
# depends_on:
# - mariadb
ports: # uncomment this and the next line if you want to bypass the proxy
- 455:443
restart: unless-stopped
mariadb:
image: lscr.io/linuxserver/mariadb:latest
container_name: nextclouddb3
environment:
- PUID=1006 #change PUID if needed
- PGID=100 #change PGID if needed
- MYSQL_ROOT_PASSWORD=Popeye123& #change password
- TZ=Europe/Paris #Change Time Zone if needed
volumes:
- /srv/dev-disk-by-label-Mimosa/NC/nextclouddb3:/config #/srv/dev-disk-by-label-disk1 needs to be adjusted
ports:
- 3307:3307
restart: unless-stopped
Explication sur le fichier
C'est un fichier écrit en Yaml au format texte (surtout ne pas utiliser MS Word): cela se lit aisément. L'important est notamment la structure / arborescence des lignes (leurs décalages de 2 espaces entre les différentes rubriques et leurs contenus). Le fichier ci-dessus contient 2 services:
- nextcloud
- mariadb
Nota: tous les textes après un # sont interprétés comme un commentaires (donc pas nécessaires à la mise en place d'un conteneur. Juste utile pour la compréhension).
Le premier service "nextcloud" donne les info nécessaires à docker pour mettre en place le conteneur nextcloud:
- Il récupère l'image sur (par exemple):
lscr.io/linuxserver/nextcloud:33.0.0- la version de l'image est précisée avec le tag
:33.0.0 - le nom de l'image est donné par:
lscr.io/linuxserver/nextcloud
- la version de l'image est précisée avec le tag
- on donne un nom au futur conateneur (nexcloud3 par exemple)
On lui donne des variable d'environnement, en l'occurence:
- Sur mon serveur j'ai créé un "user" dédié (que j'ai appelé "docnext") avec des droits mini,
- Il s'avère que l'os lui a donné comme numéro ID (pour PUID) la valeur 1006
- Et pour le group auquel il appartient ("users") l'ID (pour PGID) est 100
- Il n'est pas nécessaire de créé un "user" spécifique, on peut le faire directement sous son compte.
- Par contre il faut s'assurer qu'on a les droits de modification sur le répertoire où on va rendre accessible "config" et "data"
(nota: pour avoir les identifiant user et group il suffit de tapper la commande "id" sous Linux. les deux première valeur sont "uid" et "gid")
- On lui indique ensuite les endroits sur le disque dur (":volumes") où seront stockées les données ":config" et ":data"
- Avant les ":" c'est l'endroit sur le disque dur du serveur où sera installé nextcloud
- Cet endroit sera accessible via n'importe quel gestionnaire de fichier
- néanmoins les fichiers auront pour propriétaire l'ID "1006" ("docnext") et le GID 100 ("users")
- Lors d'éventuels modifications des fichiers contenus dans config ou data il faudra donc être logué sur le user "docnext" (ou 1006)
- Après les ":" c'est l'endroit dans le conteneur (qui est une machine virtuelle qui fait tourner un OS minimum Linux (souvent c'est "Alpine" qui ne prend pas beaucoup de place))
- Avant les ":" c'est l'endroit sur le disque dur du serveur où sera installé nextcloud
- Enfin on précise avec "ports" sur quel port de l'ordinateur, où est installé le conteneur docker de nextcloud, sera accessible l'interface de Nextcloud
- Ici le port externe (donc celui du serveur) est 455 par exemple: si l'adresse du serveur est 192.168.1.10, pour accéder à nextcloud il suffit de tapper dans la barre d'adresse d'un navigateur "192.168.1.10:455" pour accéder à l'interface (peu-être préciser "https://" devant et forcer l'accès car pas formellement sécurisé)
- Alors que le port interne au conteneur sera le 443. Il sert principalement de port de communication avec d'autres conteneur comme "mariadb" par exemple.
Le deuxième service est "mariadb": c'est une base de donnée "MySQL" Ls principes sont les mêmes que pour le conteneur "Nextcloud", je ne détaille donc pas. Ce qu'il faut s'avoir c'est que Nextcloud a besoin d'une base de données pour fonctionner. Si on n'installe pas une base de données comme "MariaDB", par défaut le conteneur "Nextloud" utilise "sqlite" qui est une base de données pas assez robuste pour fonctionner en mode "production"
Adaptation du fichier à son contexte
Changer les PUID et PGID en fonction de l'utilisateur et du groupe qui installe le conteneur. Le plus simple est de prendre les UID et GID de l'utilisateur connecté sur Linux (pas la peine de s'embêter comme moi à créer un utilisateur spécifique). pour récupérer UID et GID taper la commande "id" dans un terminal.
Remplacer le mot de passe "PASSWORD" de la base de donnée "Mariadb" (MYSQL_ROOT_PASSWORD=PASSWORD) par le "PASSWORD" souhaité.
Il se peut que lors de la première connexion à Nextcloud il demande un nom et un mot de passe pour la création de la base de données. Dans ce cas là mettre le nom correspondant au UID (s'il n'a pas changé comme préconisé: mettre le nom de son login sous Linux) et le mot de passe est le "PASSWORD" indiqué dans le fichier "docker-compose.yml" pour le service "mariadb".
Eventuellement ajuster les ports de connexion (mais pas nécessaire sauf si le port 455 est déjà utilisé par un autre service)
Utilisation du fichier "docker-compose.yml"
- placer le fichier "docker-compose.yml" dans un répertoire (sur mon serveur il est sous
~/src/docker/nectcloud(~ représentant le répertoir "home" de n'importe quel utilisateur (le sien a fortiori))) - Se mettre sous ce répertoire dans un terminal
cd src/docker/nextcloud - Lancer la commande "
docker compose pull" (qui va télécharger les conteneurs sur le disque dur) - Pui lancer la commande "
docker compose up" (qui configure et lance les conteneur "Nextcloud" et "Mariadb")
Lors des points 3 et 4, s'affiche à l'écran les différentes phases de chargement ou d'installation.
Les info de la phase 4 sont importantes pour voir si tout c'est bien passé … ou voir les messages d'erreur.
Si on veut que le conteneur fonctionne en permanence taper plutôt la commande "docker compose up -d"
Utilisation de Nextcloud
Il suffit d'aller sur https://192.168.1.10:445 où 192.168.1.10 est l'IP de l'ordinateur où est installé Nextcloud.
S'assurer, en cas de firewall, que le port 455 de l'ordinateur est bien ouvert (sinon ce ne sera accessible qu'en local (genre https://localhost:455 ou https://127.0.0.1:455 ou https://0.0.0.0:455)) et pas sur le réseau de la maison.
Première utilisation de Nextcloud
Lors de la première connexion sur https://192.168.1.10:445, Nextcloud demande à créer un compte d'aministrateur.
Mettre admin (ou son nom … qui aura les capacités d'administration) et un mot de passe.
Ensuite sous Nextcoud on peut créer d'autres compte sous chacun (et se partager des répertoires si on le souhaite)
Gestion des conteneurs sous docker
Tout est gérable via la ligne de commande dans un terminal (cf. docker --help ou docker compose --help)
Néanmoins il existe une interface web très complète (Portainer) qui permet de gérer / créer / arrêter / redémarrer / supprimer ses conteneurs à la souris. Cette interface s'installe via un conteneur docker (:-)) : cf. https://docs.portainer.io/start/install-ce/server/docker/linux