Nextcloud est une solution de stockage et de partage de fichiers en ligne. C’est un logiciel libre, distribué gratuitement et installable sur son propre serveur. Nous verrons dans ce guide, comment installer NextCloud sur un serveur Ubuntu 20.04.
Chiffrement de bout en bout, ce qui signifie que les fichiers peuvent être chiffrés sur les appareils clients avant d’être téléchargés sur le serveur, donc même si quelqu’un vole votre serveur, il ne peut pas lire vos fichiers.
Peut être intégré à une suite bureautique en ligne ( Collobora Online , OnlyOffice) afin que vous puissiez créer et éditer vos fichiers doc, ppt, xls directement à partir de NextCloud.
L’App Store contient des centaines d’applications pour étendre les fonctionnalités (comme l’application de calendrier, l’application de contacts, l’application de prise de notes, l’application de vidéoconférence, etc.).
Le client de synchronisation est disponible sur Linux, macOS, Windows, iOS et Android
Prérequis
NextCloud est une application web développée en PHP, il est donc nécessaire d’avoir à disposition un serveur web. Vous pouvez suivre ce guide pour installer votre serveur web sur Linux.
Ici nous verrons comment installer Nextcloud sur Ubuntu 20.04.
Téléchargez Nextcloud sur Ubuntu
Depuis votre serveur, télécharger l’archive zip NextCloud. La dernière version stable est la 19.0.1 au moment de la rédaction de cet article. Allez sur https://nextcloud.com/install pour récupérer le lien de téléchargement et depuis votre terminal, exécuter la commande suivante (à adapter en fonction de la version) :
Ici on balance le tout directement dans le répertoire /var/www/ qui est notre serveur web. On change les droits pour qu’Apache puisse écrire dans le répertoire :
On est pas mal, maintenant passons à la création de la base de données
Créer une base de données et un utilisateur spécifique pour Nextcloud sur MariaDB
Si vous avez suivi mes précédents guides, alors vous avez vu que j’utilise MariaDB pour la partie SQL. On va ici créer l’utilisateur et la base de données que nous utiliserons pour Nextcloud.
Depuis votre terminal, lancer mysql en admin :
sudo mysql
Créez ensuite une base de données pour Nextcloud. Sur ce tutoriel j’appelle 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_passepar votre mot de passe préféré.
Copiez et collez le texte suivant dans le fichier. Remplacez nextcloud.example.com par votre propre sous-domaine préféré.
N’oubliez pas de créer un enregistrement DNS A pour ce sous-domaine dans votre éditeur de zone DNS.
<VirtualHost *:80>
DocumentRoot "/var/www/nextcloud"
ServerName nextcloud.example.com
ErrorLog ${APACHE_LOG_DIR}/nextcloud.error
CustomLog ${APACHE_LOG_DIR}/nextcloud.access combined
<Directory /var/www/nextcloud/>
Require all granted
Options FollowSymlinks MultiViews
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any
</Directory>
</VirtualHost>
Sauvegarder le fichier puis activer ce virtual host via la commande suivante :
sudo a2ensite nextcloud.conf
Lancer la commande suivante pour activer les modules Apache nécessaires au bon fonctionnement de Nextcloud :
sudo a2enmod rewrite headers env dir mime setenvif ssl
Vérifier votre configuration Apache :
sudo apache2ctl -t
Si vous avez le droit à un « syntax OK » alors tous les feux sont aux vert, continuer en redémarrant Apache pour que vos modifications prennent effets :
sudo systemctl restart apache2
Installer et activer les modules PHP
Lancer la commande suivante pour installer les modules PHP nécessaires au bon fonctionnement de NextCloud (y’a du monde !):
Avec les étapes effectuées précédemment, vous devriez déjà avoir accès à Nextcloud via votre domaine ou sous domaine. (Si ce n’est pas le cas, vérifier votre firewall ou redirection de port).
Cependant, pour le moment, votre site n’inspire pas confiance puisque aucun certificat n’est installé. Nous verrons ici comment ajouter un certificat Let’s Encrypt à votre sous-domaine Nextcloud.
Alors avant de commencer à entrer des informations sensibles, on va installer un certificat. Lancer la commande suivante :
sudo apt install certbot python3-certbot-apache
Puis, réclamer votre certificat Let’s Encrypt via la commande suivante (En modifiant les informations en rouge par les votre)
Certbot ne peut pas ajouter automatiquement l’en-tête HSTS dans le fichier de configuration Apache pour Nextcloud. Si vous souhaitez activer HSTS (HTTP Strict Transport Security), modifiez le fichier.
Nous pouvons ensuite ajouter la ligne suivante dans le bloc serveur SSL pour activer l’en-tête HSTS.
Header always set Strict-Transport-Security "max-age=31536000"
Puis fermer et sauvegarder votre fichier de configuration Apache.
Relancer Apache pour que les changements soit pris en compte. Vous devriez maintenant pouvoir accéder à NextCloud en HTTPS sans problème.
sudo systemctl reload apache2
Terminer l’installation
Maintenant, depuis votre domaine / sous-domaine, vous allez pouvoir terminer l’installation de NextCloud. Vous allez devoir créer un compte admin, entrer le chemin du dossier de données Nextcloud, entrer les détails de la base de données que vous avez créés, ect…
Le dossier de données est l’endroit où les fichiers des utilisateurs sont stockés. Pour des raisons de sécurité, il est préférable de placer le répertoire de données en dehors du répertoire Web Nextcloud. Ainsi, au lieu de stocker les fichiers des utilisateurs sous /var/www/nextcloud/data/, nous pouvons le changer en /var/www/nextcloud-data que vous allez pouvoir créer avec la commande suivante:
sudo mkdir /var/www/nextcloud-data
On pose ensuite les droits correctement sur ce répertoire :
Maintenant, vous pouvez rentrer tout ce qu’il faut pour configurer NextCloud :
Bravo ! Vous avez maintenant un serveur Nextcloud installé et prêt à l’emploi ! Dans la suite de cet article, vous trouverez quelques petits tips dont j’ai eu besoin.
Quelques astuces pour Nextcloud
Configurer les notifications mails NextCloud
Ne tarder pas trop à configurer votre serveur mail dans Nextcloud. Il vous sera utile pour bien des choses et notamment la récupération de mot de passe !
Tout ce passe depuis l’interface web, dans la partie Administration > Paramètres de base
Modifier un mot de passe NextCloud via le terminal
Vous avez oublié votre mot de passe et vous n’avez pas encore configuré les notifications mail pour le récupérer ? Pas de panique, depuis un terminal, vous pouvez exécuter une commande qui vous permettra de modifier le mot de passe d’un utilisateur. Remplacement simplement avec le nom de votre utilisateur :
Si vous jetez un coup d’oeil dans la partie Administration > Vue d’ensemble de NextCloud, vous verrez qu’il y a plein de petites recommandations.
Nous allons vois ici comment augmenter le PHP Memory limit qu’il est conseillé d’avoir à 512Mo minimum.
PHP à une memory_limit de 128MB par défaut. Pour changer cette valeur, il est nécessaire d’éditer le fichier php.ini, c’est ce que nous allons faire ici :
sudo nano /etc/php/7.4/apache2/php.ini
Puis, trouver la ligne suivante :
memory_limit = 128M
Changer simplement sa valeur puis sauvegarder le fichier
memory_limit = 512M
Sous Ubuntu, vous pouvez également changer cette valeur, sans avoir à ouvrir le fichier, avec cette « simple » commande :
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/apache2/php.ini
Pour que cela prenne effet, redémarrer Apache :
sudo systemctl reload apache2
Attention, si vous utilisez FPM, alors il est nécessaire également de changer la valeur dans le php.ini de php-fpm. Pour cela, même exercice que tout à l’heure, mais pas au même endroit :
sudo nano /etc/php/7.4/fpm/php.ini
Find the memory_limit parameter and change the value. After saving the file, reload PHP-FPM for the change to take effect.
sudo systemctl reload php7.4-fpm.service
Configurer Redis Cache pour NextCloud
Toujours depuis les paramètres d’administration et la vue d’ensemble, vous pouvez avoir le message suivant :
Aucun cache mémoire n’est configuré. Si possible, configurez un « memcache » pour améliorer les performances.
Il est recommandé d’activer une solution de cache pour améliorer les performances. Ici nous utiliserons Redis. Lancer la commande suivante pour installer Redis depuis le repository Ubuntu :
sudo apt install redis-server
Si besoin, vous pouvez vérifier la version de redis via la commande suivante :
redis-server -v
Voici un exemple de ce qui devrait s’afficher :
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923
Vous pouvez maintenant vérifier si Redis est correctement installer via la commande suivante :
systemctl status redis
Ce qui devrait donner un résultat de ce type :
[email protected]:~$ systemctl status redis ● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: ena> Active: active (running) since Mon 2020-07-20 21:09:39 UTC; 12s ago Docs: http://redis.io/documentation, man:redis-server(1) Main PID: 2571521 (redis-server) Tasks: 4 (limit: 4621) Memory: 1.9M CGroup: /system.slice/redis-server.service └─2571521 /usr/bin/redis-server 127.0.0.1:6379
Vous pouvez quitter en appuyant sur la touche « Q »
Si malgré tout Redis n’est pas démarré, vous pouvez le lancer via la commande suivante :
sudo systemctl start redis-server
Pour activer le démarrage du serveur au boot du serveur, vous pouvez lancer la commande suivante :
sudo systemctl enable redis-server
Pour configurer Redis correctement, il est nécessaire d’installer une extension qui servira d’interface entre php et redis, lancer la commande suivante :
sudo apt install php-redis
Vous pouvez vérifier que l’extension est bien installée et activée via la commande suivante :
php --ri redis
Ce qui devrait vous afficher quelque chose comme ça :
Si l’extension n’est pas activée, lancer la commande suivante :
sudo phpenmod redis
Maintenant, il est nécessaire d’éditer la configuration de Nexcloud pour lui dire d’utiliser Redis pour le memcache. On edite le fichier de config :
Sauvegarder le fichier puis relancer Apache et php-fpm
sudo systemctl restart apache2 php7.4-fpm
Maintenant, vous ne devriez plus avoir le message d’information concernant le cache !
Adding Missing Indexes
La mémoire c’est OK, le cache c’est OK, maintenant il reste encore quelques messages concernant la base de données et quelques index manquants.
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.
Alors nous allons devoir ajouter nous-mêmes ces index manquants. Pour ça, aller dans le répertoire de nexcloud :
cd /var/www/nextcloud/
Lancer la commande suivante qui devrait ajouter les index manquants :
sudo -u www-data php occ db:add-missing-indices
Maintenant si vous rafraîchissez votre page « Vue d’ensemble » il ne devrait plus y avoir d’erreur concernant les index manquants.
Conversion to Big Int
On termine avec les colonnes non converties en Big Int. Encore une fois, vous avez peut-être cet avertissement dans votre instance Nextcloud :
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. Pour plus d'information, consulter la page de la documentation.
Alors nous allons avoir besoin de convertir manuellement ces colonnes. Rendez-vous dans répertoire de Nexcloud :
cd /var/www/nextcloud/
Passez Nextcloud en mode maintenance pour éviter les changements par vos utilisateurs pendant cette conversion :
sudo-uwww-dataphpoccmaintenance:mode--on
Maintenant, lancer la commande suivante pour convertir les colonnes :
Administrateur Système et Autoentrepreneur depuis 2009 pour la société zerobug. Je partage mes connaissances, problèmes et solutions à travers articles ou tweets !
Hello J’ai tenté l’installation sur unz VM avec Ubuntu Server sur mon synology. Ca ne fonctionne pas, j’ai sans arret la page Apache qui s’affiche et je n’arrive pas à utiliser la VM avec le reverse proxy… Probleme, c’est que j’ai maintenant modifié pas mal de chose et je sais plus trop quoi faire…
Je pense trouver une solution : 1 bien configuré le virtualhost 2 dans /etc/apache2/sites-available vous utilisez cette commande sudo a2dissite 000-default.conf 3 vous utilisez sudo a2ensite nextcloud.conf 4 vous allez mettre votre servername dans la barre de recherche
Bonjour J’ai pas tout compris à votre explication dsl… Comment bien configurer le vhost ? servername ? Le nom de la machine ? Genre « ubuntu-server » ?
Pour bien configurer le vhost, Vous copiez la config vhost qui se trouve sur le site et vous mettez votre nom de domaine si vous en avez. le chemin > /etc/apache2/sites-available/nextcloud.conf Normalement, ça devrait marcher.
Mon domaine doit pointer sur une IP, en l’occurence sur celle de ma box. Et mon IP redirige vers un NAS sur DSM. Ce que je veux c’est qu’il redirige vers la machine virtuelle présente sur le NAS.
Actuellement : mondomaine.fr -> Pointe vers DSM (via DDNS) Ce que j’aimerai : cloud.mondomaine.fr -> Nextcloud sur la VM de DSM
Hello
J’ai tenté l’installation sur unz VM avec Ubuntu Server sur mon synology.
Ca ne fonctionne pas, j’ai sans arret la page Apache qui s’affiche et je n’arrive pas à utiliser la VM avec le reverse proxy…
Probleme, c’est que j’ai maintenant modifié pas mal de chose et je sais plus trop quoi faire…
Bonjour avez, vous regarder dans les fichiers dans sudo nano /etc/apache2/sites-available/nextcloud.conf
Hello
Oui mais je ne sais pas configurer ce fichier pour une configuration en VM et avec un reverse proxy.
Hello!
Est-ce que vous avez trouvé une solution ?
Non pas encore
Je pense trouver une solution :
1 bien configuré le virtualhost
2 dans /etc/apache2/sites-available vous utilisez cette commande sudo a2dissite 000-default.conf
3 vous utilisez sudo a2ensite nextcloud.conf
4 vous allez mettre votre servername dans la barre de recherche
J’ai eu à peu près ces mêmes problèmes.
Bonjour
J’ai pas tout compris à votre explication dsl…
Comment bien configurer le vhost ?
servername ? Le nom de la machine ? Genre « ubuntu-server » ?
Pour bien configurer le vhost,
Vous copiez la config vhost qui se trouve sur le site et vous mettez votre nom de domaine si vous en avez. le chemin > /etc/apache2/sites-available/nextcloud.conf
Normalement, ça devrait marcher.
Mon domaine doit pointer sur une IP, en l’occurence sur celle de ma box. Et mon IP redirige vers un NAS sur DSM.
Ce que je veux c’est qu’il redirige vers la machine virtuelle présente sur le NAS.
Actuellement :
mondomaine.fr -> Pointe vers DSM (via DDNS)
Ce que j’aimerai :
cloud.mondomaine.fr -> Nextcloud sur la VM de DSM