logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Ceci est une ancienne révision du document !


installation et configuration de 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 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 les 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 :

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'))//

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

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>

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,
                ),
 ...
);

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 

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 intl 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

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..

utilisateurs/lagrenouille/tutos/nextcloud-v.17.1572000675.txt.gz · Dernière modification: 25/10/2019 12:51 par captnfab

Pied de page des forums

Propulsé par FluxBB