Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
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, je suis allé dans var/www/html/ en user
<code user>wget https://download.nextcloud.com/server/releases/nextcloud-17.0.0.zip</code>
en root
<code root>unzip nextcloud-17.0.0.zip
</code> Pour l’installation, j’ai suivi la doc du site de nextcloud 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 755nextcloud/ (ou 770)
pour que tout le monde puisse renommer les fichiers ou les supprimer, 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éer
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 en DHCP Je suis allé récupérer mon apikey chez gandi :
un copain m’a fait un script python qui récupère mon ip public 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'))//
14 * * * * python3 /etc/dnsnew/manu_update.py == redirection 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',
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 ↗. </note>
== Nous allons corriger ça : ==
1) la redirection https
echo "funambule.org" >>/etc/dehydrated/domains.txt
cat /etc/dehydrated/domains.txt funambule.org www.funambule.org
#apt update
apt instal dehydrated dehydrated-apache2
dehydrated --register
dehydrated -c
apt install redis-server php-redis
Éditer le fichier: /var/www/chemin_de_votre_serveur/config/config.php et ajouter:
'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, ),
Réactivé nextcloud-ssl et relancé apache2
systemctl restart apache2
== le vhost https dans /etc/apache2/sites-available/nextcloud-ssl.conf ==
<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>
== le fichier config.php ==
<?php $CONFIG = array ( 'instanceid' => 'xxxqgcDSQQxxxxxz', 'passwordsalt' => '4Y8+xxxxxxxxxxxxxxxxx5Xr+P48dw2Ja1', 'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxAkcesdtexxxxxY', 'trusted_domains' => array ( 0 => 'funambule.org', ), 'datadirectory' => '/home/cumulus/data', 'dbtype' => 'mysql', 'version' => '16.0.5.1', 'overwrite.cli.url' => 'http://www.funambule.orgX/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, ), );
== le premier vhost nextcloud.conf ==
<VirtualHost *:80> ServerAdmin lagrenouille@localhost ServerName funambule.org ServerAlias www.funambule.org ServerAlias cumulus 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>
== 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>
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
Intl et imagick »</note>
apt install intl 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#
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 5000 M
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
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
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..