Table de Matieres
I. Présentation
Créé en 2016, Nextcloud est un fork de la solution ownCloud, qui sert à créer une plateforme d’hébergement et de partage de fichiers, comme nous le propose Microsoft avec OneDrive, Google avec Google Drive ou encore la solution Dropbox. A la différence qu’avec Nextcloud, c’est vous qui hébergez et gérez la plateforme, et c’est vous aussi qui maîtrisez les données puisqu’elles seront stockées sur votre infrastructure. Autrement dit, vos données ne vont pas traverser l’Océan Atlantique.
L’idée est simple : vous créez des utilisateurs, ils disposent chacun d’un espace privé avec un espace de stockage alloué, et ils peuvent ensuite partager des données si besoin.
Nextcloud est accessible par l’intermédiaire d’un navigateur, mais il dispose aussi d’une application mobile, ainsi que d’un client de synchronisation pour rendre vos données accessibles hors ligne. Grâce à WebDAV, il est possible de connecter un lecteur réseau sur sa machine via le protocole HTTPS.
Nextcloud ne néglige pas l’aspect sécurité : analyse antivirus, authentification à deux facteurs, gestion des droits, authentification basée sur des sources externes (Active Directory, Shibboleth, SAML 2.0…), etc.
II. Prérequis
Dans cet article, je vous propose d’installer Nextcloud sur CentOS 8 sur un socle LAMP, avec Apache et MariaDB (MySQL) donc. Si besoin, je vous propose de suivre mon article sur l’installation d’un serveur LAMP sous CentOS.
Note : Nextcloud peut tout à fait s’installer sur un serveur Nginx
En complément, après avoir installé le serveur LAMP, il faudra s’assurer de la présence des modules PHP utiles à Nextcloud. Pour être sûr, exécutez cette commande :
yum install -y php-mysqlnd php-common php-json php-xml php-gd php-mbstring php-process php-pecl-zip php-pdo php-intl php-ldap
Nous installons notamment le module php-pdo pour la gestion d’une connexion à notre serveur MariaDB/MySQL, php-gd pour la manipulation des images, ainsi que php-ldap pour l’interconnexion à un serveur LDAP type Active Directory pour l’authentification.
III. Préparer la base de données Nextcloud
Avant d’attaquer la partie service web, nous allons créer la base de données pour Nextcloud. L’idéal pour sécuriser l’installation est d’utiliser un utilisateur dédié à l’utilisation de cette base de données.
Connectez-vous au serveur MariaDB/MySQL :
mysql -u root -p
Créez la base de données, par exemple avec le nom « nextcloud2543 » :
CREATE DATABASE nextcloud2543;
Créez un utilisateur et son mot de passe. Exemple avec l’utilisateur « nextclouduser2543 » et le mot de passe « IT-Connect » :
CREATE USER nextclouduser2543@localhost IDENTIFIED BY 'IT-Connect';
Donnons tous les droits à cet utilisateur sur la base de données « nextcloud2543 » :
GRANT ALL PRIVILEGES ON nextcloud2543.* TO nextclouduser2543@localhost;
Il ne reste plus qu’à mettre à jour les droits et à fermer la connexion à notre serveur MariaDB :
flush privileges; exit;
La base de données est prête, nous pouvons passer à la suite.
IV. Préparation du Virtual Host
Dans cet exemple, plutôt que d’utiliser le site par défaut d’Apache, je vais créer un site dédié à l’utilisation de Nextcloud. Celui-ci répondre à l’adresse nextcloud.it-connect.local. Il sera associé au dossier suivant : /var/www/nextcloud/html/.
Quant aux logs, ils seront stockés dans : /var/www/nextcloud/logs/
Ce nom de domaine n’étant pas enregistré, nous avons deux solutions : créer un nouvel enregistrement DNS sur le serveur DNS de l’entreprise ou alors modifier le fichier hosts de la machine pour créer un enregistrement local. Sinon, vous pouvez aussi acheter et utiliser un nom de domaine 🙂
Pour la préparation du Virtual Host, je vous invite à lire mon article à ce sujet : créer un vHost Apache
Voici le code de mon vHost « nextcloud.conf » :
ServerName nextcloud.it-connect.local DocumentRoot /var/www/nextcloud/html ErrorLog /var/www/nextcloud/logs/error.log CustomLog /var/www/nextcloud/logs/access.log combined <Directory "/var/www/nextcloud/html/"> Require all granted AllowOverride All Options FollowSymLinks MultiViews Dav off
Avec la configuration ci-dessus, tout le monde pourra se connecter à votre Nextcloud car il n’y a pas de restriction basée sur l’adresse IP ou autre, l’autorisation est spécifiée via la directive Require all granted.
En complément, la directive AllowOverride All sert à autoriser l’utilisation d’un fichier .htaccess pour configurer les options du site : la réécriture d’URL, par exemple. Nextcloud peut directement modifier le fichier .htaccess alors qu’il n’accède pas directement au fichier de votre vHost.
Pensez à créer le lien symbolique pour activer le site :
ln -s /etc/httpd/sites-available/nextcloud.conf /etc/httpd/sites-enabled/nextcloud.conf
Une fois que c’est prêt, passez à la suite…
V. Récupérer et préparer les sources
Commencez par le téléchargement des sources, directement à partir du site officiel. Attention, le lien va évoluer au fil des versions… pensez à vérifier sinon il faudra mettre à jour Nextcloud dans un deuxième temps :
cd /tmp wget https://download.nextcloud.com/server/releases/nextcloud-17.0.1.zip
Décompressez l’archive ZIP téléchargée :
unzip nextcloud-*.zip
Nous allons copier le contenu dans un dossier dédié au site Nextcloud (associé à un vHost Apache), à savoir le dossier « /var/www/nextcloud/html/ » mentionné précédemment. Vous pouvez aussi utiliser la configuration par défaut d’Apache avec « /var/www/html/ ».
cp -R nextcloud/* /var/www/nextcloud/html/
Maintenant, nous allons créer le dossier « data » de Nextcloud :
mkdir /var/www/nextcloud/html/data
Pour finir, deux actions sont nécessaires : attribuer les bons droits et redémarrer le service httpd correspondant à Apache.
chown -R apache:apache /var/www/nextcloud/html systemctl restart httpd.service
VI. Configuration de SELinux
Si vous utilisez SELinux avec le profil « Enforced » il est nécessaire d’adapter sa configuration pour que Nextcloud fonctionne correctement. Voici les commandes référencées dans la documentation de Nextcloud (adaptez les chemins si vous n’utilisez pas le même dossier que moi) :
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/html/data(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/html/config(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/html/apps(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/html/.htaccess' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/html/.user.ini' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/html/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?' restorecon -R '/var/www/nextcloud/html/' setsebool -P httpd_can_network_connect on
Compte-tenu de la configuration effectuée, Nextcloud sera accessible à l’adresse suivante : http://nextcloud.it-connect.local
VII. Installation de Nextcloud
Maintenant que tout est prêt, il faut que l’on déclenche l’installation de Nextcloud. Ouvrez un navigateur et accédez à l’adresse « http://nextcloud.it-connect.local », vous devez accéder sur une page Nextcloud.
Plusieurs infos sont à fournir :
- Un nom d’utilisateur pour le compte administrateur, et son mot de passe
- Cliquez sur « Stockage & base de données » pour choisir « MySQL/MariaDB » afin d’utiliser notre base de données. Indiquez ensuite le nom de votre base de données et les identifiants à utiliser (rappelez-vous ce que nous avons fait lors de la création de la base de données)
Une fois que les champs sont renseignés, démarrez le processus… Cela prend 1 à 2 minutes.
L’installation étant terminée, vous pouvez vous connecter à Nextcloud grâce au compte administrateur créé lors de l’installation. Vous arrivez sur cette interface :
Le fichier de configuration de Nextcloud (/var/www/nextcloud/html/config/config/php) contient toutes les informations de configuration, y compris pour la connexion à la base de données.
Note : si vous avez besoin de relancer le processus d’installation web, vous devez passer la directive « installed » sur « false« . Vous devez aussi créer un fichier « CAN_INSTALL » dans le dossier « config » grâce à la commande « touch CAN_INSTALL« . Ensuite, relancez 🙂
Pour finir, comme me l’a fait remarqué Kiki Novak en commentaire, ownCloud (oui, oui, ownCloud) intègre à sa documentation un script Bash pour affiner les autorisations sur son serveur. Je vous recommande de télécharger et d’exécuter ce script, disponible ici : Affiner les droits
VIII. Astuces et compléments
Pour terminer ce tutoriel, je souhaitais partager avec vous deux informations concernant Nextcloud :
1 – Astuce pour réinitialiser le mot de passe « admin » de Nextcloud
Exemple avec le compte « florian » :
sudo -u apache php /var/www/nextcloud/html/occ user:resetpassword florian
2 – Problème de connexion : page login qui boucle
Si vous n’arrivez pas à vous connecter suite à l’installation, il peut y avoir un problème de droits au niveau de la gestion des sessions PHP. Dans ce cas, adaptez les droits comme ceci :
sudo chown root:apache /var/lib/php/session/ -R
Pour la suite de la configuration, il sera pertinent de configurer le cache PHP OPcache sur le serveur pour optimiser le chargement des pages, ainsi que d’utiliser le protocole HTTPS plutôt que HTTP pour chiffrer les connexions client-serveur. Il y a également une optimisation possible sur la gestion des verrouillages de fichiers (Transactional file locking) en s’appuyant sur Redis. D’autres tutoriels Nextcloud à suivre… ?
Hébergez votre site à partir de 2$ sur 👉👉👉 https://www.tnctech.ca