Nextcloud est un service de cloud. Aurore décider d'offrir 30G de stockage à ses adhérents grâce au stockage disponible sur le NAS.
Disponible ici : https://nextcloud.auro.re
Documentation officielle : https://docs.nextcloud.com/server/19/admin_manual/
Dockerhub : https://hub.docker.com/_/nextcloud/
Code source : https://github.com/nextcloud/server
Le projet Nextcloud est une fork de Owncloud, il est plus recent et plus activement développer. Si on devait faire une analogie c'est comme une rolling release (Arch), on a des mises à jours fréquentes (une mise à jour majeur tous les quatres mois environ) mais ça peut plus facilement poser des soucis d'un owncloud (Debian). Cependant la sécurité est bonne, le projet est mature. Docker est une solution très bien adapté à ce genre projets.
proxy.auro.re
(port 80)bdd.adm.auro.re
(port 5432)re2o-ldap.adm.auro.re
(port 389)caradoc.adm.auro.re
La VM a pour FQDN nextcloud.adm.auro.re
et pour ip 10.128.0.58
. Les rôles de Ansible de de base sont déployés (baseconfig et docker).
La configuration du reverse proxy et des certificats Let's Encrypt est géré par Ansible et vous pouvez la retrouver sur le repo gitea en question.
Les données utilisateur vivent dans un dataset ZFS qui doit être monté en NFS. Manuellement :
$ sudo mkdir -p /mnt/data_nextcloud
$ sudo mount -t nfs 10.128.0.6:/data_nextcloud /mnt/data_nextcloud
Ou configurer dans /etc/fstab
pour avoir une configuration percistente :
10.128.0.6:/data_nextcloud /mnt/data_nextcloud nfs auto 0 0
On ajoute un petit motd dans /etc/updated-motd/05-docker
pour donner des infos utiles à ceux qui se connecte pour la première fois.
Le LDAP est configuré via un service-user sur Re2o. La connfiguration est la suivante :
# Serveur
serveur ldap : `re2o-ldap.adm.auro.re:389`
DN : cn=nextcloud,ou=service-users,dc=auro,dc=re
password : remplacer par le mot de passe du service-user nextcloud
base DN : dc=auro,dc=re
# Users
Filter : (|(objectclass=inetOrgPerson))
# Login Attributes
Filter : (&(|(objectclass=inetOrgPerson))(uid=%uid))
# Groups
Filter : (|(cn=Utilisateurs)(cn=aurore)(cn=infra)(cn=president)(cn=rtc))
La base de donnée Postgresql vit sur bdd.adm.auro.re
Une certaine partie de la configuration de Nextcloud se trouve dans nextcloud/html/config/config.php ou directement dans l'interface en ligne quand l'on est connecté grâce à un compte administrateur.
Le réglage des quotas se fait au niveau de l'interface en ligne. Il est réglé de base à 30GB pour tous les utilisateurs. On peut configurer le serveur pour lui dire d'envoyer des mails de rappel à différents seuils grâce à une app.
Comme l'instance est en authentification uniquement via le LDAP on ne veut pas autoriser les gens à changer leurs mot de passe. Il existe des options pour modifier le LDAP directement mais on souhaite plutôt rediriger directement les gens re2o pour cela. On peut ajouter à config.php cette ligne :
'lost_password_link' => 'https://re2o.auro.re/users/reset_password/',
Il existe différents moyens de faire tourner les background job de nextcloud. La solution de base dépends des actions AJAX des utilisateurs. La solution conseillé en production et pour les plus grosse instances et celle d'un cron qui fait tourner un script php.
*/5 * * * * php -f /var/local/docker/nextcloud/html/cron.php
On peut modifier le dockerfile pour y ajouter le cron, voir le dossier nextcloud_cron qui contient un Dockerfile et un fichier de configuration pour supervisord.
Le serveur Nextcloud nécessite de pouvoir envoyer des mails (partage de fichier, rappel de quotas, etc…). Pour cela on peut configurer un simple STMP ou bien avoir un mini serveur mail (comme nullmailer) qui permet d'envoyer ces quelques mails.
Le jour où l'on aura un server mail à Aurore on pourra également ajouter un pattern pour se connecter automatiquement à ce serveur mail grâce à l'app Mail.
Dans la configuration Nextcloud depuis le panneau administration il est possible de changer la couleur, le logo, le slogan, l'image de fond de l'interface web utilisateur. Il est cependant possible d'écrire un thème css custom pour avoir encore plus de liberté.
Pour mettre à jour il faut venir modifier le numéro de version dans le Dockerfile dérivié de nextcloud nextcloud_cron/Dockerfile. Il faut faire attention de bien passé d'une mise à jour majeure à la suivante sans en sauter pour éviter de casser le service.
(Pour être vraiment safe on peut y aller encore plus finement, voir le dernier paragraphe de https://nextcloud.com/release-channels/)
$ sudo docker-compose build --pull
$ sudo docker-compose up -d
Il faut build –pull
plutôt que simplement pull car on a une image dérivé de l'image de base pour y inclure le cron.
voir
$ sudo docker-compose up --build -d
Dans le cas il y a besoin de build la première fois. Notes
Pour des raisons de sécurité, toutes les commandes docker doivent être exécutés en sudo (root). On pourrait également ajouter des utilisateurs au groupe docker. Ça serait utile si on avait besoin de donner le droit d’exécuter des commandes docker à une personne non sudoer, donc en pratique jamais.
La maintenance c'est faire des backup et restorer des backups. Il y a aussi les mises à jours, mais on a déjà une section pour ça.
Pour voir la documentation officielle pour faire des maintenances : https://docs.nextcloud.com/server/stable/admin_manual/maintenance/index.html
Pour gérer les maintenances il faut passer dans un mode spécial de maintenance qui évite les corruptions de donnés due aux login et écritures disque.
Pour cela on utilise l'utilitaire en ligne de commande de nextcloud occ :
www-data@nextcloud $ php occ maintenance:mode --on
Aujourd'hui les backup sont propres et multiples. Il existe une backup avec Borg sur la VM nextcloud, de la base de données sur la VM de bdd et du dataset ZFS sur caradoc. Il y a également des snapshots journalières de ZFS.