OpenBSD : Service Nextcloud / nginx ( + Office Online, Talk )

Article publié, le et modifié le
9 minute(s) de lecture

Cet article contient 1800 mots.
Source brute de l'article : MD

Description

Nextcloud est un logiciel de nuage informatique afin de partager depuis et sur Internet des fichiers mais aussi un ou plusieurs agendas, des contacts, des notes, etc… de manière modulaire.

  • Site web : https://www.nextcloud.com
  • Version installable :
    • depuis les paquets : 6.4 : 14.0.1 ; 6.5 : 15.0.5p1 ; 6.6 : 17.0
    • depuis le site web !
  • OS : Testé sur OpenBSD 6.3 => 6.6

Installation

Attention

Par les paquets

Un coup de pkg_add nextcloud suffit !

Par l’archive officielle

Par convention, disons que nous déposerons l’archive dans le répertoire /var/www/htdocs/nextcloud - que vous pouvez/devez modifier/adapter à votre besoin

# mkdir /var/www/htdocs/nextcloud
$ cd /var/www/htdocs/nextcloud

Téléchargeons l’archive et le fichier de sommes de contrôle sha256 adéquate :

$ ftp https://download.nextcloud.com/server/releases/nextcloud-17.0.1.zip{,.sha256}

Puis vérifions que l’archive est bien téléchargée :

$ sha256 -C nextcloud-*.sha256
(SHA256) nextcloud-17.0.1.zip: OK

Si le message est identique, alors l’archive téléchargée est bonne. Nous pouvons donc l’utiliser :

$ unzip nextcloud*.zip
# mv nextcloud /var/www/htdocs/
# chown -R www:daemon /var/www/htdocs/nextcloud

PHP

Il est nécessaire d’installer les paquets PHP, tel que :
# pkg_add php-bz2 php-curl php-gd php-pdo_sqlite php-intl php-zip pecl72-redis redis libmcrypt oniguruma icu4c-wwwdata

Info
Bibliothèque sodium

Certaines options de Nextcloud nécessitent la gestion de bibliothèque cryptographique ; il nous faut installer la libsodium :
# pkg_add libsodium

Info
Activer les extensions PHP

Ensuite, il faut activer les différentes extensions :

cd /etc/php-7.3.sample
for i in *; do ln -sf ../php-7.3.sample/$i ../php-7.2/; done

Puis, redémarrer le service PHP-FPM.

Gestion du service PHP

Activer/redémarrer le service PHP-FPM php73_fpm !

Bases de données

Par défaut, Nextcloud fonctionne avec sqlite ; veillez à ce que le package nécessaire soit installé :
# pkg_add sqlite3 php-pdo_sqlite php-pdo_odbc

Néanmoins Nextcloud fonctionne aussi avec les bases de données MySQL/MariaDB, PostgreSQL… à vous de choisir et d’installer les paquets correspondants !

Dans tous les cas, il faudra activer les nouvelles extensions php et redémarrer le service adhoc.

Configuration

Avec httpd

Avec nginx

La documentation officielle de Nextcloud pour nginx étant bien faite, je vous laisse la regarder !

Faites simplement attention à bien changer la valeur de root pour qu’elle corresponde à votre racine, ici /var/www/htdocs/nextcloud et à adaptez le reste à votre besoin.

Retrouvez les règles principales de nginx au-travers de ce document que je partage !
Il est bien-sûr nécessaire de l’intégrer à votre schéma server

PHP-FPM

Il est nécessaire, pour que Nextcloud fonctionne bien, de configurer votre fichier php-fpm afin d’ajouter :

  • allow_url_fopen = on
  • env[PATH] = /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin
  • post_max_size = 512M
  • upload_max_filesize = 512M
  • De même, si vous utilisez la directive open_basedir, veillez à autoriser l’accès à /dev/urandom.
  • Veuillez aussi lire les recommandations suivantes : Tune PHP-FPM et Enable PHP OPcache

Redémarrez le service PHP-FPM…

Nextcloud

Chroot PHP

Étant donné que PHP est chrooté, la commande occ, ainsi que les jobs cron échouent.

Lorsque occ est exécuté, vous obtenez au moins ce message d’erreur :

Citation :

Your data directory is invalid Ensure there is a file called ".ocdata" in the root of the data directory. Cannot create "data" directory This can usually be fixed by giving the webserver write access to the root directory. See https://docs.nextcloud.com/server/16/go.php?to=admin-dir_permissions

Résoudre ce problème est simple : il suffit d’éditer le fichier de config de nextcloud, nextcloud/config/config.php pour modifier la valeur de la variable datadirectory. (cf : Nextcloud Php Chroot OpenBSD (astuce))

Bien sûr, le chemin /data doit correspondre à votre cas, surtout si vous l’avez déplacé hors de la racine nextcloud - ce qui est recommandé !

Ce changement étant fait, vous pouvez utiliser sans soucis la commande occ.

Gestion des applications

Collabora/CODE

À quoi sert Collabora CODE ?

À pouvoir éditer les documents bureautique dans Nextcloud directement. Malheureusement, ne cherchez pas : cela ne fonctionne pas nativement sur OpenBSD !

Joujou dans la VM

Le moyen : dans une VM ! :p

Deux méthodes

Il existe deux méthodes pour pouvoir utiliser Collabora CODE :

  • la méthode facile : au-travers d’une image docker installable sur Debian
  • une méthode longue mais simple, grâce à ce projet “ officeonline-install.sh
Info

Par Docker

Attention

Une fois dans votre VM Debian, il faut installer docker puis l’image fournie par les soins de Collabora.

# apt install docker-ce
$ docker pull collabora/code

Ensuite il faut exécuter la commande suivante en l’adaptant au nom de domaine où se trouve votre instance de Nextcloud :
$ docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.nextcloud\\.com' --restart always --cap-add MKNOD collabora/code

Astuce

Iptables

Il est très probable qu’il faille modifier iptables tel que, par exemple :

iptables -A FORWARD -i docker0 -o enp0s3 -j ACCEPT
iptables -A FORWARD -i enps0s3 -o docker0 -j ACCEPT iptables -A INPUT -i docker0 -j ACCEPT

Tests réseaux

Depuis votre machine hôte, normalement il est possible de pinger la VM et de tester une requête CURL.

Code : sh

$ ping -c3 192.168.0.2
PING 192.168.0.2 (192.168.0.2): 56 data bytes
64 bytes from 192.168.0.2: icmp_seq=0 ttl=64 time=0.254 ms
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.278 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.301 ms

--- 192.168.0.2 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.254/0.278/0.301/0.019 ms

$ curl -Iv http://192.168.0.2:9980
* Rebuilt URL to: http://192.168.0.2:9980/
*   Trying 192.168.0.2...
* TCP_NODELAY set
* Connected to 192.168.0.2 (192.168.0.2) port 9980 (#0)
> HEAD / HTTP/1.1
> Host: 192.168.0.2:9980
> User-Agent: curl/7.61.1
> Accept: */*
>
* Empty reply from server
* Connection #0 to host 192.168.0.2 left intact
curl: (52) Empty reply from server

Si curl répond ainsi, c’est que cela semble bon !

Maintenant, passons aux modifications du serveur nginx , puis à l’administration de Nextcloud.

Update docker

Récupère la nouvelle image : $ docker pull collabora/code

Arrêt de l’image en cours :
$ docker container ls
$ docker container stop CONTAINER_ID, ou NAMES fonctionne aussi
$ docker container rm CONTAINER_ID, ou NAMES

On relance la commande docker run…, vue précédemment ci-dessus !

Modification nginx

Les modifications des règles location pour nginx sont fournies dans ce document

Veillez à remplacer les écritures http://localhost, par votre schéma

  • adresse IPv4 de votre VM !

Puis relancer le service nginx… et administrons Nextcloud !

Par script shell officeonline

Il suffit de cloner le dépôt et d’exécuter le script shell officeonline-install.sh.

L’intérêt de ce script est d’installer tout ce qui est nécessaire afin de se débarrasser des limitations fournies dans le projet Docker de l’entreprise Collabora.

$ git clone https://github.com/husisusi/officeonlin-install.sh.git
$ cd officeonlin-install.sh

Attention

Voir le projet sur le forum d’entraide de Nextcloud…


Les valeurs actuellement fonctionnelles, sur une Debian Stretch, du fichier de configuration officeonline-install.cfg sont celles-ci:
set_online_regex='collabora/collabora-online-4$' #CODE 4 Branch
lool_src_commit='173510fdbf6f52d1d6288b809c8d14bc630afd20' #CODE-4-RC2
set_core_regex='cp-6.0$' #LibO 6.0.x

Attention

Pensez à modifier aussi la valeur de allowed_domains en début de fichier, en faisant correspondre avec le nom de domaine qui gère votre nextcloud ou le service collabora s’il est sur un serveur distinct.

Une fois le fichier de configuration modifié, exécutez la commande suivante :
# officeonline-install.sh -c officeonline-install.cfg

Puis, patientez le temps de la phase de compilation et d’installation…

Si à la fin, vous avez un message ressemblant au suivant, alors c’est bon :

Code : bash

()
### loolwsd is running. Enjoy!!! Service will be stopped after this ###
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
loolwsd 19422 lool   17u  IPv6 320498      0t0  TCP *:9980 (LISTEN)
#

Redémarrez votre VM, vérifiez votre config nginx, puis modifiez votre configuration de Nextcloud


Modification Nextcloud

Se connecter à l’interface web de Nextcloud en tant qu’administrateur, puis dans le menu Applications > Section Office & text/Bureautique et installer l’application Collabora Office.

Ensuite, choisir le menu Settings/Paramètres > Collabora Online et spécifier le nom du domaine sur lequel fonctionne la VM Debian ; il doit correspondre ABSOLUMENT selon votre choix de configuration, soit :

  • à la mention domain que vous avez rempli lors de l’exécution du containeur Docker…
  • à la mention allowed_domains remplie pour la configuration du script officeonline

Talk

Pour pouvoir communiquer par vidéo et/ou par chat, il faut installer l’application officielle Talk avec un compte administrateur depuis l’interface d’administration de Nextcloud.

Ensuite, il faut configurer un serveur Turn !

Pour finir, chaque utilisateur inscrit de votre nuage informatique pourra communiquer avec un autre, soit à partir de l’application Nextcloud Talk sur un smartphone, soit à partir de l’interface web de Nextcloud une fois connecté.


Turn

L’installation d’un serveur STUN/TURN, pour que l’application Talk fonctionne, est expliqué dans mon tutoriel OpenBSD : Service TURN.

Ensuite, il est nécessaire de paramétrer Nextcloud. Connectez-vous à son interface en tant qu’administrateur, puis choisissez le menu Settings/Paramètres > Talk/Discussion.

Voici en image l’interface :
Nextcloud : Serveurs STUN

Écrivez dans les champs :

  • Serveur STUN, écrivez : nom-domaine.tld:3478
  • Serveur TURN, écrivez : nom-domaine.tld:5349, puis le champ suivant le secret d’authentification que vous avez configuré pour l’option static-auth-secret dans le fichier de configuration du serveur Turn. Puis changez si besoin les protocoles utilisés.
Attention

Une fois configuré, il n’y a plus qu’à utiliser l’application Nextcloud Talk soit sur votre smartphone, soit à-partir de l’interface web de Nextcloud depuis votre compte.

Remerciements

Source:


Enjoy-IT!
Enjoy-ID!