Installation de Nextcloud 12 sur Debian 9

1/52/53/54/55/5 (10 votes, moyenne: 4,00 sur 5)
Loading...
I

Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.


Bonjour à tous,

Aujourd’hui, on va voir comment installer Nextcloud 12 sur Debian 9 avec NGINX, PHP 7 et MariaDB. On va évidemment passer un coup de Let’s Encrypt sur la chose.

 

C’est quoi Nextcloud ?

Nextcloud est une alternative à Dropbox, Google Drive, Onedrive, Owncloud, etc … que vous hébergez vous-même dans vos locaux ou chez un provider.

C’est une des plateformes les plus complètes du marché en termes de fonctionnalités, de sécurité et de compatibilité au niveau des clients pour les différents OS.

Pour la liste des fonctionnalités : https://nextcloud.com/compare/

 

Enfin, un support entreprise est disponible moyennant finance.

 

Prérequis :

 

 

Préparation de l’installation :

Créez d’abord un utilisateur Linux pour l’application et ajoutez-le dans le groupe www-data :

useradd nextcloud
usermod -a -G www-data nextcloud

 

Maintenant, créez le dossier qui accueillera l’application :

mkdir -p /var/www/nextcloud

 

Téléchargez l’installateur depuis le site de Nextcloud et appliquez les droits nécessaires :

cd /var/www/nextcloud
wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
mv setup-nextcloud.php index.php
chown nextcloud:www-data -R /var/www/nextcloud

 

Maintenant, ajoutez la configuration Opcache dans PHP7.0-FPM :

echo "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=1" >> /etc/php/7.0/fpm/php.ini

 

Créez un nouveau pool fpm :

nano /etc/php/7.0/fpm/pool.d/nextcloud.conf

 

Et remplissez avec les informations suivantes :

[nextcloud]

listen = /var/lib/php7.0-fpm/nextcloud.sock
listen.owner = nextcloud
listen.group = www-data
listen.mode = 0660

user = nextcloud
group = www-data

pm = dynamic
pm.max_children = 32
pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 16
pm.max_requests = 40000

chdir = /

pm.status_path = /status

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 

Et redémarrez le service pour appliquer les modifications :

service php7.0-fpm restart

 

Maintenant, on va créer un vhost de base :

nano /etc/nginx/sites-enabled/nextcloud.vhost

 

Ajoutez la configuration suivante :

upstream php-handler {
        server unix:/var/lib/php7.0-fpm/nextcloud.sock;
}

server {
        listen 62.210.106.114:80;
        listen [2001:bc8:3d8b:100::100]:80;

        server_name cloud.yaute.ninja;

        root /var/www/nextcloud/;

		
        location ~ ^/.well-known/acme-challenge/* {
                allow all;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
                rewrite ^ /index.php$uri;
        }

}

 

Maintenant, redémarrez NGINX :

service nginx restart

 

Créez le répertoire pour les certificats Let’s Encrypt :

mkdir -p /etc/letsencrypt/live-ecdsa/cloud.yaute.ninja
cd /etc/letsencrypt/live-ecdsa/cloud.yaute.ninja
mkdir letmp

 

Maintenant, créez la clé privée pour votre certificat en indiquant la courbe que vous souhaitez utiliser :

openssl ecparam -genkey -name secp384r1 > privkey-p384.pem

 

Maintenant, créez un CSR, indiquez votre domaine correctement :

openssl req -new -sha256 -key privkey-p384.pem -subj "/CN=cloud.yaute.ninja" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:cloud.yaute.ninja")) -outform der -out csr-p384.der

 

Rendez-vous dans le dossier temporaire « letmp » et créez votre certificat avec Let’s Encrypt (ça serra aussi les commandes pour renouveller le certificat) :

cd letmp
/etc/letsencrypt/letsencrypt-auto certonly -a webroot --email yolo@caramail.zbeul --webroot-path /var/www/nextcloud/ --csr /etc/letsencrypt/live-ecdsa/cloud.yaute.ninja/csr-p384.der --renew-by-default --agree-tos
cat 0001* > /etc/letsencrypt/live-ecdsa/cloud.yaute.ninja/chain.pem

 

Maintenant, modifiez le vhost :

cd /tmp 
wget https://raw.githubusercontent.com/stylersnico/my-webserver/master/etc/nginx/sites-enabled/nextcloud.vhost
echo nextcloud.vhost > /etc/nginx/sites-enabled/nextcloud.vhost

 

Modifiez le server_name et supprimez la ligne suivante :

more_set_headers 'Public-Key-Pins pin-sha256="gIsBx1PSnbUuCsBhf+a/v3O85Yl0lRDfdKrSYqT2k8o="; pin-sha256="gafXTxG2GETsC0h9EJxIijiD+4btWJVA0viEU57ofvY="; pin-sha256="s+rGULHGe6BS8PNbK3ftd336qy+m3hud63WJN4F/yI4="; max-age=5184000';

 

Maintenant, redémarrez nginx :

service nginx restart

 

Connectez-vous en root sur MariaDB :

mysql -uroot -p

 

Et créez la base de données (modifiez le mot de passe):

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS nextcloud;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
exit

 

Et mettez en place le (futur) cron :

crontab -u nextcloud -e

 

et ajoutez ceci à la fin du fichier :

*/15 * * * * php -f /var/www/nextcloud/cron.php

 

 

Installation de Nextcloud 12 :

Rendez-vous maintenant sur l’URL d’installation :

https://cloud.yaute.ninja/

 

Cliquez sur Next :

 

Maintenant, rentrez un . dans la barre de texte, nous n’installerons pas Nextcloud dans un sous-dossier :

 

Créez le compte d’administration et remplissez les informations pour la base de données :

 

Si tout se passe bien, vous aurez cette vue et pourrez utiliser Nextcloud :

 

Configuration de Nextcloud 12 :

Dans un premier temps, on va ajouter le chiffrement de tous les fichiers envoyés par les utilisateurs.

Il ne faudra pas qu’ils oublient leurs mots de passe 🙂

 

Allez dans Apps et activez le Default Encryption Module :

 

Ensuite, allez dans Admin -> Encryption et activez le server-side encryption :

 

Comme ça, l’administrateur du serveur ne pourra pas consulter le contenu des fichiers stockés sans le mot de passe de l’utilisateur :

 

 

Maintenant, allez dans Apps -> Authentification and authorization et activez les deux applications suivantes : Two Factor TOTP Provider et Two Factor U2F

 

Allez ensuite dans Personal et suivez le guide :

 

Créez les codes de sauvegarde et configurez la double authentification :

Maintenant, profitez de votre application 🙂

 

En bonus, vous pouvez :

 

A propos de l'auteur

Nicolas Simond

Ingénieur Systèmes et Réseaux et guitariste hard rock et metal à mes heures perdues.
Je suis le créateur et l'unique rédacteur d'Abyss Project, c'est ici que je note la plupart de mes procédures et quelques divagations.

Si vous l'article vous a aidé, pensez à me payer un café :)

Subscribe
Notify of
guest

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

12 Commentaires
Plus récents
Plus anciens Populaires
Inline Feedbacks
View all comments
Qwaser
6 années plus tôt

Merci pour cet article ! Il m’a permit de peaufiner certaines chose sur mon Nextcloud.

Cependant, est-ce que tu rencontres une erreur quand tu veux télécharger un fichier de ton cloud ? Moi il me sors ça : « Fichier non trouvé. Impossible de trouver le document spécifié sur le serveur. » et ce pour n’importe quel fichier. Pourtant via l’application bureau la synchronisation fonctionne parfaitement et j’ai bien mes fichiers…

Qwaser
Reply to  Nicolas Simond
6 années plus tôt

En faisant nginx -V je ne vois nul part « webdav » donc je pense que non. Après le téléchargement fonctionne si je clique directement sur le fichier donc en soit ce n’est pas si grave.
Par contre tu n’as pas de problème de renouvellement du certificat Let’s Encrypt ? Car j’ai repris ton fichier de configuration et mon cloud est le seul site pour lequel le renouvellement ne fonctionne pas… « Failed authorization procedure. »

Qwaser
Reply to  Qwaser
6 années plus tôt

Voici les lignes que j’ai dû commenter pour que le renouvellement fonctionne :

location / {
rewrite ^ /index.php$uri;
}

# Accès refusé à tous
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}

# Accès refusé à tous
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}

habnai
habnai
6 années plus tôt

Hej Thank you for your great tut after install nextcloud i get this two error: php does not seem to be setup properly to query system environment variables. The test with getenv(« PATH ») only returns an empty response. Please check the installation documentation ↗ for php configuration notes and the php configuration of your server, especially when using php-fpm. No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our documentation. Please double check the installation guides ↗, and check for any errors or warnings in the log. any… Voir plus »

habnai
habnai
Reply to  Nicolas Simond
6 années plus tôt

Thank you for replay i add this and the php error its fixed 🙂 i still get only about the memcache, what you think we use redis server for cache?

Mirabellette
Reply to  Nicolas Simond
6 années plus tôt

Cache system really improve performance even if you are alone to use nextcloud. Especially when you have thousands of files ^^