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. .
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
<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
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
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
Vu que ma box m’attribue des IP dynamique. Je suis allé récupérer mon 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.
#!/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)
Pour lancer le script de manière régulière :
14 * * * * python3 /etc/dnsnew/manu_update.py
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',
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 ↗.
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
cd /etc/cron.weekly/
touch dehydrated
nano dehydraded
#!/bin/bash /usr/bin/dehydrated -c && systemctl reload apache2
chmod +x /etc/cron.weekly/dehydrated &&
<VirtualHost *:80> ServerName funambule.org ServerAlias www.funambule.org RedirectMatch ^(.*)$ https://funambule.org/$1 </VirtualHost>
<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>
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
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, ), ... );
Intl et imagick
apt install php-intl php-imagick
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
<?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, ), );
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
<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..
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
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
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
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…
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:
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.
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
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
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>