====== installation et configuration de nextcloud====== =====suivi de : utilisateurs sous nextcloud===== * Objet : tuto nextcloud et collabora online : * Niveau requis : {{tag>débutant avisé}} * * Création par [[user>lagrenouille et Manu]] le 01/11/2019 * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) ===== 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 === ServerAdmin lagrenouille@localhost ServerName funambule.org ServerAlias www.funambule.org ServerAlias cumulus DocumentRoot /var/www/html/nextcloud/ Options +FollowSymLinks AllowOverride all Require all granted Dav off SetEnv HOME /var/www/html/nextcloud/ SetEnv HTTP_HOME /var/www/html/nextcloud/ ErrorLog /var/log/apache2/nextcloud/error.log LogLevel warn CustomLog /var/log/apache2/nextcloud/access.log combined RewriteEngine On j’ai eu quelques erreurs qui me demandait d’installer les paquets suivant : {{https://debian-facile.org/images/file-R1501c103de40a0a47de866e12ebf1095.png}} . apt-get install php5-curl php7.3-xml php-mbstring php7.3-xml php-dom Puis j’ai l’affichage dans le navigateur : {{https://debian-facile.org/images/file-R96293f6f6f9fb75669700b7658d6b1f2.png}} 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 {{https://debian-facile.org/images/file-Rf45f56dbec3dd8159bcaff48a6aed477.png}} 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 === #!/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 === ServerName funambule.org ServerAlias www.funambule.org RedirectMatch ^(.*)$ https://funambule.org/$1 == 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== ServerAdmin lagrenouille@localhost ServerName funambule.org ServerAlias www.funambule.org ServerAlias cumulus SSLEngine on SSLCertificateFile /var/lib/dehydrated/certs/funambule.org/fullchain.pem SSLCertificateKeyFile /var/lib/dehydrated/certs/funambule.org/privkey.pem DocumentRoot /var/www/html/nextcloud/ Options +FollowSymLinks AllowOverride all Require all granted Dav off SetEnv HOME /var/www/html/nextcloud/ SetEnv HTTP_HOME /var/www/html/nextcloud/ Alias /privatebin /var/www/html/privatebin/ Options +FollowSymLinks AllowOverride all Require all granted Alias /compta /var/www/html/compta/dolibarr/htdocs/ Options +FollowSymLinks AllowOverride all Require all granted Alias /lebarananar /var/www/html/lebarananar/ Options +FollowSymLinks AllowOverride all Require all granted ErrorLog /var/log/apache2/nextcloud/error.log LogLevel warn CustomLog /var/log/apache2/nextcloud/access.log combined RewriteEngine On === 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 ==== '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 === ServerAdmin lagrenouille@localhost ServerName funambule.org ServerAlias www.funambule.org ServerAlias cumulus SSLEngine on SSLCertificateFile /var/lib/dehydrated/certs/funambule.org/fullchain.pem SSLCertificateKeyFile /var/lib/dehydrated/certs/funambule.org/privkey.pem DocumentRoot /var/www/html/funambule/ Require all granted Alias /nextcloud /var/www/html/nextcloud Options +FollowSymLinks AllowOverride all Require all granted Dav off SetEnv HOME /var/www/html/nextcloud/ SetEnv HTTP_HOME /var/www/html/nextcloud/ ErrorLog /var/log/apache2/nextcloud/error.log LogLevel warn CustomLog /var/log/apache2/nextcloud/access.log combined RewriteEngine On ** 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** {{https://debian-facile.org/images/file-Rc9f8506df62ce366b7d814da5187d498.png}} **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 {{https://debian-facile.org/images/file-R3a37098d2eb9ff4b09bc7817138e6766.png}} {{https://debian-facile.org/images/file-Rb0ad4b0c42a602ad7dc72cce899ae11e.png}} =====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 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 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 {{https://debian-facile.org/images/file-Reed34f4fccb1ea3f63adb221acf4664d.png}} **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 {{https://debian-facile.org/images/file-R8b51ab3ec3133d8874de73fd5efc424e.png}} =====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 {{https://debian-facile.org/images/file-R4be31b7dfb2f9a1984a96b3f40e7abc7.png}} 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. {{https://debian-facile.org/images/file-R70d90742c50d9c939e9f5a6cda546932.png}} En haut à droite cliquez sur votre logo (rond) {{https://debian-facile.org/images/file-Ra81169f83e7b1f694911425b0e4efde6.png}} c'est là que vous pouvez choisir la langue, mettre votre logo, etc... {{https://debian-facile.org/images/file-R081bddeea85718282761a64b268dbd5a.png}} ===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. {{https://debian-facile.org/images/file-Re3ec2cbefdd948a2ae6a79a31b697113.png}} 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 {{https://debian-facile.org/images/file-R5302f807d9e7bef1d3d373b7b71bd14d.png}} Su le droite vous avez les 3 petits points, si vous cliquez dessus, voila ce que vous pouvez faire: {{https://debian-facile.org/images/file-R2b59be3b024b71790527a7f03e9abca5.png}} ===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 {{https://debian-facile.org/images/file-Rf67ab1b55d5866e2c31fae5d49f03798.png}} cliquez sur le petit V renversé {{https://debian-facile.org/images/file-R6e48d156f883b928da8f256c73705da3.png}} cliquez sur le symbole + {{https://debian-facile.org/images/file-R89889f3bd1df55d9aec4a8752a2c655d.png}} 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. {{https://debian-facile.org/images/file-Ra038550db9f4f6534170dbffcbddb7c7.png}} **Revenez à vos dossiers** ** Puis vous partagez le dossier**: **cliquez sur partagé.** {{https://debian-facile.org/images/file-Ra88695f053a5d21110915b3b17ad914c.png}} {{https://debian-facile.org/images/file-R4e7c2706c6a5a8b57e6c593b9d40fcb5.png}} **Quand le nouvel utilisateur se connecte, vous verrez son logo** {{https://debian-facile.org/images/file-R5e5202e7f15ffa7d44de687412849925.png}} =====À 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 {{https://debian-facile.org/images/file-Re7fda6e24527d2871868de41a92738f9.png}} ===La sortie de serveur Turn à légèrement changé le script python pour le DNS=== il est rajouté à la fin # 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) {{https://debian-facile.org/images/file-Ra9874b11056daf115efc29dc83a263f1.png}}