article

Installer Nextcloud sur un Raspberry Pi

Par  Benjamin

Publié le 30 mars 2022

Retrouvez-nous sur Twitter, Facebook et Mastodon.

Il y a quelques années j'avais fait un tutoriel sur Owncloud avec le Raspberry Pi sur l'excellent site Framboise314. À l'époque nos Pi étaient moins puissants, la fibre moins répandue, l'intérêt d'un cloud personnel restait très limité pour le plus grand nombre. Aujourd'hui nous avons la puissance et la vitesse de connexion. Reste à trouver le Raspberry Pi avec la pénurie des composants. Nextcloud est un fork du logiciel ownCloud, c'est Frank Karlitschek le cofondateur de ce dernier qui est parti pour des divergences stratégiques. Les prérequis sont un Raspberry Pi 4 avec 2Go de RAM, c'est environ 54 euros. Une petite carte SD de 16Go et un disque dur externe (HDD ou SSD) de 512Go ou 1To. Le tutoriel sera mis à jour de temps en temps, en fonction des problèmes que je peux rencontrer ou des améliorations que je peux y faire !

Mon installation avec un Pi 4 branché sur la BOX.

ÉTAPE I: Serveur web ► On commence par mettre à jour son ordinateur, pour éviter des ennuis par la suite.
sudo apt update
sudo apt upgrade
Maintenant on installe le serveur Apache.
sudo apt install apache2
Ensuite nous allons éditer les droits pour travailler sur les dossiers. Au passage, vous pouvez changer l'utilisateur "pi" par le vôtre, si vous l'avez déjà changer à l'installation du Raspberry Pi. Votre serveur web pointe sur le dossier "html", nous mettrons notre service Nextcloud dedans.
sudo chown -R pi:www-data /var/www/html/
sudo chmod -R 770 /var/www/html/
Si tout va bien vous pouvez accéder à votre serveur Apache en tapant : http://127.162.0.11 (il faut changer l'ip locale par la vôtre). ► Passons à l'installation du langage PHP.
sudo apt install php php-mbstring
Ensuite, on supprime "index.html" pour le remplacer par un index.php.
sudo rm /var/www/html/index.html
echo "<?php phpinfo(); ?>" > /var/www/html/index.php
Vous pouvez accéder à votre page PHP en tapant : http://127.162.0.11 (il faut changer l'ip locale par la vôtre). Normalement la page a changée par rapport à Apache. ► Maintenant nous installons Mysql.
sudo apt install mariadb-server php-mysql
Nous pouvons maintenant vérifier le fonctionnement.
sudo mysql --user=root
Dernière étape, préparer l'utilisateur "root".
DROP USER 'root'@'localhost';
CREATE USER 'root'@'localhost' IDENTIFIED BY 'votreMotDePasse';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
Ne perdez pas votre mot de passe, vous en aurez besoin. Pour sortir de Mysql il suffit de taper : exit Vous revoilà dans le Shell ! ► Nous allons installer PHPMyAdmin, c'est pratique d'avoir une interface graphique accessible par le navigateur.
sudo apt install phpmyadmin
Choisissez "no" à la question concernant l’utilisation de dbconfig-common. Pour la question sur Apache juste avant, il faut le laisser coché. Histoire d'être bien compatible, il faut installer une extension à PHP.
sudo phpenmod mysqli
sudo /etc/init.d/apache2 restart
La dernière commande redémarre le service Apache. Reste maintenant à créer un lien symbolique du dossier d'installation vers "html".
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
Allons à l'adresse: http://127.162.0.11/phpmyadmin et connectez-vous, bien sûr avec l'utilisateur "root" et "votreMotDePasse". Dans la fenêtre principale en bas, vous aurez un message d'erreur, cliquez sur le lien et vous pouvez créer une base de données "phpmyadmin". Voilà pour la partie la partie web, nécessaire à l'installation de Nextcloud par la suite. En attendant vous avez un petit serveur web, si vous ajoutiez un serveur FTP, vous auriez un serveur web complet. ÉTAPE II: Nextcloud ► Commençons par télécharger la dernier version de Nextcloud dans le Terminal.
wget https://download.nextcloud.com/server/releases/latest.zip
Puis on extrait l'archive dans le dossier "html".
sudo unzip ./latest.zip -d /var/www/html/
Maintenant on repasse à l'étape des droits. Vous pouvez changer l'utilisateur "pi" si vous aviez changé le nom d'utilisateur à l'installation. La commande -R est récursive, donc tous les dossiers à l'intérieur de "html" changeront de droits aussi.
sudo chown -R pi:www-data /var/www/html/
sudo chmod -R 770 /var/www/html/
Maintenant vous pouvez lancer Nextcloud à l'adresse: http://127.162.0.11/Nextcloud Vous allez créer un nom d'utilisateur ainsi qu'un mot de passe. Par défaut les données sont hébergées sur la carte SD, mais vous pouvez en changer le chemin si vous avez mis un disque dur externe (voir étape IV pour préparer un disque externe). Pour la base de données, mettre l'utilisateur "root" et votre "motDePasse". Nommer la base "nextcloud" et vous pouvez laisser "localhost". Si vous êtes en SSH, la page suivante ne s'ouvre pas car nous avons mis "localhost" juste avant, donc il suffira de remplacer dans la barre d'adresse "localhost" par l'ip. Voilà votre Nextcloud est en place ! ÉTAPE III: Certificat SSL Par défaut nous sommes en protocole http simple, nous allons voir comment installer Certbot et générer un certificat SSL avec Let's Encrypt. La sécurité c'est important, et surtout pratique pour éviter les messages d'alertes dans le navigateur. Pour ma part, je le fais via Snapcraft pour tester, mais si vous êtes sur un Raspberry Pi Zero, il vaut mieux passer par APT, et je dirais même plus, il faut passer par Aptitude. ► Via APT:
sudo apt install certbot python3-certbot-apache
Vous pouvez passer à l'étape du certificat directement. ► Via Snap, parce que pourquoi pas:
sudo apt install snapd
sudo reboot
Une fois redémarré, il faut mettre le dernier morceau de Snap
sudo snap install core
► Si vous aviez déjà un certificat SSL appliquer cette commande. Sinon étape suivante.
sudo apt remove certbot python3-cert*
sudo apt autoremove
► On installe Certbot avec la première commande, puis on créé un lien logique.
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
► Générer le certificat.
sudo certbot --apache
Lisez bien, car on vous demandera un email, pour vous prévenir de régénérer votre certificat, mais ce n'est pas obligatoire. Puis il vous sera proposez de participer à une analyse de stats, personnellement j'ai mis non. Dernière étape il vous sera demandé votre domaine: mon.domaine.com, et le certificat va être généré. Si tout va le "https" est activé. ÉTAPE IV: Mettre les datas sur un disque dur externe. Dans l'étape II à l'installation on vous demande où mettre les données. Personnellement j'ai choisi un disque dur mécanique externe qui traînait. J'ai branché le tout sur un port USB 3. Pour ça j'ai choisi de formater mon disque en Ext4 (format pour Linux), je l'ai fait à partir d'une machine sous Debian, mais vous avez le même outil sur Ubuntu. Sur le Pi pour que cela fonctionne, vous devez faire monter votre disque au démarrage. ► Trouver son disque dur. L'adresse est en bas de liste, en général vous aurez "/dev/sda1".
sudo fdisk -l
► Pour le faire monter.
sudo mount /dev/sda1 /mnt
► Donner des droits pour l'usage sur Nextcloud. Vous pouvez changer "pi" par votre nom de compte.
sudo chown -R pi:www-data /mnt/
sudo chmod -R 770 /mnt/
► Monter le disque automatiquement au démarrage.
sudo nano /etc/fstab
Ajouter cette ligne en dessous des disques déjà présents.
/dev/sda1             /mnt            ext4    defaults          0       0
Ctrl+o j'enregistre et Ctrl+x pour fermer l'outil. Normalement votre disque est prêt pour monter automatiquement au démarrage. Cette solution pour l'hébergement des données est bien plus rapide que sur la carte SD du Pi. ÉTAPE V: L'ip à mettre à jour. Pour ça j'ai utilisé l'utilitaire DDclient, qui mettra à jour l'ip de votre BOX internet vers votre service de routage d'IP.
sudo apt install ddclient
Vous pouvez choisir de répondre aux questions des paramètres ou éditer le fichier ".conf".
sudo nano /etc/ddclient.conf
Pour que le service démarre avec votre Pi, il faut éditer un fichier et vérifier que la valeur "run_daemon" soit sur "true".
sudo nano /etc/default/ddclient
Normalement, si vous avez mis les bons paramètres vous n'aurez pas de problème. Mais documentez vous avec quelques recherches sur internet, car en fonction des services de routage d'adresse les données à rentrer sont parfois différentes. ÉTAPE VI: Extensions pour PHP. Dans les paramètres de sécurité de Nextcloud, ce dernier vous dira qu'il faut ajouter ou améliorer des choses. Vous devrait ajouter des extensions pour "php".
sudo apt install php-intl
sudo apt install php-bcmath
sudo apt install php7.4-gmp
sudo apt install php-imagick
sudo apt install imagemagick
Il est conseillé de faire un "sudo service apache2 restart" à la fin, et si tout va bien vous n'aurez plus de message d'alerte sur ces quelques points. C'était un peu long ce tutoriel, j'ai rassemblé tout ce que j'ai trouvé sur le net, et j'espère que vous serez nombreux a tester ce service Nextcloud !
Crédits: KernelDesign