[Tuto] installation de Nextcloud en Docker sur Raspberry Pi

EVOTk

Modérateur
Membre du personnel
Bonjour,
Nous allons ici utiliser docker-compose ( mais il est possible de passer par Portainer également ) pour installer nextcloud sur un rapsberry pi.

9ikFGtd.png


Nextcloud ? C'est quoi ?
Nextcloud est un logiciel libre, de site d'hébergement de fichiers et une plateforme de collaboration. À l'origine accessible via WebDAV, n'importe quel navigateur web, ou des clients spécialisés, son architecture ouverte a permis de voir ses fonctionnalités s'étendre depuis ses origines. En 2020, il propose de nombreux services.

Pré-requis :
Avoir un accès SSH au Raspberry
Avoir installer docker et docker-compose , docker-compose ( mais il est possible de passer par voir tuto
Connaitre le PUID/GUID de l'utilisateur pi, voir tuto

Sommaire :
1/ Créer les dossiers nécessaires
2/ Création de la configuration et des conteneurs

____1/ Par Docker-Compose
________a/ Création du fichier "docker-compose.yml"
________b/ Création des conteneurs
____2/ Via Portainer ( A venir )

3/ Configuration de Nextcloud
____1/ Accès a l'interface de Nextcloud
____2/ Configuration


1/ Créer les dossiers nécessaires
Pour mon tuto, je vais placer tous les dossiers ( mariadb et nextcloud dans le dossier /media du pi ), cela peut bien sur être changer, mais il faudra adapter vos cahngements dans le fichier "docker-compose.yml" à l'étape suivante.

Je me place donc dans /media :
Code:
cd /media

Mariadb a besoin d'un dossier, et Nextcloud a besoin d'un dossier /config et d'un dossier /data, avec cette commande, on créer les 3 dossiers, dans un dossier /nextcloud :
Code:
sudo mkdir -p nextcloud/{mariadb,config,data}

2/ Création de la configuration et des conteneurs

2.1.a/ Création du fichier "docker-compose.yml"
Pour créer le fichier ( dans /media/nextcloud ) :
Code:
sudo nano /media/nextcloud/docker-compose.yml

Ensuite vous copier/coller ceci dedans :
Code:
version: "2"
services:
  nextcloud:
    image: linuxserver/nextcloud
    container_name: nextcloud
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - /media/nextcloud/config:/config
      - /media/nextcloud/data:/data
    ports:
      - 443:443
    depends_on:
      - mariadb
    restart: unless-stopped
  mariadb:
    image: linuxserver/mariadb
    container_name: mariadb
    environment:
      - PUID=1000
      - PGID=1000
      - MYSQL_ROOT_PASSWORD=123456789
      - TZ=Europe/London
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_PASSWORD=ABCDEF
    volumes:
      - /media/nextcloud/mariadb:/config
    restart: unless-stopped

Suivant votre config, il peut être nécessaire de modifier le volume de mariadb et ceux de nextcloud.
PUID et GUID sont à modifier suivant les ID de votre utilisateur pi ( voir pré-requis )
Ici nextcloud utilise le port par défaut, soit 443 en HTTPS.
A modifier également : MYSQL_ROOT_PASSWORD et MYSQL_PASSWORD, choisissez des mots de passe fort.

On quitte le fichier Ctrl+X et on valide les modifications.

2.1.b/ Création des conteneurs
On se place dans le dossier ou nous avons créer notre fichier yml :
Code:
cd /media/nextcloud
, et on execute la commande :
Code:
docker-compose up -d
Une fois fini, le raspberry renvoi "done" :
RFgFs5x.png


Cela peut prendre quelques minutes avant que l'interface de nextcloud soit disponible !

3/ Configuration de Nextcloud
3.1/ Accès a l'interface de Nextcloud
Si vous avez laisser le port par défaut, alors l'acces a nextcloud se fait via l'adresse https://adresse-ip-locale, par exemple si votre pi a l'adresse 192.168.1.210 alors l'acces se fait a https://192.168.1.210, si vous avez modifier le port, alors il faut le preciser, par exemple pour le port 9000, l'adresse sera https://192.168.1.210:9000

Il est possible de rencontrer ce genre d'avertissement, il est normal, car nous sommes en HTTPS, mais il n'y a pas de certificat de généré. il vous suffit "d'accepter le risque" pour continuer.
5AhXg01.png


3.2/ Configuration
A la 1ere connexion à l'interface il vous sera demander de choisir un pseudo et un mot de passe, cela sera le compte administrateur ! Choissisez un mot de passe fort, et éviter les pseudo comme "admin, root, ... ).

Pour la base de donnée on choisi "Mariadb", puis dans :
"Utilisateur de la base" on indique : nextcloud
"Mot de passe" : par defaut : ABCDEF, mais vous l'avez normalement modifié !
"Nom de la base de donnée" : nextcloud
"Hote" : mariadb

vzwFcIe.png


Je vous conseil de décocher " installer les applications recommandé ", nextcloud vous proposera par la suite d'installer ces applications et vous permettra de choisir celle que vous souhaitez, ou non.

Puis on valide en cliquant sur Terminer l'installation

Une fois l'installation fini, on se retrouve sur la page de connexion ! On se connecte et nous voila dans notre Nextcloud :D

Note : En cas d'erreur 504 pendant la fin de l’installation patienter quelques minutes le temps que le serveur finisse la configuration du cloud.

Source : Wikipedia, https://github.com/linuxserver/docker-nextcloud, https://github.com/linuxserver/docker-mariadb

2021-01-17 : Correction du compose ( mauvaise zone géographique "TZ" )
 

FX Cachem

Administreur
Membre du personnel
Pas sûr que je serais passé par Docker sur un Raspberry Pi, mais merci pour le partage ;)
 

EVOTk

Modérateur
Membre du personnel
FX Cachem a dit:
Pas sûr que je serais passé par Docker sur un Raspberry Pi, mais merci pour le partage ;)

Salut,
Pour quelle raison ? Docker même sur un raspberry permet une flexibilité énorme.
En cas de soucis, la desinstallation et la reinstallation est propre et simple, ainsi que les modifications éventuelles.
 

FX Cachem

Administreur
Membre du personnel
EVOTk a dit:
Pour quelle raison ? Docker même sur un raspberry permet une flexibilité énorme.
En cas de soucis, la desinstallation et la reinstallation est propre et simple, ainsi que les modifications éventuelles.
Je suis un grand fan de Docker, c'est juste que le Raspberry me semble un peu limiter notamment côté CPU... mais j'avoue je n'ai jamais essayé.
Nextcloud peut être parfois gourmand sur certaines tâches et avec certains modules.
 

masch67

Nouveau membre
Bonsoir,

Merci pour ce tuto !
Bon, mon Nextcloud fonctionne, puisque j'arrive à m'y connecter depuis mon réseau.
Pour ce qui est des connexions externes, c'est une autre paire de manches... "Accès depuis un domaine non fiable..."

Mais bon, il va falloir trouver un bon tuto pour administrer tout ça et voir ce que je peux en faire :)
 

EVOTk

Modérateur
Membre du personnel
Salut,
Pour l'acces extérieur et la gestion des certificats SSL

Il y a par exemple https://docs.linuxserver.io/general/swag avec un nom de domaine duckdns
Sinon il y a aussi ngnix proxy manager
 

Coco

Nouveau membre
merci pour ce tuto bien documenté.

Il y a peut être 2 choses à indiquer :
- ajouter le trusted domain (je ne sais plus trop où ?) pour acceder depuis l'exterieur via un domaine DuckDNS par ex.
- avertir qu'on ne peut pas facilement déplacer le répertoire /data de Nextcloud apres l'install (changer la section "volume" du docker-compose ne suffit pas)
-> Je ai fait le tuto une fois sans pb sur la carte SD, et je suis en train de tout recommencer pour déplacer mon répertoire Nextcloud sur un disk SSD externe.

Autre question :
Y-at-il une grosse différence de perf entre une install standard et une install au sein d'un conteneur ?
Je n'ai essayé que la 2e solution, mais il faut bien avouer que mon PI3B culmine souvent à 100% de CPU quand j'upload des photos sur le Nextcloud.
 

EVOTk

Modérateur
Membre du personnel
Salut,

Coco a dit:
- ajouter le trusted domain (je ne sais plus trop où ?) pour acceder depuis l'exterieur via un domaine DuckDNS par ex.
Cela se passe dans nextcloud/config/config.php si cela est fait apres la 1ere configuration.

Coco a dit:
- avertir qu'on ne peut pas facilement déplacer le répertoire /data de Nextcloud apres l'install (changer la section "volume" du docker-compose ne suffit pas)
Si tu déplace le dossier /data, cela fonctionne tres bien, du moment que tu le fait conteneur a l'arret, que tu modifie le chemin dans le compose, applique les bonnes permissions au dossier déplacé, et recréé le conteneur.

Coco a dit:
Y-at-il une grosse différence de perf entre une install standard et une install au sein d'un conteneur ?
FX laisse sous entendre que oui, pour ma part je te dirait que non, oui l'installation sous docker demande un peu plus de ressource, mais c'est loin d'etre énorme. C'est d'ailleurs le gros avantages de Docker.
 

Gezabs

Nouveau membre
Merci pour ce tuto.
Avant de me lancer, je voudrais savoir s'il est possible/pertinent de mettre uniquement le répertoire /data sur un HDD externe et garder la BdD Maria et la config sur la carte SD du RPi ?
J'ai vu dans le commentaire précédent qu'il valait mieux le faire dès la première installation/configuration.
Si c'est possible, faut-il juste indiquer dans le fichier docker-compose les volumes différents ?
 

EVOTk

Modérateur
Membre du personnel
Oui dans le docker compose tu modifie les chemin afin de les adapter a tes besoins.
 

StreetoYo

Nouveau membre
Bonjour à tous, pour ma part, installation des containers nickelle. Pas de message d'erreur, je les vois bien tourner, mais impossible d'accéder à la page nextcloud ...
Et ce, aussi bien en passant par l'IP, ou par IP:pORT...

Des pistes sur le fait que àa ne marche pas ?

Merci de l'aide que vous pouvez m'apporter ;)
 

StreetoYo

Nouveau membre
C’est bien le soucis. Je n’ai aucun message d’erreur.
J’essaie de me connecter sur l’adresse https://192.168.1.68:9443 mais la page ne charge pas.

J’ai déclaré le port dans docker en port 9443:9443
 

EVOTk

Modérateur
Membre du personnel
StreetoYo a dit:
C’est bien le soucis. Je n’ai aucun message d’erreur.
J’essaie de me connecter sur l’adresse https://192.168.1.68:9443 mais la page ne charge pas.

J’ai déclaré le port dans docker en port 9443:9443

Alors c'est normal que cela ne marche pas.
Si tu souhaite modifier le port par défaut par 9443 il faut modifier comme ceci :

9443:443
 

StreetoYo

Nouveau membre
Merci pour l'info pour le port.
Mais toujours pas d'accès.

Toujours aucun message d'erreur, juste pas de résultat sur la page... Je ne pige pas...
 

StreetoYo

Nouveau membre
J'ai cette erreur qui revient :

nginx: [emerg] cannot load certificate "/config/keys/cert.crt": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/config/keys/cert.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
 

EVOTk

Modérateur
Membre du personnel
Cette erreur ne me parle pas.
As tu bien utilisé les PUID/GUID d'un utilisateur ayant les droits sur ton dossier nextcloud/config ?
 

StreetoYo

Nouveau membre
J'ai essayé en mettant les PUID et GUID de mon utilisateur pi, j'ai testé aussi avec l'utilisateur docker.

Je vais essayer de gratter encore..
 

StreetoYo

Nouveau membre
Sault salut, j'ai résolu le soucis en installant mon nextcloud sur une base de rasbian 64 bits, et non 32 bits.
Et depuis, tout fonctionne nickel ;)
Pus qu'à rendre tout ça accessible via internet.
 
Haut Bas