informatique:serveur-web-linux-apache:nextcloud

NextCloud

Environnement utilisé lors de la rédaction de ce document

  • OS : Linux Debian 10
  • HTTP : Serveur Apache 2.4
  • SGBD : MariaDB
  • Langage : PHP 7.4 exécuté en FPM avec Apache

sudo apt install php7.4-fpm php7.4-common
sudo apt install php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl
sudo apt install php7.4-gmp php7.4-bcmath php7.4-imagick php7.4-xml php7.4-zip

Mémoire limite

Dans la configuration par défaut, la valeur memory_limit n'est pas indiquée. Ajouter dans le fichier de configuration PHP FPM /etc/php/7.4/fpm/conf.d/25-memory.ini.

memory_limit = 1G

Il faut créer un utilisateur et une base de données.

Dans cette section on définie :

  • password_nextcloud : le mot de passe MariaDb ssociée

Se connecter à mariaDb :

mysql -uroot -p
USE mysql;

Créer la base de données :

CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Créer le compte de connexion et associer les droits sur la base de données :

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON nextcloud.* TO 'user_nextcloud'@'localhost' IDENTIFIED BY '${password_nextcloud}';
quit;

Nous allons ajouter un dossier à notre configuration Web actuelle. L'accès se fera par http://www.abonnel.fr/cloud

Éditer le fichier de configuration Apache /etc/apache2/sites-available/100-fr.abonnel.www-cloud.conf

Alias /cloud "/var/www/abonnel.fr/cloud/"

<Directory /var/www/abonnel.fr/cloud/>
  Require all granted
  AllowOverride All
  Options +FollowSymLinks +MultiViews
  MultiviewsMatch Any

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

</Directory>

» Prendre en considération la configuration

a2ensite 100-fr.abonnel.www-cloud.conf

» Activer les modules Apache 2 suivants

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
>> Activer la gestion du SSL
  
sudo a2enmod ssl
sudo a2ensite default-ssl

» Modifier les droits d'accès sur le dossier data

sudo chown -R www-data:www-data /var/www/abonnel.fr/cloud/

» Télécharger le script

Le script est disponible à l'adresse https://nextcloud.com/install/#instructions-server

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.3.tar.bz2

» Déployer le script

sudo tar -xjf  nextcloud-18.0.1.tar.bz2 -C /var/www/abonnel.fr/
sudo mv /var/www/abonnel.fr/cloud/nextcloud /var/www/abonnel.fr/cloud

» Mettre les bons droits sur le dossiers

sudo chown -R www-data:www-data /var/www/abonnel.fr/cloud

» Redémarrage du service Apache

service apache2 restart

» Se connecter à NextCloud pour terminer le paramétrage

Utiliser l'URL qui permet d'accéder à NextCloud. Par exemple https://abonnel.fr/cloud Lors du premier appel, le panneau de configuration initiale s'affiche.

apt-get install clamav clamav-daemon

sudo apt install redis php7.4-redis php7.4-apcu

Il faut éditer le fichier de configuration NextCloud /var/www/abonnel.fr/cloud/config/config.php :

'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\APCu',
'redis' => array(
  'host' => 'localhost',
  'port' => 6379,
),

Il faut associer le groupe redis au compte www-data

sudo usermod -a -G redis www-data

Puis redémarrer Apache2

sudo systemctl restart apache2

Pour modifier les options il faut éditer le fichier de configuration NextCloud /var/www/abonnel.fr/cloud/config/config.php.

Une fois les modification effectuées, il faut exécuter le script suivant :

sudo -u www-data php /var/www/abonnel.fr/cloud/occ maintenance:update:htaccess
Forcer les connexions en https
  'forcessl' => true,
  'forceSSLforSubdomains' => true,
Mettre par défaut l'interface en Français et le code pays
  'default_phone_region' => 'FR',
  'default_language' => 'fr',
  'default_locale' => 'fr_FR',
Faire disparaître le index.php de l'URL
  'overwrite.cli.url' => 'https://www.abonnel.fr/cloud',
  'htaccess.RewriteBase' => '/cloud',
Mise à jour en ligne de commande
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ upgrade

> Désactiver le mode maintenance

sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --off

> Mettre à jour toutes les applications

sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ app:update --all

» Éditer la configuration cron pour www-data

sudo crontab -u www-data -e

Dans la configuration, ajouter :

*/5  *  *  *  * php -f /var/www/abonnel.fr/cloud/cron.php

Créer le fichier /etc/fail2banb/filter.d/nextcloud.conf qui définie les règles de détection d'erreur d'authentification.

[Definition]
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed:
            ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error.
datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"

Le fichier /etc/fail2ban/jail.d/nextcloud.local permet de renseigner l'environnement Nextcloud.

[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 86400
findtime = 43200
logpath = /var/www/abonnel.fr/cloud/data/nextcloud.log

Redémarrer, vérifier :

sudo systemctl restart fail2ban
sudo systemctl status fail2ban
sudo fail2ban-client status nextcloud

Dans le fichier /etc/mysql/conf.d/mysql.cnf

innodb_buffer_pool_size=1G
innodb_io_capacity=4000

Dans un fichier de configuration PHP-FPM, par exemple /etc/php/8.0/fpm/conf.d/25-nextcloud.ini

memory_limit = 1G

pm = dynamic
pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18

opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

» Éditer la configuration cron pour www-data

sudo crontab -u www-data -e

Dans la configuration, ajouter :

*  10  */1  *  * php -f /var/www/abonnel.fr/cloud/occ app:update --all

La base de données a quelques index manquants. L'ajout d'index dans de grandes tables peut prendre un certain temps. Elles ne sont donc pas ajoutées automatiquement. En exécutant occ db:add-missing-indices, ces index manquants pourront être ajoutés manuellement pendant que l'instance continue de tourner. Une fois les index ajoutés, les requêtes sur ces tables sont généralement beaucoup plus rapides.

sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-indices

Il manque des clés primaires dans la base de données. En raison du fait que l’ajout de clés primaires sur les grandes tables peut prendre un certain temps, elles n’ont pas été ajoutées automatiquement. En exécutant occ db:add-missing-primary-keys, ces clés primaires manquantes peuvent être ajoutées manuellement pendant que l’instance continue de fonctionner.

sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-primary-keys

Certaines colonnes facultatives sont manquantes dans la base de données. Étant donné qu'ajouter des colonnes sur des grandes tables peut prendre du temps, elles n'ont pas été ajoutées automatiquement lorsqu'elles sont facultatives. En exécutant occ db:add-missing-columns ces colonnes manquantes peuvent être ajoutées manuellement alors que l'instance continue de fonctionner. Une fois que les colonnes sont ajoutées, la performance ou l'utilisabilité de certaines fonctionnalités pourraient être améliorées.

sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:add-missing-columns

Certaines colonnes de la base de données n'ont pas été converties en big int. Changer le type de colonne dans de grandes tables peu prendre beaucoup de temps, elles n'ont donc pas été converties automatiquement. En exécutant occ db:convert-filecache-bigint ces changements en suspens peuvent être déclenchés manuellement. Cette opération doit être exécutée pendant que l'instance est hors ligne.

sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --on
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ db:convert-filecache-bigint
sudo -u www-data php7.4 /var/www/abonnel.fr/cloud/occ maintenance:mode --off

Activer un utilisateur qui a été désactivé :

sudo -u www-data php occ user:enable [username]

Convertir un fichier vcard 2.1 en vcard 3.0 pour l'importer dans NextCloud :

https://github.com/jowave/vcard2to3

git clone https://github.com/jowave/vcard2to3.git
cd vcard2to3
./vcard2to3.py your_file.vcf
Entrer votre commentaire. La syntaxe wiki est autorisée:
   __ __     __   ____  ____    _  __
  / // / __ / /  / __/ / __ \  / |/ /
 / _  / / // /  _\ \  / /_/ / /    / 
/_//_/  \___/  /___/  \___\_\/_/|_/
 
  • informatique/serveur-web-linux-apache/nextcloud.txt
  • Dernière modification: 2021/05/07 08:37
  • par Cédric ABONNEL