Contexte :
Dans le cadre de ma formation BTS SIO, j’ai été amené à déployer une solution de cloud privé Nextcloud sur une infrastructure LAMP virtualisée. Cette procédure documente l’ensemble des étapes nécessaires à l’installation et la configuration de base du service.
Environnement technologique :
- Proxmox Virtual Environment
- VM Debian
- Stack applicative : Apache2, MariaDB, PHP 8.4 (LAMP)
Compétences mobilisées :
- Gérer le patrimoine informatique
- Mettre à disposition des utilisateurs un service informatique
1. Préparation :
1.1 Ajout d’un second disque :
Nextcloud recommande une base de données séparée du système de base, je vais donc ajouter un second disque lors de la création de la VM :

Mise à jour du système :
sudo apt update && sudo apt upgrade -y
1.2 Préparation du second disque sur le système :
On utilise fdisk pour créer une partition primaire sur le second disque :
sudo fdisk /dev/sdb
Dans le shell fdisk, on enchaîne les commandes suivantes :
| Commande | Action |
|---|---|
n | Créer une nouvelle partition |
p | Type primaire |
1 | Première partition |
Entrée | First sector (valeur par défaut) |
Entrée | Last sector (tout l’espace disponible) |
t | Changer le type de partition |
83 | Linux standard |
p | Vérifier le partitionnement |
w | Écrire les changements et quitter |
On partitionne le disque en ext4 :
mkfs.ext4 /dev/sdb1
On crée un dossier nextcloud-data dans le dossier mnt :
mkdir /mnt/nextcloud-data
mount /dev/sdb1 /mnt/nextcloud-data
On récupère l’UUID du disque sdb :
blkid /dev/sdb1
On ouvre le dossier fstab :
nano /etc/fstab
On ajoute l’UUID du disque :
UUID=XXX /mnt/nextcloud-data ext4 defaults 0 2
Remplacer XXX par l’UUID récupéré précédemment.
Le disque sera maintenant monté de manière permanente au démarrage du système.
2. Installation et configuration de mariadb :
Installation de mariadb :
sudo apt install mariadb-server -y
Configuration sécurisée de mariadb :
sudo mariadb-secure-installation
Ouvrir mariadb sur Debian 13 :
sudo mariadb
Créer une base de données nextcloud :
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Créer un utilisateur :
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'motdepassefort';
Remplacer MotDePasseFort par un mot de passe robuste.
Donner les droits d’admin de la base de données nextcloud à l’utilisateur :
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
Recharger les privilèges :
FLUSH PRIVILEGES;
Quitter mariadb :
EXIT;
On ouvre le fichier :
sudo nano /etc/mysql/my.cnf
On ajoute les éléments suivants :
[mysqld]
# nextcloud recommendations
innodb_file_per_table = 1
transaction_isolation = READ-COMMITTED
binlog_format = ROW
# utf8mb4 support
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
# optional tuning
max_connections = 200
On redémarre mariadb :
sudo systemctl restart mariadb
3. Installation et configuration d’apache2 et php :
Installation d’apache2 :
sudo apt install apache2 -y
On installe php et ses dépendances :
sudo apt install apache2 libapache2-mod-php php php-fpm php-gd php-mysql php-curl php-xml php-zip php-intl php-mbstring php-bz2 php-imagick php-gmp
Se rendre dans php.ini :
sudo nano /etc/php/8.4/apache2/php.ini
Modification des valeurs de php.ini :
memory_limit = 1024M
upload_max_filesize = 2G
post_max_size = 2G
max_execution_time = 360
date.timezone = Europe/Paris
opcache.enable=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=256
opcache.validate_timestamps=1
opcache.revalidate_freq=2
On redémarre apache2 :
sudo systemctl restart apache2
4. Téléchargement et installation de Nextcloud :
On se rend dans le dossier d’installation de Nextcloud :
cd /var/www
On télécharge Nextcloud :
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2
On décompresse le fichier :
sudo tar -xvf latest.tar.bz2
On attribue les droits du dossier nextcloud à l’utilisateur www-data :
sudo chown -R www-data:www-data nextcloud
On donne les droits suivants au dossier :
sudo chmod -R 755 nextcloud
- 7 : www-data a tous les droits
- 5 : Droits de lecture pour tous les autres
On supprime le dossier compressé :
sudo rm latest.tar.bz2
On donne les droits de la base de données sur le second disque à l’utilisateur www-data :
sudo chown -R www-data:www-data /mnt/nextcloud-data/
5. Création du fichier de configuration nextcloud :
Créer le fichier de configuration nextcloud :
sudo nano /etc/apache2/sites-available/nextcloud.conf
Contenu du fichier de configuration nextcloud :
<VirtualHost *:80>
ServerName X.X.X.X
DocumentRoot /var/www/nextcloud
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nextcloud-error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud-access.log combined
</VirtualHost>
Activer le fichier de configuration nextcloud :
sudo a2ensite nextcloud.conf
Désactiver la page par défaut d’apache2 :
sudo a2dissite 000-default.conf
Redémarrer le service apache2 pour prendre en compte le changement de config :
sudo systemctl reload apache2
6. Installation via interface graphique :
Depuis l’interface graphique on configure les éléments suivants :
- Le compte admin (login/mdp)
- Le pointage vers la BDD MariaDB (avec les identifiants créés en section 2)
- Le chemin du dossier de données (/mnt/nextcloud-data)

On choisit les options à installer :

Une fois cette dernière étape réalisée, on peut se connecter au service Nextcloud.
