Table des matières

installation et configuration de nextcloud

suivi de : utilisateurs sous nextcloud

Introduction

Installation et configuration de nextcloud sur un serveur debian 10 (buster) . cette installation est faite sur mon serveur auto hébergé, donc pas forcément adapté à tous. .

Installation

Pour le téléchargement,

wget https://download.nextcloud.com/server/releases/nextcloud-17.0.0.zip

Puis, pour une installation dans /var/www/html/

cd /var/www/html
unzip /home/lagrenouille/nextcloud-17.0.0.zip

Pour l’installation, j’ai suivi la doc du site de nextcloud

le premier vhost nextcloud.conf

<VirtualHost *:80>
       ServerAdmin lagrenouille@localhost
       ServerName funambule.org
       ServerAlias www.funambule.org	 
       ServerAlias cumulus 
     
       DocumentRoot /var/www/html/nextcloud/

       <Directory /var/www/html/nextcloud/>
          Options +FollowSymLinks
          AllowOverride all
          Require all granted
          <IfModule mod_dav.c>
             Dav off
          </IfModule>
          SetEnv HOME /var/www/html/nextcloud/
          SetEnv HTTP_HOME /var/www/html/nextcloud/
       </Directory>
     
       ErrorLog /var/log/apache2/nextcloud/error.log
       LogLevel warn
       CustomLog /var/log/apache2/nextcloud/access.log combined
       <ifModule mod_rewrite.c>
          RewriteEngine On
       </ifModule>
    </VirtualHost>

j’ai eu quelques erreurs qui me demandait d’installer les paquets suivant :

.

apt-get install php5-curl php7.3-xml php-mbstring php7.3-xml php-dom

Puis j’ai l’affichage dans le navigateur :

nextcloud vous demande un login et un pass plus le login et le pass de la BDD (mysql)

une fois entrée, j’ai changé l’image d’accueil et mis mon logo

adduser lagrenouille www-data
chown -R www-data:lagrenouille /var/www/html/nextcloud
chmod -R 755 nextcloud/ # (ou 770)

pour que tous les utilisateurs du serveur puisse lire, supprimer et renommer fichiers, j'ai mis les data à 755

Créer la BDD

mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 39
Server version: 10.3.17-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
CREATE DATABASE nextcloud;
Query OK, 1 row affected (0.001 sec)
 mysql -u lagrenouille -p -e "show databases";
Enter password: 
+--------------------+
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| nextcloud          |
| performance_schema |
+--------------------+

la base est bien créée

Voici un listing de ce j’ai installé

dpkg -l | grep php
ii  libapache2-mod-php7.3                 7.3.9-1~deb10u1                     amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  php                                   2:7.3+69                            all          server-side, HTML-embedded scripting language (default)
ii  php-common                            2:69                                all          Common files for PHP packages
ii  php-curl                              2:7.3+69                            all          CURL module for PHP [default]
ii  php-mbstring                          2:7.3+69                            all          MBSTRING module for PHP [default]
ii  php-mysql                             2:7.3+69                            all          MySQL module for PHP [default]
ii  php-pear                              1:1.10.6+submodules+notgz-1.1       all          PEAR Base System
ii  php-xml                               2:7.3+69                            all          DOM, SimpleXML, WDDX, XML, and XSL module for PHP [default]
ii  php7.3                                7.3.9-1~deb10u1                     all          server-side, HTML-embedded scripting language (metapackage)
ii  php7.3-cli                            7.3.9-1~deb10u1                     amd64        command-line interpreter for the PHP scripting language
ii  php7.3-common                         7.3.9-1~deb10u1                     amd64        documentation, examples and common module for PHP
ii  php7.3-curl                           7.3.9-1~deb10u1                     amd64        CURL module for PHP
ii  php7.3-gd                             7.3.9-1~deb10u1                     amd64        GD module for PHP
ii  php7.3-json                           7.3.9-1~deb10u1                     amd64        JSON module for PHP
ii  php7.3-mbstring                       7.3.9-1~deb10u1                     amd64        MBSTRING module for PHP
ii  php7.3-mysql                          7.3.9-1~deb10u1                     amd64        MySQL module for PHP
ii  php7.3-opcache                        7.3.9-1~deb10u1                     amd64        Zend OpCache module for PHP
ii  php7.3-readline                       7.3.9-1~deb10u1                     amd64        readline module for PHP
ii  php7.3-sqlite3                        7.3.9-1~deb10u1                     amd64        SQLite3 module for PHP
ii  php7.3-xml                            7.3.9-1~deb10u1                     amd64        DOM, SimpleXML, WDDX, XML, and XSL module for PHP
ii  php7.3-zip                            7.3.9-1~deb10u1                     amd64        Zip module for PHP php7.3-fpm
dpkg -l | grep apache
ii  apache2                               2.4.38-3+deb10u1                    amd64        Apache HTTP Server
ii  apache2-bin                           2.4.38-3+deb10u1                    amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                          2.4.38-3+deb10u1                    all          Apache HTTP Server (common files)
ii  apache2-doc                           2.4.38-3+deb10u1                    all          Apache HTTP Server (on-site documentation)
ii  apache2-utils                         2.4.38-3+deb10u1                    amd64        Apache HTTP Server (utility programs for web servers)
ii  libapache-poi-java                    4.0.1-1                             all          Apache POI - Java API for Microsoft Documents
ii  libapache-pom-java                    18-1                                all          Maven metadata for all Apache Software projects
ii  libapache2-mod-php7.3                 7.3.9-1~deb10u1                     amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  libapache2-mod-php                    2:7.3+69                            all          server-side, HTML-embedded scripting language (Apache 2 module) (default)
ii  libapache2-mod-evasive                1.10.1-3                            amd64        evasive module to minimize HTTP DoS or brute force attacks
ii  apache2-ssl-dev                       2.4.38-3+deb10u1                    amd64        Apache HTTP Server (mod_ssl development headers)
dpkg -l | grep mysql
ii  libdbd-mysql-perl:amd64               4.050-2                             amd64        Perl5 database interface to the MariaDB/MySQL database
ii  mysql-common                          5.8+1.0.5                           all          MySQL database common files, e.g. /etc/mysql/my.cnf
ii  php-mysql                             2:7.3+69                            all          MySQL module for PHP [default]
ii  php7.3-mysql                          7.3.9-1~deb10u1                     amd64        MySQL module for PHP
ii  python3-pymysql                       0.9.3-1                             all          Pure-Python MySQL Driver - Python 3.x
dpkg -l | grep mariadb
ii  libmariadb3:amd64                     1:10.3.17-0+deb10u1                 amd64        MariaDB database client library
ii  mariadb-client-10.3                   1:10.3.17-0+deb10u1                 amd64        MariaDB database client binaries
ii  mariadb-client-core-10.3              1:10.3.17-0+deb10u1                 amd64        MariaDB database core client binaries
ii  mariadb-common                        1:10.3.17-0+deb10u1                 all          MariaDB common metapackage
ii  mariadb-server                        1:10.3.17-0+deb10u1                 all          MariaDB database server (metapackage depending on the latest version)
ii  mariadb-server-10.3                   1:10.3.17-0+deb10u1                 amd64        MariaDB database server binaries
ii  mariadb-server-core-10.3              1:10.3.17-0+deb10u1                 amd64        MariaDB database core server files

IP Dynamique et DNS

Vu que ma box m’attribue des IP dynamique. Je suis allé récupérer mon apikey chez gandi :

récupérer son apikey chez Gandi

En cliquant sur votre nom d'utilisateur en haut à droite, puis sur 'Paramètres'. Cliquez ensuite sur 'Modification de mot de passe & configuration des restrictions d'accès'. C'est sur cette page que vous pourrez générer votre clef API.

Un copain m’a fait un script python qui récupère mon IP publique et qui la place dans ma zone DNS chez Gandi.

Le script

nom.py
#!/usr/local/bin/python3
# -*- coding: UTF-8 -*-
import pycurl
from io import BytesIO
import json
import pprint
import urllib.parse
 
apikey  = 'sxxxxxxxxxxxxx'
buffer  = BytesIO()
buffer1 = BytesIO()
 
curl = pycurl.Curl()
 
# Requete chez Gandi pour avoir l'ip du DNS
curl.setopt(pycurl.HTTPHEADER, [ "X-Api-Key: " + apikey ]);
curl.setopt(pycurl.WRITEDATA, buffer)
curl.setopt(pycurl.URL, "https://dns.api.gandi.net/api/v5/domains/funambule.org/records/@/A")
curl.perform()
data = buffer.getvalue().decode('utf-8')
datajs = json.loads(data)
old_ip = datajs['rrset_values'][0]
 
# Requete chez ifconfig pour avoir l'ip, la vraie
curl.setopt(pycurl.URL, "https://ifconfig.me/all.json")
curl.setopt(pycurl.HTTPHEADER, [ "X-Api-Key: " + apikey ]);
curl.setopt(pycurl.WRITEDATA, buffer1)
curl.perform()
data1js = json.loads(buffer1.getvalue().decode('utf-8'))
new_ip  = data1js['ip_addr']
 
# Les deux sont-elles les memes ?
if old_ip != new_ip:
    # NON - Je supprime l'ancienne adresse
    buffer2 = BytesIO()    
    curl.setopt(pycurl.HTTPHEADER, [ "Content-Type: application/json", "X-Api-Key: " + apikey ])
    curl.setopt(pycurl.CUSTOMREQUEST,'DELETE')
    curl.setopt(pycurl.WRITEDATA, buffer2)
    curl.setopt(pycurl.URL, "https://dns.api.gandi.net/api/v5/domains/funambule.org/records/@/A")
    curl.perform()
    print("DELETE -> " + buffer2.getvalue().decode('utf-8'))
 
    # Je remets new_ip
    post_data = {}
    post_data["rrset_ttl"]    = 10800
    post_data["rrset_values"] = [ new_ip ]
    postfields = json.dumps(post_data)
 
    buffer3 = BytesIO()   
    curl.setopt(pycurl.HTTPHEADER, [ "Content-Type: application/json", "X-Api-Key: " + apikey ])
    curl.setopt(pycurl.CUSTOMREQUEST,'PUT')
    curl.setopt(pycurl.POSTFIELDS, postfields)
    curl.setopt(pycurl.WRITEDATA, buffer3)
    curl.setopt(pycurl.URL, "https://dns.api.gandi.net/api/v5/domains/funambule.org/records/@/A")
    curl.perform()
    print("PUT -> " + buffer3.getvalue().decode('utf-8'))//
 
     # Modification de la configuration du serveur turn
    old_ip_ech = old_ip.replace('.','\.')
 
    cmd = "sed -e 's/^external-ip={}/external-ip={}/' /etc/turnserver.conf >{}".format(old_ip_ech,new_ip,'/etc/turnserver.conf.new')
    subprocess.run(cmd,shell=True, check=True)
 
    cmd = "mv /etc/turnserver.conf /etc/turnserver.conf.bkp"
    subprocess.run(cmd,shell=True, check=True)
 
    cmd = "mv /etc/turnserver.conf.new /etc/turnserver.conf"
    subprocess.run(cmd,shell=True, check=True)
 
    cmd = "systemctl restart coturn"
    subprocess.run(cmd,shell=True, check=True)

le cron

Pour lancer le script de manière régulière :

14 * * * * python3 /etc/dnsnew/manu_update.py

Déplacement de mes data dans un DD de stockage

mv nextcloud/data/  /home/cumulus/

et correction du fichier configconfig.php de nextcloud (il y en aura d’autres plus loin) je remplace

 'datadirectory' => '/var/www/html/nextcloud/data',

par

 'datadirectory' => '/home/cumulus/data',
dans le cloud, j’ai dans
Avertissements de sécurité & configuration :

Il est important pour la sécurité et la performance de votre instance que celle-ci soit correctement configurée. Afin de vous > aider, votre instance Nextcloud effectue des vérifications automatiques. Pour de plus amples informations, veuillez consulter la documentation liée.
Il y a quelques erreurs concernant votre configuration.

Votre dossier de données et vos fichiers sont probablement accessibles depuis internet. Le fichier .htaccess ne fonctionne pas. Nous vous recommandons vivement de configurer votre serveur web de façon à ce que ce dossier de données ne soit plus accessible, ou de le déplacer hors de la racine du serveur web.

SQLite est actuellement utilisé comme système de gestion de base de données. Pour des installations plus volumineuses, nous vous recommandons de migrer vers un autre système de gestion de base de données. C'est particulièrement recommandé lorsque l'on utilise un client bureau pour la synchronisation des fichiers. Pour migrer vers un autre type de base de données, utilisez la ligne de commande : 'occ db:convert-type' ou consultez la documentation ↗.
La limite de mémoire PHP est inférieure à la valeur recommandée de 512 Mo.
Vous accédez à ce site via HTTP. Nous vous recommandons fortement de configurer votre serveur pour forcer l'utilisation de HTTPS, comme expliqué dans nos conseils de sécurisation ↗.

Correction des avertissements 

1) la redirection https

Pour que dehydrated -c fonctionne, il faut qu'apache2 fonctionne sur le port 80. il faut donc désactivé nextcloud-ssl (heureusement qu’une girafe me l’a soufflé à l’oreille, je comprenais pas l’erreur)
apt update
apt install dehydrated  dehydrated-apache2

Paramétrage de dehydrated :

echo "funambule.org www.funambule.org" >> /etc/dehydrated/domains.txt
cat /etc/dehydrated/domains.txt
funambule.org www.funambule.org
dehydrated --register
dehydrated -c

-La commande dehydrated avec l’option -c permet de lancer le processus de création de certificat :

Maintenant, mes clés privées et publiques ainsi que mon certificat seront disponibles dans le répertoire /var/lib/dehydrated/certs/funambule.org

ls -lha /var/lib/dehydrated/certs/funambule.org/
cert-1571438695.csr       cert.pem                  privkey-1571438695.pem
cert-1571438695.pem       chain-1571439065.pem      privkey-1571439065.pem
cert-1571439065.csr       chain.pem                 privkey.pem
cert-1571439065.pem       fullchain-1571439065.pem  
cert.csr                  fullchain.pem 

Réactivé nextcloud-ssl et relancé apache2

systemctl restart apache2

crontab pour dehydraded

cd /etc/cron.weekly/
touch dehydrated
nano dehydraded
#!/bin/bash
/usr/bin/dehydrated -c && systemctl reload apache2
chmod +x /etc/cron.weekly/dehydrated && 

le vhost nextcloud.conf modifié et simplifié, juste pour la redirection

<VirtualHost *:80>
    ServerName    funambule.org
    ServerAlias   www.funambule.org
    RedirectMatch ^(.*)$  https://funambule.org/$1
</VirtualHost>
le vhost https dans /etc/apache2/sites-available/nextcloud-ssl.conf
Commencer le vhost en ajoutant la directive NameVirtualHost *:443 au début du fichier, puisque l'on peut generer plusieurs certificats pour la même machine
<VirtualHost *:443>
       ServerAdmin lagrenouille@localhost
       ServerName funambule.org
       ServerAlias www.funambule.org	 
       ServerAlias cumulus 
     
       <IfModule mod_ssl.c>
         SSLEngine on
         SSLCertificateFile /var/lib/dehydrated/certs/funambule.org/fullchain.pem
         SSLCertificateKeyFile /var/lib/dehydrated/certs/funambule.org/privkey.pem
       </IfModule>
     
       DocumentRoot /var/www/html/nextcloud/
            <Directory /var/www/html/nextcloud/>
          Options +FollowSymLinks
          AllowOverride all
          Require all granted
          <IfModule mod_dav.c>
             Dav off
          </IfModule>
          SetEnv HOME /var/www/html/nextcloud/
          SetEnv HTTP_HOME /var/www/html/nextcloud/
       </Directory>
       
        Alias /privatebin /var/www/html/privatebin/
       <Directory /var/www/html/privatebin/>
          Options +FollowSymLinks
          AllowOverride all
          Require all granted
       </Directory>

       Alias /compta /var/www/html/compta/dolibarr/htdocs/
       <Directory /var/www/html/compta/dolibarr/htdocs/>
          Options +FollowSymLinks
          AllowOverride all
          Require all granted
       </Directory>
       
       Alias /lebarananar /var/www/html/lebarananar/
       <Directory /var/www/html/lebarananar/>
        Options +FollowSymLinks
       AllowOverride all
        Require all granted
      </Directory>     
	     
       ErrorLog /var/log/apache2/nextcloud/error.log
       LogLevel warn
       CustomLog /var/log/apache2/nextcloud/access.log combined
       <ifModule mod_rewrite.c>
          RewriteEngine On
       </ifModule>
    </VirtualHost>

2) Augmentation de la mémoire allouée à PHP

Vous aurez probablement un message concernant la mémoire du cache trop faible. Configurez votre fichier /etc/php/7.3/fpm/php.ini .

Memory-limit 512

pendant que vous y êtes, augmentez aussi l’upload à votre goût :

upload_max_size 5000M

3) Le cache avec redis

apt install redis-server  php-redis

Éditer le fichier: /var/www/chemin_de_votre_serveur/config/config.php et ajouter:

array(...,
'memcache.local' => '\\OC\\Memcache\\Redis', /* contient les scripts php précompilés */
'filelocking.enabled' => 'true',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' =>
        array (
                'host' => 'localhost',
                'port' => 6379,
                'timeout' => 0,
                'dbindex' => 0,
                ),
 ...
);

4) Installation des modules recommandés

Pour le message « Cette instance ne dispose pas de plusieurs modules PHP recommandés. Il est recommandé de les installer pour améliorer les performances, et la compatibilité.
      Intl  et         imagick
  apt install  php-intl  php-imagick    

5) Migration de SQLite vers MariaDB

Pour le message : » SQLite est actuellement utilisé comme système de gestion de base de données. Pour des installations plus volumineuses, nous vous recommandons de migrer vers un autre système de gestion de base de données. » xxxxxxx étant votre mot de passe mysql

sudo -u www-data php occ db:convert-type --password="xxxxxxx"  --all-apps mysql lagrenouille 127.0.0.1 nextcloud

Vous aurez un truc comme ça, mais plus long, je mets juste le début et la fin

Creating schema in new database
oc_accounts
 6/6 [============================] 100%oc_activity
chunked query, 5 chunks
 4329/4329 [============================] 100%oc_activity_mq
    0 [>---------------------------]oc_addressbookchanges
 87/87 [============================] 100%oc_addressbooks
 1/1 [============================] 100%oc_appconfig
 193/193 [============================] 100%oc_authtoken
 8/8 [============================] 100%oc_bruteforce_attempts
 25/25 [============================] 100%oc_calendar_invitations
    0 [>---------------------------]oc_calendar_resources

***etc***etc*****etc**************etc********etc********

8/8 [============================] 100%oc_systemtag
    0 [>---------------------------]oc_systemtag_group
    0 [>---------------------------]oc_systemtag_object_mapping
    0 [>---------------------------]oc_trusted_servers
    0 [>---------------------------]oc_twofactor_backupcodes
    0 [>---------------------------]oc_twofactor_providers
 5/5 [============================] 100%oc_users
 6/6 [============================] 100%oc_users_external
    0 [>---------------------------]oc_vcategory
    0 [>---------------------------]oc_vcategory_to_object
    0 [>---------------------------]oc_whats_new
    0 [>---------------------------]root@lebug:/var/www/html/nextcloud#

Pour avoir accès en ssh de l’extérieur, j’ai mis dans ma box à la configuration avancée/NAT/PAT

ssh  interne 22  externe 2222

le fichier config.php

nom.php
<?php
$CONFIG = array (
  'instanceid' => 'xxxxxxxx',
  'passwordsalt' => 'xxxxxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'trusted_domains' => 
  array (
    0 => 'funambule.org',
      ),
  'datadirectory' => '/home/cumulus/data',
  'dbtype' => 'mysql',
  'version' => '16.0.5.1',
  'overwrite.cli.url' => 'http://www.funambule.org/nextcloud',
  'dbname' => 'nextcloud',
  'dbhost' => '127.0.0.1',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'lagrenouille',
  'dbpassword' => 'XXXXXXXXX',
  'installed' => true,
  'has_rebuilt_cache' => true,
  'maintenance' => false,
  'mail_from_address' => 'lagrenouille',
  'mail_smtpmode' => 'smtp',
  'mail_sendmailmode' => 'smtp',
  'mail_domain' => 'chezlagrenouille.fr',
  'mail_smtpauthtype' => 'LOGIN',
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'filelocking.enabled' => 'true',
  'memcache.distributed' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => 'localhost',
    'port' => 6379,
    'timeout' => 0,
    'dbindex' => 0,
  ),
);

Ajout d'une page de portail

mon nom de domaine est funambule.org donc Création d’un répertoire « funambule »

je déplace l’index de ma page d’accueil dans ce répertoire

ls -lha funambule/
total 20K
drwxr-xr-x 3 www-data lagrenouille 4,0K oct.  21 10:47 .
drwxr-xr-x 4 root     root         4,0K oct.  21 10:44 ..
drwxr-xr-x 2 www-data lagrenouille 4,0K oct.   5 11:56 images
-rwxr-xr-x 1 www-data lagrenouille 4,6K oct.  21 10:47 index.html

j’appartiens au groupe www-data, c’est pourquoi j’ai fait un :

chown -R  www-data lagrenouille

Modification du vhost -ssl

<VirtualHost *:443>
       ServerAdmin lagrenouille@localhost
       ServerName funambule.org
       ServerAlias www.funambule.org	 
       ServerAlias cumulus 
     
       <IfModule mod_ssl.c>
         SSLEngine on
         SSLCertificateFile /var/lib/dehydrated/certs/funambule.org/fullchain.pem
         SSLCertificateKeyFile /var/lib/dehydrated/certs/funambule.org/privkey.pem
       </IfModule>
     
       DocumentRoot /var/www/html/funambule/
       <Directory /var/www/html/funambule/>
          Require all granted
       </Directory>
     
       Alias /nextcloud /var/www/html/nextcloud
       <Directory /var/www/html/nextcloud/>
          Options +FollowSymLinks
          AllowOverride all
          Require all granted
          <IfModule mod_dav.c>
             Dav off
          </IfModule>
          SetEnv HOME /var/www/html/nextcloud/
          SetEnv HTTP_HOME /var/www/html/nextcloud/
       </Directory>
     
       ErrorLog /var/log/apache2/nextcloud/error.log
       LogLevel warn
       CustomLog /var/log/apache2/nextcloud/access.log combined
       <ifModule mod_rewrite.c>
          RewriteEngine On
       </ifModule>
    </VirtualHost>

Notes :

à chaque création ou modification d’un vhost n’oubliez pas :

a2ensite votre.conf 

et relancer le serveur apache

systemctl reload apache2

PS : merci à captnfab pour ses aides et à Manu pour son script python..

les commandes occ de nextcloud

La commande occ de Nextcloud (provenant de “ownCloud Console”) est l'interface de ligne de commande de Nextcloud. Vous pouvez effectuer de nombreuses opérations de serveur courantes avec occ, telles que l'installation et la mise à niveau de Nextcloud, la gestion des utilisateurs, le cryptage, les mots de passe, les paramètres LDAP, etc.

occ est dans le répertoire nextcloud/ Exécuter occ en tant qu'utilisateur HTTP (www-data pour debian)

Rajoutez vous au groupe sudo si ce n'est pas fait:

adduser popol sudo
Ajout de l'utilisateur « popol » au groupe « sudo »...
Adding user popol to group sudo
sudo -u www-data php occ list
cumulus 16.0.5

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
      --no-warnings     Skip global warnings, show command output only
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  check                               check dependencies of the server environment
  help                                Displays help for a command
  list                                Lists commands
  status                              show some status information
  upgrade                             run upgrade routines after installation of a new release. The release has to be installed before.
 activity
  activity:send-mails                 Sends the activity notification mails
 app
  app:check-code                      check code to be compliant
  app:disable                         disable an app
  app:enable                          enable an app
  app:getpath                         Get an absolute path to the app directory
  app:install                         install an app
  app:list                            List all available apps
  app:remove                          remove an app
  app:update                          update an app or all apps
 background
  background:ajax                     Use ajax to run background jobs
  background:cron                     Use cron to run background jobs
  background:webcron                  Use webcron to run background jobs
 config
  config:app:delete                   Delete an app config value
  config:app:get                      Get an app config value
  config:app:set                      Set an app config value
  config:import                       Import a list of configs
  config:list                         List all configs
  config:system:delete                Delete a system config value
  config:system:get                   Get a system config value
  config:system:set                   Set a system config value
 dav
  dav:create-addressbook              Create a dav addressbook
  dav:create-calendar                 Create a dav calendar
  dav:list-calendars                  List all calendars of a user
  dav:move-calendar                   Move a calendar from an user to another
  dav:remove-invalid-shares           Remove invalid dav shares
  dav:sync-birthday-calendar          Synchronizes the birthday calendar
  dav:sync-system-addressbook         Synchronizes users to the system addressbook
 db
  db:add-missing-indices              Add missing indices to the database tables
  db:convert-filecache-bigint         Convert the ID columns of the filecache to BigInt
  db:convert-mysql-charset            Convert charset of MySQL/MariaDB to use utf8mb4
  db:convert-type                     Convert the Nextcloud database to the newly configured one
 deck
  deck:export                         Export a JSON dump of user data
 encryption
  encryption:change-key-storage-root  Change key storage root
  encryption:decrypt-all              Disable server-side encryption and decrypt all files
  encryption:disable                  Disable encryption
  encryption:enable                   Enable encryption
  encryption:encrypt-all              Encrypt all files for all users
  encryption:list-modules             List all available encryption modules
  encryption:set-default-module       Set the encryption default module
  encryption:show-key-storage-root    Show current key storage root
  encryption:status                   Lists the current status of encryption
 federation
  federation:sync-addressbooks        Synchronizes addressbooks of all federated clouds
 files
  files:cleanup                       cleanup filecache
  files:recommendations:recommend     
  files:scan                          rescan filesystem
  files:scan-app-data                 rescan the AppData folder
  files:transfer-ownership            All files and folders are moved to another user - shares are moved as well.
 files_external
  files_external:applicable           Manage applicable users and groups for a mount
  files_external:backends             Show available authentication and storage backends
  files_external:config               Manage backend configuration for a mount
  files_external:create               Create a new mount configuration
  files_external:delete               Delete an external mount
  files_external:export               Export mount configurations
  files_external:import               Import mount configurations
  files_external:list                 List configured admin or personal mounts
  files_external:notify               Listen for active update notifications for a configured external mount
  files_external:option               Manage mount options for a mount
  files_external:verify               Verify mount configuration
 group
  group:add                           Add a group
  group:adduser                       add a user to a group
  group:delete                        Remove a group
  group:list                          list configured groups
  group:removeuser                    remove a user from a group
 integrity
  integrity:check-app                 Check integrity of an app using a signature.
  integrity:check-core                Check integrity of core code using a signature.
  integrity:sign-app                  Signs an app using a private key.
  integrity:sign-core                 Sign core using a private key.
 l10n
  l10n:createjs                       Create javascript translation files for a given app
 log
  log:file                            manipulate logging backend
  log:manage                          manage logging configuration
  log:tail                            Tail the nextcloud logfile
  log:watch                           Watch the nextcloud logfile
 mail
  mail:account:create                 creates IMAP account
  mail:account:export                 Exports a user's IMAP account(s)
 maintenance
  maintenance:data-fingerprint        update the systems data-fingerprint after a backup is restored
  maintenance:mimetype:update-db      Update database mimetypes and update filecache
  maintenance:mimetype:update-js      Update mimetypelist.js
  maintenance:mode                    set maintenance mode
  maintenance:repair                  repair this installation
  maintenance:theme:update            Apply custom theme changes
  maintenance:update:htaccess         Updates the .htaccess file
 maps
  maps:scan-photos                    Rescan photos GPS exif data
  maps:scan-tracks                    Rescan track files
 migrations
  migrations:execute                  Execute a single migration version manually.
  migrations:generate                 
  migrations:generate-from-schema     
  migrations:migrate                  Execute a migration to a specified version or the latest available version.
  migrations:status                   View the status of a set of migrations.
 music
  music:cleanup                       clean up orphaned DB entries (this happens also periodically on the background)
  music:reset-cache                   drop data cached by the music app for performance reasons
  music:reset-database                drop metadata indexed by the music app (artists, albums, tracks, playlists)
  music:scan                          scan and index any unindexed audio files
 notification
  notification:generate               Generate a notification for the given user
 security
  security:certificates               list trusted certificates
  security:certificates:import        import trusted certificate
  security:certificates:remove        remove trusted certificate
 sharing
  sharing:cleanup-remote-storages     Cleanup shared storage entries that have no matching entry in the shares_external table
 trashbin
  trashbin:cleanup                    Remove deleted files
  trashbin:expire                     Expires the users trashbin
 twofactorauth
  twofactorauth:cleanup               Clean up the two-factor user-provider association of an uninstalled/removed provider
  twofactorauth:disable               Disable two-factor authentication for a user
  twofactorauth:enable                Enable two-factor authentication for a user
  twofactorauth:enforce               Enabled/disable enforced two-factor authentication
  twofactorauth:state                 Get the two-factor authentication (2FA) state of a user
 update
  update:check                        Check for server and app updates
 user
  user:add                            adds a user
  user:delete                         deletes the specified user
  user:disable                        disables the specified user
  user:enable                         enables the specified user
  user:info                           show user info
  user:lastseen                       shows when the user was logged in last time
  user:list                           list configured users
  user:report                         shows how many users have access
  user:resetpassword                  Resets the password of the named user
  user:setting                        Read and modify user settings
 versions
  versions:cleanup                    Delete versions
  versions:expire                     Expires the users file versions

Une fois dans nextcloud, vous allez dans “applications” et vous activez la console, le prompt est occ

vous reste plus qu'a mettre la commande

Voir les applications ouvertes ou non

 occ$  app:list
Enabled:
  - accessibility: 1.2.0
  - activity: 2.9.1
  - bruteforcesettings: 1.4.0
  - calendar: 1.7.1
  - cloud_federation_api: 0.2.0
  - comments: 1.6.0
  - contacts: 3.1.6
  - dav: 1.9.2
  - deck: 0.6.6
  - external: 3.3.1
  - federatedfilesharing: 1.6.0
  - federation: 1.6.0
  - files: 1.11.0
  - files_external: 1.7.0
  - files_pdfviewer: 1.5.0
  - files_photospheres: 1.0.5
  - files_rightclick: 0.13.0
  - files_sharing: 1.8.0
  - files_texteditor: 2.8.0
  - files_trashbin: 1.6.0
  - files_versions: 1.9.0
  - files_videoplayer: 1.5.0
  - firstrunwizard: 2.5.0
  - gallery: 18.3.0
  - logreader: 2.1.0
  - lookup_server_connector: 1.4.0
  - mail: 0.17.0
  - maps: 0.1.2
  - music: 0.11.0
  - nextcloud_announcements: 1.5.0
  - notifications: 2.4.1
  - oauth2: 1.4.2
  - ocr: 4.4.13
  - onlyoffice: 3.0.2
  - ownpad: 0.6.13
  - password_policy: 1.6.0
  - privacy: 1.0.0
  - provisioning_api: 1.6.0
  - recommendations: 0.4.0
  - richdocuments: 3.4.2
  - serverinfo: 1.6.0
  - sharebymail: 1.6.0
  - support: 1.0.0
  - survey_client: 1.4.0
  - systemtags: 1.6.0
  - theming: 1.7.0
  - twofactor_backupcodes: 1.5.0
  - updatenotification: 1.6.0
  - user_external: 0.7.0
  - viewer: 1.1.0
  - workflowengine: 1.6.0
Disabled:
  - admin_audit
  - carnet
  - encryption
  - event_update_notification
  - files_markdown
  - gpxmotion
  - user_ldap

synchronisez votre cloud sur votre bureau

apt installe nextcloud-desktop

collabora online

Toujours pareil, la solution sur mon serveur .

wget https://github.com/nextcloud/richdocuments/releases/download/v3.4.2/richdocuments.tar.gz
tar xzf richdocuments.tgz
echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE ./' >> /etc/apt/sources.list.d/collabora.conf
cat /etc/apt/sources.list.d/collabora.list
deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian10 ./
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0CXXXXXXXXXXXX4D
apt search loolwsd
En train de trier... Fait
Recherche en texte intégral... Fait
loolwsd/inconnu,now 4.0.8-2 amd64  [installé]
  LibreOffice Online WebSocket Daemon
loolwsd-dbgsym/inconnu 4.0.8-2 amd64
  debug symbols for loolwsd
apt search code-brand
En train de trier... Fait
Recherche en texte intégral... Fait
code-brand/inconnu,now 4.0-2 all  [installé]
  Collabora Online Development Edition (CODE) branding
apt install loolwsd code-brand

Création d'un sous domaine (cnam) chez gandi cname collabora.funambule.org

maintenant il faut généré un certif autosigné pour loolwsd

openssl req -new -x509 -days 365 -nodes -out /etc/loolwsd/ca-chain.cert.pem -keyout /etc/loolwsd/key.pem
cd /etc/loolwsd/
ln -s ca-chain.cert.pem cert.pem
chown lool.lool key.pem

Le chown est important car key.pem est en 400 et par défaut il appartient à root, alors que loolwsd tourne sous le user lool

ls -lha /etc/loolwsd/
total 60K
drwxr-xr-x   2 root root 4,0K nov.   2 11:11 .
drwxr-xr-x 141 root root  12K nov.   1 14:05 ..
-rw-r--r--   1 root root 1,3K nov.   1 14:18 ca-chain.cert.pem
lrwxrwxrwx   1 root root   17 nov.   1 14:20 cert.pem -> ca-chain.cert.pem
-rw-------   1 lool lool 1,7K nov.   1 14:18 key.pem
-rw-r--r--   1 root root 1,7K oct.  23 09:00 loolkitconfig.xcu
-rw-r-----   1 lool lool  13K nov.   1 15:32 loolwsd.xml
-rw-r-----   1 root root  13K nov.   1 14:47 loolwsd.xml.orig
cat /etc/apache2/sites-enabled/000-proxy-ssl.conf
<VirtualHost *:443>
  ServerName collabora.funambule.org
  Options -Indexes

  # SSL configuration, you may want to take the easy route instead and use Lets Encrypt!
  SSLEngine on
  SSLCertificateFile /var/lib/dehydrated/certs/funambule.org/fullchain.pem
  SSLCertificateKeyFile /var/lib/dehydrated/certs/funambule.org/privkey.pem
  #SSLCertificateChainFile /path/to/intermediate_certificate
  SSLProtocol             all -SSLv2 -SSLv3
  SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:....je raccourcis.......-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-DSS
  SSLHonorCipherOrder     on
  
  # Manu rajoute par la suite
  TimeOut 6000
  
   # Encoded slashes need to be allowed
   AllowEncodedSlashes NoDecode 
  
  # Container uses a unique non-signed certificate
  SSLProxyEngine On
  SSLProxyVerify None
  SSLProxyCheckPeerCN Off
  SSLProxyCheckPeerName Off
  
  # keep the host
  ProxyPreserveHost On
  
  # static html, js, images, etc. served from loolwsd
  # loleaflet is the client part of Collabora Online
  ProxyPass           /loleaflet https://127.0.0.1:9980/loleaflet retry=0
  ProxyPassReverse    /loleaflet https://127.0.0.1:9980/loleaflet
  
  # WOPI discovery URL
  ProxyPass           /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
  ProxyPassReverse    /hosting/discovery https://127.0.0.1:9980/hosting/discovery
  
  # Capabilities
  ProxyPass           /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0
  ProxyPassReverse    /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities
  
  # Main websocket
  ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon
  
  # Admin Console websocket
  ProxyPass   /lool/adminws wss://127.0.0.1:9980/lool/adminws
  # Download as, Fullscreen presentation and Image upload operations
  ProxyPass           /lool https://127.0.0.1:9980/lool
  ProxyPassReverse    /lool https://127.0.0.1:9980/lool

</VirtualHost>

Rajout de l'alias collabora dans nextcloud/config.config.php à la suite de funambule.org

'trusted_domains' => 
  array (
    0 => 'funambule.org',
    1 => 'collabora.funambule.org',
systemctl restart loolwsd
systemctl restart apache2

J'ai du ouvrir les ports dans ma box, 22 interne et 2222 externe pour ssh, 80 et 443 puis 9980

La création d'un document office ouvre instantanément collabora

Maintenant, voila la seule procédure que j'ai trouvé pour collaborer à plusieurs à l'écriture d'un texte.

1) créez votre texte

2) vous avez le sigle de partage à droite (le petit V basculé sur sa droite 3) cliquez dessus et vous aurez à droite “partager un lien”

4) dans la zone de texte mettez l'adresse émail de la personne avec qui vous voulez collaboré sur ce texte

5) en cliquant sur les 3 points, Un menu déroulant s'ouvre, cochez “Permettre la modification”

6) cliquez sur l’icône de presse-papiers, ça affiche le texte “Copié ”

7) gardez ce lien au chaud et collez le dans l’émail que vous envoyez à la, ou aux personnes qui vont travailler avec vous sur le texte.

ça devrait le faire. :o)

Chaque fois qu'une nouvelle personne se connecte, vous verrez son logo en haut de page

autre article sur Debian-facile et ailleurs

https://debian-facile.org/doc:reseau:nextcloud

installation chez gandi

https://blog.leboeuf.me/2017/installer-un-nextcloud-sur-un-simplehosting-de-gandi-de-a-a-z.html

* tuto pour les nouveaux utilisateurs de nextcloud *

Votre premier contact avec le cloud sera le logo et la demande de votre login et mot de passe

Si tout va bien vous arrivez dans votre espace personnel, il n’y aura pas forcément les fichiers et le menu qui sont sur cette image.

Il y aura les applis que l'administrateur à installé, et les dossiers et fichiers que vous allez faire vous même.

En haut à droite cliquez sur votre logo (rond)

c'est là que vous pouvez choisir la langue, mettre votre logo, etc…

Créer des dossiers et mettre des fichiers dedans, mp3, mp4, pdf, txt, odt etc....

Vous avez une petite maison à gauche et un + dans un rond.

Lorsque vous cliquez sur cette croix, c'est là où vous allez créer vos dossiers, puis une fois dans vos dossiers, vous envoyez vos fichiers

Su le droite vous avez les 3 petits points, si vous cliquez dessus, voila ce que vous pouvez faire:

Partagez vos fichiers ou vos dossiers (si l'administrateur vous à donné les droits)

Dans la page de droite vous avez un petit V couche sur sa droite

cliquez sur le petit V renversé

cliquez sur le symbole +

Vous avez un petit carré (symbole d'un document) avec une flèche dedans, cliquez dessus et vous avez le message “copiez le lien”

Collez le lien dans la ligne vide au dessus et cliquez sur la flèche à droite.

Envoyez ce lien chez vos amis, dans vos emails, sur un site, bref mettez le à disposition là où vous voulez partager votre fichier.

Pour les utilisateurs (non admin)

Si un utilisateur veut partager l'écriture d'un fichier, il lui faudra créer les nouveaux utilisateurs, aven nom et email Pour plus de sûreté faite vous un répertoire, exemple “collectif”, les utilisateurs qui seront dans le groupe collectif pourront partagé l'écriture du texte.

Revenez à vos dossiers Puis vous partagez le dossier: cliquez sur partagé.

Quand le nouvel utilisateur se connecte, vous verrez son logo

À propos des utilisateurs

Dans la configuration des utilisateurs, vous créez des groupes, avec vos propres critères:

Dans la configuration “partage” je vous conseil de coché :

N'autoriser les partages qu'entre membres de même groupe Ce qui empêchera que tout le monde voit tous les utilisateurs, mais juste ceux du ou des groupes auxquels il appartient

La sortie de serveur Turn à légèrement changé le script python pour le DNS

il est rajouté à la fin

  <code root># Modification de la configuration du serveur turn
  old_ip_ech = old_ip.replace('.','\.')
  cmd = "sed -e 's/^external-ip={}/external-ip={}/' /etc/turnserver.conf >{}".format(old_ip_ech,new_ip,'/etc/turnserver.conf.new')
  subprocess.run(cmd,shell=True, check=True)
  cmd = "mv /etc/turnserver.conf /etc/turnserver.conf.bkp"
  subprocess.run(cmd,shell=True, check=True)
  cmd = "mv /etc/turnserver.conf.new /etc/turnserver.conf"
  subprocess.run(cmd,shell=True, check=True)
  cmd = "systemctl restart coturn"
  subprocess.run(cmd,shell=True, check=True)</code>