Installez Nextcloud sur Arch Linux avec Nginx, MariaDB et PHP7 en 2019
Dans ce tutoriel, je vais vous montrer comment configurer votre propre serveur Nextcloud sur Arch Linux avec Nginx, MariaDB et PHP7. Nextcloud est une alternative open source auto-hébergée à Dropbox. Avec Nextcloud, vous pouvez synchroniser des fichiers entre votre ordinateur, votre tablette et votre smartphone.
Conditions préalables
Ce tutoriel suppose que vous avez déjà installé une pile LEMP (Linux, Nginx, MariaDB/MySQL, PHP) sur Arch Linux. Si vous ne l’avez pas déjà fait, veuillez consulter le guide facile à suivre ci-dessous.
- Installez Nginx, MariaDB, PHP7 (LEMP) sur Arch Linux
Après avoir installé la pile LEMP, revenez ici et suivez les instructions ci-dessous. Si vous disposez d'un serveur Arch Linux, connectez-vous dessus. Vous pouvez également utiliser votre ordinateur Arch Linux local.
Étape 1 : Installer le serveur Nextcloud sur Arch Linux
Téléchargez l'archive zip NextCloud sur votre serveur. La dernière version est NextCloud 16.0.1. Vous devrez peut-être modifier le numéro de version. Accédez à https://nextcloud.com/install et cliquez sur le bouton de téléchargement pour consulter la dernière version. Vous pouvez télécharger l'archive zip avec wget dans le terminal.
sudo pacman -S wget
wget https://download.nextcloud.com/server/releases/nextcloud-16.0.1.zipInstallez le décompressez et extrayez-le à la racine du document du serveur Web Nginx. (/usr/share/nginx/).
sudo pacman -S unzip
sudo unzip nextcloud-16.0.1.zip -d /usr/share/nginx/
Laissez ensuite l'utilisateur Nginx (http) être le propriétaire du répertoire nextcloud.
sudo chown http:http /usr/share/nginx/nextcloud/ -RÉtape 2 : Créer une base de données et un utilisateur dans MariaDB
Connectez-vous au serveur de base de données MariaDB avec la commande suivante :
sudo mysql -u rootCréez ensuite une base de données pour Nextcloud. Ce tutoriel nomme la base de données nextcloud. Vous pouvez utiliser le nom de votre choix.
create database nextcloud;Créez l'utilisateur de la base de données. Encore une fois, vous pouvez utiliser votre nom préféré pour cet utilisateur. Remplacez votre mot de passe par votre mot de passe préféré.
create user nextclouduser@localhost identified by 'your-password';Accordez à cet utilisateur tous les privilèges sur la base de données nextcloud.
grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'your-password';Videz la table des privilèges et quittez.
flush privileges;
exit;Étape 3 : Activer la journalisation binaire dans MariaDB
Modifiez le fichier de configuration principal du serveur MariaDB.
sudo nano /etc/my.cnf.d/server.cnfAjoutez les deux lignes suivantes sous la ligne [mysqld].
log-bin = mysql-bin
binlog_format = mixedLe format du journal binaire doit être défini sur mixte. Enregistrez et fermez le fichier. Redémarrez ensuite le service MariaDB.
sudo systemctl restart mariadbÉtape 4 : Créer un fichier de configuration Nginx pour Nextcloud
Tout d'abord, créez un répertoire conf.d pour les fichiers de configuration Nginx individuels.
sudo mkdir /etc/nginx/conf.d
Créez ensuite un fichier de configuration pour Nextcloud.
sudo nano /etc/nginx/conf.d/nextcloud.confMettez le texte suivant dans le fichier.
server {
listen 80;
server_name nextcloud.your-domain.com;
# Add headers to serve security related headers
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
# Path to the root of your installation
root /usr/share/nginx/nextcloud/;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
# last;
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
location ~ /.well-known/acme-challenge {
allow all;
}
# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;
# Disable gzip to avoid the removal of the ETag header
gzip off;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
#Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
# Optional: Don't log access to assets
access_log off;
}
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
# Optional: Don't log access to other assets
access_log off;
}
}Remplacez le texte de couleur rouge par vos données réelles. Si vous configurez Nextcloud sur votre ordinateur personnel, entrez votre adresse IP privée pour le nom du serveur, comme :
server_name 192.168.1.105Ensuite, modifiez le fichier /etc/nginx/nginx.conf
sudo nano /etc/nginx/nginx.confAjoutez la ligne suivante dans la section http afin que les fichiers de configuration Nginx individuels soient chargés.
include /etc/nginx/conf.d/*.conf;Comme ça:
http {
include /etc/nginx/conf.d/*.conf;
include mime.types;
default_type application/octet-stream;
.....Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.
sudo nginx -tSi le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl reload nginxÉtape 5 : Installer et activer les modules PHP
Nextcloud nécessite que les modules mysql, gd, zip , intl et curl soient activés afin de fonctionner correctement. Le module mysql est déjà installé dans le tutoriel LEMP précédent. Installez maintenant les modules gd et intl avec la commande suivante :
sudo pacman -S php-gd php-intlModifiez ensuite le fichier php.ini.
sudo nano /etc/php/php.ini
Trouvez les 6 lignes suivantes (il y en a sur la ligne 900). Supprimez les points-virgules pour activer ces 6 modules.
;extension=mysqli
;extension=pdo_mysql
;extension=gd
;extension=intl
;extension=zip
;extension=curlVous pouvez également exécuter les 6 commandes suivantes pour activer ces extensions sur Arch Linux, vous n'avez donc pas besoin d'ouvrir le fichier et de trouver les 6 lignes. L'éditeur de texte sed recherchera et remplacera le texte sans ouvrir le fichier.
sudo sed -i 's/;extension=mysqli/extension=mysqli/g' /etc/php/php.ini
sudo sed -i 's/;extension=pdo_mysql/extension=pdo_mysql/g' /etc/php/php.ini
sudo sed -i 's/;extension=gd/extension=gd/g' /etc/php/php.ini
sudo sed -i 's/;extension=zip/extension=zip/g' /etc/php/php.ini
sudo sed -i 's/;extension=curl/extension=curl/g' /etc/php/php.ini
sudo sed -i 's/;extension=intl/extension=intl/g' /etc/php/php.ini
Enregistrez et fermez le fichier. Rechargez ensuite le processus php-fpm pour que les modifications prennent effet.
sudo systemctl reload php-fpmle programme d'installation Web Nextcloud
Maintenant, dans la barre d'adresse de votre navigateur, tapez
nextcloud.your-domain.compour accéder au programme d'installation Web Nextcloud. Si vous effectuez l'installation sur un ordinateur Arch Linux local, saisissez votre adresse IP privée telle que 192.168.1.105. Vous verrez ce qui suit.
Vous devez créer un compte administratif et connecter le service NextCloud à la base de données MariaDB. Entrez le nom d'utilisateur, le mot de passe et le nom de la base de données que vous avez créés précédemment. Une fois que c'est fait, votre serveur Nextcloud est prêt à fonctionner.
Si vous utilisez un serveur Arch Linux distant, je vous recommande d'installer un certificat SSL/TLS avant de terminer l'installation dans le navigateur Web pour empêcher le reniflage malveillant.
Obtenez un certificat SSL gratuit de Let's Encrypt
Cette étape est nécessaire sur un serveur distant car vous voulez vous assurer que votre nom d'utilisateur et votre mot de passe Nextcloud ne sont pas détectés par des personnes malveillantes. Ignorez cette étape si vous configurez Nextcloud sur votre ordinateur personnel.
Nous devons d’abord installer le client certbot et le plugin Nginx qui sont disponibles dans le référentiel de la communauté Arch Linux.
sudo pacman -S certbot certbot-nginxUtilisez ensuite le plugin Nginx pour obtenir et installer un certificat pour le serveur Web Nginx comme ci-dessous.
sudo certbot --nginx --agree-tos --redirect --staple-ocsp --email your-email-address -d nextcloud.your-domain.comJe suppose que vous utilisez un nom de domaine tel que nextcloud.your-domain.com pour accéder à l'interface Web ownCloud. Vous devez également faire pointer votre nom de domaine vers l'adresse IP de votre serveur dans DNS avant d'exécuter la commande ci-dessus.
Une fois le certificat obtenu et installé, rechargez Nginx.
sudo systemctl reload nginxCertificat TLS à renouvellement automatique
Il est conseillé de renouveler automatiquement le certificat Let’s Encrypt TLS. Nous pouvons y parvenir avec le travail cron. Installez d’abord Cronie sur Arch Linux.
sudo pacman -S cronieDémarrez le démon cron.
sudo systemctl start cronieActivez le démarrage automatique au démarrage du système.
sudo systemctl enable cronieModifiez ensuite le fichier crontab de l'utilisateur root.
sudo crontab -eMettez la ligne suivante dans le fichier qui tentera de renouveler votre certificat une fois par jour.
@daily certbot renew --quietEnregistrez et fermez le fichier.
Configurer OPcache pour améliorer les performances
OPcache peut améliorer les performances des applications PHP en mettant en cache le bytecode précompilé. Par défaut, OPcache n'est pas activé sur Arch Linux. Pour l'activer, ouvrez le fichier php.ini.
sudo nano /etc/php/php.iniTrouvez la ligne suivante.
;zend_extension=opcacheSupprimez le point-virgule pour que l'extension OPcache (alias module) puisse être activée. Enregistrez et fermez le fichier. Rechargez ensuite PHP-FPM.
sudo systemctl reload php-fpmVous pouvez maintenant vérifier les modules activés avec la commande suivante.
php -mPar défaut, tous les paramètres opcache du fichier php.ini sont commentés. Pour de meilleures performances, il est recommandé d’utiliser les paramètres suivants.
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1Après avoir effectué ces modifications. Enregistrez et fermez le fichier. Et rechargez PHP-FPM
sudo systemctl reload php-fpmAugmenter la limite de taille du fichier de téléchargement
La taille maximale par défaut du fichier de téléchargement définie par Nginx est de 1 Mo. Pour autoriser le téléchargement de fichiers volumineux sur votre serveur NextCloud, modifiez le fichier de configuration Nginx pour NextCloud.
sudo nano /etc/nginx/conf.d/nextcloud.confNous avons déjà défini la taille maximale du fichier dans ce fichier, comme indiqué par
client_max_body_size 512M;Vous pouvez le changer si vous préférez, comme 1G.
client_max_body_size 1024M;Enregistrez et fermez le fichier. Rechargez ensuite Nginx pour que les modifications prennent effet.
sudo systemctl reload nginxPHP définit également une limite de taille de fichier de téléchargement. La taille maximale par défaut du fichier à télécharger est de 2 Mo. Pour augmenter la taille limite de téléchargement, modifiez le fichier de configuration PHP.
sudo nano /etc/php/php.iniRecherchez la ligne suivante :
upload_max_filesize = 2MModifiez la valeur comme ci-dessous :
upload_max_filesize = 1024MEnregistrez et fermez le fichier. Redémarrez ensuite PHP-FPM.
sudo systemctl restart php-fpmAugmenter la limite de mémoire PHP
La limite de mémoire PHP par défaut est de 128 Mo. NextCloud recommande 512 Mo pour de meilleures performances. Pour modifier la limite de mémoire PHP, éditez le fichier php.ini.
sudo nano /etc/php/php.iniTrouvez la ligne suivante. (ligne 404)
memory_limit = 128MModifiez la valeur.
memory_limit = 512MEnregistrez et fermez le fichier. Vous pouvez également exécuter la commande suivante pour modifier la valeur sans ouvrir manuellement le fichier.
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/php.iniRechargez ensuite le service PHP-FPM pour que les modifications prennent effet.
sudo systemctl reload php-fpmConfigurer le cache Redis pour NextCloud
Si vous accédez à votre page paramètres -> présentation de NextCloud, vous pourriez voir l'avertissement suivant :
No memory cache has been configured. To enhance your performance please configure a memcache if available.Nous activerons la mise en cache mémoire pour nextCloud en utilisant Redis. Exécutez la commande suivante pour installer le serveur Redis à partir du référentiel Arch Linux.
sudo pacman -S redisVous pouvez vérifier la version avec :
redis-server -vExemple de sortie :
Redis server v=5.0.6 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=862f233732e771fdDémarrez Redis.
sudo systemctl start redisUtilisez la commande suivante pour activer le démarrage automatique au moment du démarrage.
sudo systemctl enable redisAfin de configurer Redis comme cache pour nextCloud, nous devons installer l'extension PHP pour l'interface avec Redis.
sudo pacman -S php-redisNous devons maintenant activer les extensions PHP igbinary et redis. Allez dans le répertoire /etc/php/conf.d/, ouvrez le fichier igbinary.ini et supprimez le point-virgule pour activer l'extension igbinary.
extension=igbinary.soOuvrez également le fichier redis.ini et supprimez le point-virgule pour activer l'extension redis.
extension=redisRedémarrez ensuite PHP-FPM.
sudo systemctl restart php-fpmVérifiez si l'extension est activée.
php --ri redisSortir :
redis
Redis Support => enabled
Redis Version => 5.0.2
Available serializers => php, json, igbinary
Available compression => lzf
Directive => Local Value => Master Value
redis.arrays.algorithm => no value => no value
redis.arrays.auth => no value => no value
redis.arrays.autorehash => 0 => 0
redis.arrays.connecttimeout => 0 => 0
redis.arrays.distributor => no value => no value
redis.arrays.functions => no value => no value
redis.arrays.hosts => no value => no value
redis.arrays.index => 0 => 0
redis.arrays.lazyconnect => 0 => 0
redis.arrays.names => no value => no value
redis.arrays.pconnect => 0 => 0
redis.arrays.previous => no value => no value
redis.arrays.readtimeout => 0 => 0
redis.arrays.retryinterval => 0 => 0
redis.arrays.consistent => 0 => 0
redis.clusters.cache_slots => 0 => 0
redis.clusters.auth => no value => no value
redis.clusters.persistent => 0 => 0
redis.clusters.read_timeout => 0 => 0
redis.clusters.seeds => no value => no value
redis.clusters.timeout => 0 => 0
redis.pconnect.pooling_enabled => 1 => 1
redis.pconnect.connection_limit => 0 => 0
redis.session.locking_enabled => 0 => 0
redis.session.lock_expire => 0 => 0
redis.session.lock_retries => 10 => 10
redis.session.lock_wait_time => 2000 => 2000Nous pouvons voir que l'extension Redis est activée. Ensuite, modifiez le fichier de configuration NextCloud.
sudo nano /usr/share/nginx/nextcloud/config/config.phpAjoutez les lignes suivantes au-dessus de la ligne );.
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
),Enregistrez et fermez le fichier. Redémarrez ensuite Nginx et PHP-FPM.
sudo systemctl restart nginx php-fpmRevenez maintenant à la page d'administration de nextCloud, l'avertissement concernant la mise en cache de la mémoire devrait disparaître.
Emballer
Bravo! Vous avez configuré avec succès le stockage cloud personnel NextCloud sur Arch Linux avec Nginx, MariaDB et PHP7. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite ou suivez-nous sur Google+, Twitter ou aimez notre page Facebook. Merci de votre visite!


