Document : Installer Nextcloud sur un Raspberry Pi

Installer Nextcloud sur un Raspberry Pi

  • admin
  • Debian, Nextcloud, Raspberry Pi

L’auto-hébergement permet de reprendre le contrôle de ses données. Dans cet article, nous verrons comment déployer manuellement Nextcloud avec une pile LAMP (Linux, Apache, MariaDB, PHP) sur un Raspberry Pi.

Prérequis

Avant de commencer l’installation de Nextcloud, assurez-vous de disposer du matériel et du système suivants.

Matériel et réseau

  • Un Raspberry Pi 4 ou plus récent. Dans ce guide, la procédure est réalisée sur un Raspberry Pi 4 Model B avec 2 Go de RAM.
  • Une carte microSD (minimum 32 Go recommandé) qui hébergera le système et les données de Nextcloud.
  • Une connexion réseau fonctionnelle, idéalement filaire.
  • Une adresse IP locale fixe (via une réservation DHCP sur votre routeur).

Système et accès

  • Raspberry Pi OS installé, basé sur Debian GNU/Linux 13 (Trixie), version Lite (sans interface graphique).
  • Un accès SSH opérationnel.
  • Un compte utilisateur disposant des privilèges d'administration via la commande sudo.

Stockage, nom de domaine et HTTPS

Dans le cadre de ce guide, l'installation s'effectue sur la carte microSD avec un accès restreint à votre réseau local. La déportation des données vers un support de stockage externe, ainsi que la configuration d'un nom de domaine sécurisé par un certificat SSL (pour un accès externe), feront l'objet d'articles dédiés.

Installation de la pile LAMP

Pour faire fonctionner Nextcloud, vous devez mettre en place un environnement d'hébergement. Celui-ci repose sur la pile logicielle classique LAMP, qui regroupe le système d'exploitation Linux, le serveur web Apache, la base de données MariaDB et le langage PHP.

Voici le rôle des différents composants que nous allons installer :

  • Apache2 : Le serveur web chargé de traiter les requêtes HTTP.
  • MariaDB : Le système de gestion de base de données relationnelles (SGBDR) qui stockera les informations de Nextcloud (utilisateurs, paramètres, arborescence des fichiers).
  • PHP et ses modules : Le langage de programmation dans lequel est écrit Nextcloud. Le paquet libapache2-mod-php permet l'intégration native de PHP au sein d'Apache.
  • ImageMagick : Une bibliothèque logicielle de traitement d'images, particulièrement utile pour générer les miniatures de vos photos et documents.

Pour procéder à l'installation, connectez-vous en SSH à votre Raspberry Pi et exécutez les commandes suivantes :

# Mise à jour de la liste des paquets locaux et mise à niveau du système
sudo apt update
sudo apt upgrade

# Installation d'Apache, MariaDB, PHP et des modules requis
sudo apt install apache2 mariadb-server libapache2-mod-php php php-{curl,gd,intl,xml,zip,bz2,mbstring,mysql,bcmath,gmp,imagick} imagemagick

Gestion des versions de PHP

En utilisant le système d'exploitation Debian 13 (Trixie), le méta-paquet php installe par défaut la version la plus récente validée par la distribution. Ces versions sont nativement compatibles avec les dernières versions de Nextcloud.

Configuration de la base de données

Depuis les versions récentes de Debian (et donc de Raspberry Pi OS), MariaDB est sécurisé par défaut dès son installation. Il n'est plus nécessaire d'exécuter de script de sécurisation post-installation.

Nous allons directement créer la base de données dédiée et l'utilisateur possédant les droits exclusifs sur celle-ci.

Connectez-vous à l'invite de commande MariaDB avec les privilèges d'administration :

sudo mariadb

Dans la console MariaDB, exécutez ensuite les requêtes SQL suivantes en prenant soin de remplacer mot_de_passe_fort par un mot de passe robuste que vous conserverez pour la suite de l'installation :

-- Création de la base de données avec le bon encodage
CREATE DATABASE IF NOT EXISTS nextcloud_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Création de l'utilisateur dédié
CREATE USER 'nextcloud_user'@'localhost' IDENTIFIED BY 'mot_de_passe_fort';

-- Attribution de tous les privilèges à l'utilisateur sur la base de données
GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'localhost';

-- Application des nouveaux privilèges
FLUSH PRIVILEGES;

-- Sortie de la console MariaDB
EXIT;

Déploiement des fichiers Nextcloud

Maintenant que la base de données est prête, nous pouvons procéder à l'installation de l'application Nextcloud et configurer notre serveur web Apache pour qu'il puisse la distribuer sur le réseau.

Téléchargement et extraction

Nous allons télécharger la dernière version stable de Nextcloud depuis le site officiel, l'extraire directement dans le répertoire racine de notre serveur web, puis nettoyer l'archive téléchargée.

Placez-vous dans le répertoire du serveur web et téléchargez l'archive :

cd /var/www/
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2

Procédez ensuite à l'extraction de l'archive, ce qui créera automatiquement le répertoire nextcloud avec tout son contenu :

sudo tar -xjvf latest.tar.bz2

Une fois l'extraction terminée, vous pouvez supprimer l'archive :

sudo rm latest.tar.bz2

Préparation des répertoires et permissions

Pour fonctionner correctement et de manière sécurisée, Nextcloud a besoin de deux espaces distincts : le répertoire de l'application (situé dans la racine web) et le répertoire de stockage des données (placé à l'extérieur de la racine web par mesure de sécurité).

Nous allons créer le répertoire de données, puis attribuer la propriété et les droits adéquats aux deux dossiers pour l'utilisateur du serveur web (www-data).

# 1. Création du répertoire de données en dehors de la racine web
sudo mkdir -p /var/nextcloud_data

# 2. Attribution de la propriété à l'utilisateur d'Apache pour les deux répertoires
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chown -R www-data:www-data /var/nextcloud_data

# 3. Sécurisation stricte du dossier de données (seul www-data pourra lire/écrire)
sudo chmod 750 -R /var/nextcloud_data

Chemin des données

Gardez ce chemin (/var/nextcloud_data) en tête. Il vous sera demandé lors de la configuration finale depuis l'interface web de Nextcloud.

Configuration du serveur web Apache

Création du VirtualHost

Pour qu'Apache sache comment distribuer les pages de Nextcloud, il faut lui créer un fichier de configuration dédié, appelé VirtualHost.

Ouvrez un nouveau fichier dans le répertoire des sites disponibles d'Apache :

sudo nano /etc/apache2/sites-available/nextcloud.conf

Copiez et collez la configuration suivante. Elle indique à Apache où se trouve l'application et définit les droits d'accès au répertoire :

<VirtualHost *:80>
    DocumentRoot "/var/www/nextcloud"
    ServerName localhost

    ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined

    <Directory /var/www/nextcloud/>
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews

        <IfModule mod_dav.c>
            Dav off
        </IfModule>
    </Directory>
</VirtualHost>

Sauvegardez vos modifications (Ctrl+O, puis Entrée) et quittez l'éditeur (Ctrl+X).

L'adresse ServerName

Pour une installation locale sans nom de domaine, il suffit d’utiliser ServerName localhost ou l’adresse IP de votre Raspberry Pi. Si vous configurez ensuite un nom de domaine, cette valeur pourra être remplacée par celui-ci, par exemple cloud.votre-domaine.fr.

Activation du site et des modules

Maintenant que le fichier est prêt, nous devons activer ce nouveau site, désactiver le site par défaut d'Apache pour éviter les conflits, et nous assurer que les modules Apache requis par Nextcloud sont bien actifs.

Exécutez les commandes suivantes :

# Activation du VirtualHost Nextcloud
sudo a2ensite nextcloud.conf

# Désactivation du site Apache par défaut
sudo a2dissite 000-default.conf

# Activation des modules requis (certains sont peut-être déjà actifs)
sudo a2enmod rewrite headers env dir mime setenvif

Pour appliquer l'ensemble de ces modifications, redémarrez le service Apache :

sudo systemctl restart apache2

Initialisation via l'interface web

Votre serveur est désormais prêt. La dernière étape consiste à relier l'application à sa base de données et à créer votre compte administrateur.

Ouvrez un navigateur web depuis un ordinateur connecté au même réseau que votre Raspberry Pi et saisissez son adresse IP dans la barre d'adresse : http://votre_ip_locale (exemple: http://192.168.1.50).

Vous devriez voir apparaître la page de bienvenue de Nextcloud. Remplissez le formulaire avec les informations suivantes :

  • Créer un compte administrateur : Choisissez un nom d'utilisateur et un mot de passe robuste. Ce compte aura tous les droits sur votre instance.

  • Dossier des données : Remplacez le chemin proposé par défaut par celui que nous avons créé à l'extérieur de la racine web, soit /var/nextcloud_data.

  • Configurer la base de données :

    • Utilisateur de la base de données : nextcloud_user.
    • Mot de passe de la base de données : Le mot de passe fort défini précédemment dans MariaDB.
    • Nom de la base de données : nextcloud_db.
    • Hôte : Laissez la valeur par défaut localhost.

Cliquez enfin sur Installer et patientez quelques instants.

Félicitations !

Une fois le processus terminé, vous serez redirigé vers le tableau de bord principal de Nextcloud. Votre cloud privé est désormais fonctionnel sur votre réseau local !