Mise en place de la base de données
MySQL / MariaDB
Première configuration du serveur
Ici, nous allons partir du principe que vous souhaitez partir de zéro et que votre installation de MariaDB est toute fraîche. Si jamais celle est déjà opérationnelle, il vous suffit de suivre l'étape suivante.
Dans un premier temps, nous allons lancer notre serveur MariaDB et activer son démarrage automatique au lancement :
sudo systemctl enable mariadb && sudo systemctl start mariadb
Lors de la première installation du serveur MariaDB, un certain nombre de bases de données de test sont créées et il est fréquent que le compte super-utilisateur ne possède pas de mot de passe. Cela n'est pas du tout une configuration idéale pour notre installation et cela pose de sérieux problèmes de sécurité par la suite.
Pour cela, il est donc nécessaire de lancer la commande suivante :
mysql_secure_installation
Cette commande lance un assistant qui va vous demander notamment de modifier le mot de passe du super-utilisateur si cela n'a pas été fait et de supprimer toutes les occurences de test, pour partir sur de bonnes bases et avoir un serveur prêt pour la production.
Personnellement, je vous recommande fortement de le faire, ne serait-ce que pour vous protéger de quelques attaques avec le compte super-utilisateur.
Création de la base de données
Dans une console, on lance une session administrateur sur notre MariaDB via la commande suivante :
mysql -u root -p
Après saisi le mot de passe que l'on a crée après l'installation de MariaDB, on obtient un invite de commandes ressemblant à ceci (pour ceux qui n'y seraient pas familiers) :
MariaDB [(none)]>
À partir d'ici, on va alors créer une base de données que l'on va appeler nextcloud (pour des raisons pratiques) et lui attribuer un utilisateur dédié qui ne sera utilisé que par notre Nextcloud (le nom d'utilisateur importe peu ici, mais nextcloud est un choix courant). Ainsi, seul cet utilisateur aura un accès complet à la base de données et seul lui pourra écrire dedans.
Pour cela, il suffit alors d'entrer les commandes suivantes :
CREATE DATABASE nextcloud;
GRANT ALL ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY 'monsupermotdepasse';
FLUSH PRIVILEGES;
QUIT;
Pour l'anecdote, la dernière commande sert à dire au serveur SQL de bien prendre en compte les changements et de réactualiser les données en mémoire.
Notre base de données est maintenant prête à être utilisé et on peut passer à l'installation de Nextcloud.
PostgreSQL
Première configuration du serveur
Dans le cas de PostgreSQL, la procédure est à peu près similaire sous Debian 10, si ce n'est que nous allons nous connecter au serveur avec un utilisateur dédié (son nom est postgres).
Avant de commencer, il convient de vérifier que PostgreSQL est bien activé au démarrage et tourne sans problèmes :
sudo systemctl enable postgresql && sudo systemctl start postgresql
Le serveur est alors configuré par défaut pour n'accepter que les connexions locales, ce qui signifie qu'il n'est pas possible de se connecter aux bases de données depuis l'extérieur et qu'il n'est pas nécessaire de changer cela pour notre configuration finale.
Néanmoins, la configuration par défaut interdit également les connexions par mot de passe, ce qui risque de poser problème pour la suite de notre installation. Nous allons donc ajouter une ligne pour autoriser les connexions par mot de passe pour notre futur utilisateur dédié, afin de garder le comportement de base pour tous les utilisateurs et donc de n'exposer qu'un seul utilisateur.
Pour cela, on édite le fichier /etc/postgresql/11/main/pg_hba.conf
qui contient l'ensemble des permissions du serveur de bases de données et on ajoute à la fin du document :
host nextcloud nextcloud 127.0.0.1/32 md5
Pour les curieux, cette ligne signifie que nous autorisons les connexions par mot de passe pour l'utilisateur nextcloud et pour la base de données nextcloud uniquement (md5
étant le mode de connexion par mot de passe ici).
Création de la base de données
Dans une console, on peut se connecter directement à l'interface via la commande suivante :
sudo su postgres -c psql
Après saisi son mot de passe, on se retrouve alors dans un shell au nom de l'utilisateur du serveur PostgreSQL, utilisateur qui est le seul autorisé à se connecter aux bases de données pour l'instant.
À partir d'ici, on va alors créer une base de données que l'on va appeler nextcloud (pour des raisons pratiques) et lui attribuer un utilisateur dédié qui ne sera utilisé que par notre Nextcloud (le nom d'utilisateur importe peu ici, mais nextcloud est un choix courant). Ainsi, seul cet utilisateur aura un accès complet à la base de données et seul lui pourra écrire dedans.
Pour cela, il suffit alors d'entrer les commandes suivantes :
CREATE DATABASE nextcloud;
CREATE USER nextcloud WITH ENCRYPTED PASSWORD 'monsupermotdepasse';
GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;
QUIT;
Notre base de données est maintenant prête à être utilisé et on peut passer à l'installation de Nextcloud.