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 : Nextcloud

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 :

CommandeAction
nCréer une nouvelle partition
pType primaire
1Première partition
EntréeFirst sector (valeur par défaut)
EntréeLast sector (tout l’espace disponible)
tChanger le type de partition
83Linux standard
pVé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.

Nextcloud 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)

Nextcloud

On choisit les options à installer : Nextcloud

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