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 : Ce tutoriel ne documente pas dans les moindres détails les phases d’installation, voire de configuration. Ce n’est pas accessible aux nouveaux utilisateurs d’OpenBSD…
Il est VRAIMENT nécessaire de faire preuve de réflexion, discernement et d’avoir un minimum de compétences, pour comprendre les liens entre les différentes briques !
Merci de votre compréhension - ne venez pas pleurer ; ne cherchez pas à me contacter par quelques moyens existants - venez vous faire aider amicalement sur le forum de la communauté obsd4a !
Par les paquets
Installez le paquet nextcloud.
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 suivants, tels que : php-bz2 php-curl php-gd php-pdo_sqlite php-intl php-zip pecl72-redis redis libmcrypt oniguruma icu4c-wwwdata
pecl7*-redis
!Bibliothèque sodium
Certaines options de Nextcloud nécessitent la gestion de bibliothèque cryptographique ; il nous faut installer la libsodium
pecl7*-libsodium
(où 7* est à remplacer par le numéro de version de PHP-7) - qui n’existe plus dès PHP 7.3, car ce dernier gére correctement la libsodium.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 le service 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é : 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
- Xavier Cartron @thuban explique comment faire…
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
Par Docker
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
Je propose de créer un petit script shell qui permettra toute modification aisément de la commande au cas où :
#!/bin/sh
docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nom<br>-domaine<br>.tld' \--restart always \--cap-add MKNOD collabora/code
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, ce script demande de grosses ressources machine car la phase de compilation et d’installation se déroule durant des heures !
- un minimum de 3.7 Go de RAM
- un minimum de 13 Go d’espace disque vide…
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
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 scriptofficeonline
…
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 :
É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’optionstatic-auth-secret
dans le fichier de configuration du serveur Turn. Puis changez si besoin les protocoles utilisés.
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:
- https://nextcloud.com/collaboraonline/
- https://www.collaboraoffice.com/code/nginx-reverse-proxy/
- https://help.nextcloud.com/t/howto-setup-nextcloud-talk-with-turn-server/30794
- https://www.apb-informatique.fr/nextcloud-installation-de-lapplication-collabora-online/
Enjoy-IT! Enjoy-ID!