Installation de Nextcloud

Cloud privé auto-hébergé - BTS SIO SISR

Objectif

Déployer Nextcloud, une solution de cloud privé permettant le stockage, le partage et la synchronisation de fichiers. Alternative open source à Google Drive, Dropbox ou OneDrive.

Nextcloud offre également des fonctionnalités collaboratives : édition de documents en ligne, calendrier, contacts, visioconférence.

Prérequis

  • Stack LAMP installée et fonctionnelle (Apache, PHP, MariaDB)
  • Serveur Debian 11 / Ubuntu
  • Minimum 2 Go de RAM (4 Go recommandés)
  • Minimum 20 Go d'espace disque disponible
  • Accès root ou sudo
  • PHP 7.4 ou supérieur

Procédure Complète

Étape 1 : Téléchargement de Nextcloud

Se placer dans le répertoire web et télécharger la dernière version :

cd /var/www
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
Note : L'URL pointe toujours vers la dernière version stable. Pour une version spécifique (ex: 28.0.1), remplacer latest par le numéro de version exact.

Vérifier le téléchargement :

ls -lh latest.tar.bz2

Étape 2 : Extraction de l'archive

tar -xjf latest.tar.bz2
Explications des options tar :
  • -x : extraire
  • -j : décompression bzip2
  • -f : spécifier le fichier

Cela crée un dossier /var/www/nextcloud

Étape 3 : Configuration des permissions

Attribuer les bons droits au serveur web :

chown -R www-data:www-data /var/www/nextcloud
chmod -R 755 /var/www/nextcloud

Supprimer l'archive pour libérer de l'espace :

rm /var/www/latest.tar.bz2

Étape 4 : Création de la base de données

Se connecter à MariaDB :

mysql -u root -p

Créer la base et l'utilisateur dédiés :

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'ncuser'@'localhost' IDENTIFIED BY 'Nc_P@ssw0rd_2024_Secure!';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'ncuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Détails :
  • utf8mb4 : encodage UTF-8 complet (support emoji, caractères spéciaux)
  • ncuser : utilisateur MySQL dédié à Nextcloud
  • Mot de passe : utiliser un mot de passe robuste (12+ caractères, majuscules, minuscules, chiffres, symboles)

Étape 5 : Installation des modules PHP requis

Nextcloud nécessite de nombreux modules PHP :

apt install php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-bcmath php-imagick php-xml php-zip php-bz2 php-apcu -y
Fonction des modules PHP :
Module Fonction
php-gdTraitement d'images (miniatures, prévisualisations)
php-mysqlConnexion à la base de données
php-curlTransferts de données via URL
php-mbstringGestion des chaînes multi-octets
php-intlInternationalisation (i18n)
php-gmpCalculs arithmétiques de précision
php-bcmathMathématiques de précision arbitraire
php-imagickManipulation d'images avancée (ImageMagick)
php-xmlTraitement XML
php-zipCompression/décompression ZIP
php-bz2Compression bzip2
php-apcuCache mémoire PHP (performances)

Étape 6 : Configuration PHP

Éditer le fichier de configuration PHP pour Apache :

nano /etc/php/7.4/apache2/php.ini

Modifier les directives suivantes (utiliser Ctrl+W pour rechercher) :

memory_limit = 512M
upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 300
date.timezone = Europe/Paris
Note : Adapter date.timezone à votre zone géographique.
Liste complète : https://www.php.net/manual/fr/timezones.php

Sauvegarder et quitter (Ctrl+O, Entrée, Ctrl+X)

Étape 7 : Configuration d'Apache

Créer un Virtual Host pour Nextcloud :

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

Contenu du fichier :

<VirtualHost *:80>
 ServerAdmin [email protected]
 DocumentRoot /var/www/nextcloud
 ServerName nextcloud.example.com

 <Directory /var/www/nextcloud/>
 Options +FollowSymlinks
 AllowOverride All
 Require all granted
 
 <IfModule mod_dav.c>
 Dav off
 </IfModule>
 
 SetEnv HOME /var/www/nextcloud
 SetEnv HTTP_HOME /var/www/nextcloud
 </Directory>

 ErrorLog ${APACHE_LOG_DIR}/nextcloud_error.log
 CustomLog ${APACHE_LOG_DIR}/nextcloud_access.log combined
</VirtualHost>
Important : Remplacer nextcloud.example.com par votre nom de domaine ou l'adresse IP du serveur pour les tests.

Activer les modules Apache nécessaires :

a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime

Activer le site Nextcloud :

a2ensite nextcloud.conf

Désactiver le site par défaut (optionnel mais recommandé) :

a2dissite 000-default.conf

Redémarrer Apache :

systemctl restart apache2

Étape 8 : Configuration initiale via l'interface web

Accéder à Nextcloud via le navigateur :

http://ADRESSE_IP_SERVEUR
Assistant d'installation :
L'interface d'installation de Nextcloud s'affiche automatiquement lors du premier accès.

Remplir le formulaire :

  1. Nom d'utilisateur administrateur : admin
  2. Mot de passe administrateur : [mot de passe fort]
  3. Répertoire de données : /var/www/nextcloud/data (par défaut)
  4. Configurer la base de données :
    • Type : MySQL/MariaDB
    • Utilisateur : ncuser
    • Mot de passe : Nc_P@ssw0rd_2024_Secure!
    • Nom de la base : nextcloud
    • Hôte : localhost
  5. Cliquer sur "Terminer l'installation"
Durée d'installation : L'installation peut prendre 2 à 5 minutes selon les performances du serveur.

Vérifications

Test d'accès à Nextcloud

Après l'installation, l'interface Nextcloud doit s'afficher avec le tableau de bord.

Vérification des modules PHP

php -m | grep -E '(gd|curl|zip|xml|intl|gmp|bcmath)'

Tous les modules doivent apparaître dans la liste.

Vérification depuis l'interface Nextcloud

Aller dans Paramètres (icône utilisateur en haut à droite) → Vue d'ensemble

Cette page affiche les éventuels avertissements de configuration.

Test d'upload de fichier

  1. Cliquer sur l'icône "+" en haut
  2. Sélectionner "Téléverser un fichier"
  3. Choisir un fichier de test
  4. Vérifier qu'il apparaît dans la liste

Test de partage de fichier

  1. Cliquer sur un fichier
  2. Cliquer sur l'icône de partage (trois points reliés)
  3. Générer un lien de partage public
  4. Tester le lien dans une fenêtre de navigation privée

Vérification des logs Apache

tail -f /var/log/apache2/nextcloud_error.log

Ne doit pas afficher d'erreurs critiques.

Vérification des logs Nextcloud

tail -f /var/www/nextcloud/data/nextcloud.log

Configuration avancée (optionnelle)

Activation du cache mémoire (APCu)

Éditer le fichier de configuration Nextcloud :

nano /var/www/nextcloud/config/config.php

Ajouter avant la ligne finale ); :

 'memcache.local' => '\OC\Memcache\APCu',

Configuration du cron (tâches planifiées)

Nextcloud recommande l'utilisation de cron plutôt qu'AJAX :

crontab -u www-data -e

Ajouter la ligne suivante :

*/5 * * * * php -f /var/www/nextcloud/cron.php

Activer le cron dans l'interface Nextcloud :
ParamètresAdministrationParamètres de base → Sélectionner Cron

Optimisation de la base de données

sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices
sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint

Sécurité et Limites

Configuration HTTPS (SSL/TLS)

IMPORTANT : En production, Nextcloud DOIT être accessible via HTTPS.
Utiliser Let's Encrypt (Certbot) pour obtenir un certificat SSL gratuit.
apt install certbot python3-certbot-apache -y
certbot --apache -d nextcloud.example.com

Sécurisation de config.php

chmod 640 /var/www/nextcloud/config/config.php
chown www-data:www-data /var/www/nextcloud/config/config.php

Désactivation de l'index des répertoires

Éditer /etc/apache2/apache2.conf et s'assurer que :

Options -Indexes

Limites de cette installation (niveau BTS)

Configuration minimale (pas production-grade) :
  • Pas de HTTPS configuré (à ajouter obligatoirement)
  • Pas de système de sauvegarde automatique
  • Pas de haute disponibilité (load balancing, clustering)
  • Pas de chiffrement côté serveur des fichiers
  • Pas de système de monitoring (Prometheus, Grafana)
  • Pas d'authentification à deux facteurs (2FA) activée par défaut
  • Pas de reverse proxy (Nginx, Traefik)

Recommandations de sécurité

  • Activer l'authentification à deux facteurs (2FA) : installer l'application "Two-Factor TOTP Provider"
  • Configurer des sauvegardes régulières (/var/www/nextcloud/data et base de données)
  • Limiter les tentatives de connexion (brute force protection intégré)
  • Mettre à jour Nextcloud régulièrement
  • Surveiller les logs régulièrement

Points Clés pour l'Oral BTS

  • Nextcloud : solution de cloud privé open source (alternative à Google Drive)
  • Architecture : LAMP (Linux, Apache, MariaDB, PHP)
  • Fonctionnalités : stockage, partage, synchronisation, édition collaborative
  • Sécurité : chiffrement, authentification forte (2FA), contrôle d'accès granulaire
  • Intégration : possibilité de connexion LDAP/Active Directory (voir procédure 05)
  • Évolutivité : support de milliers d'utilisateurs avec bonne architecture
  • Applications : écosystème riche (Talk, Calendar, Contacts, OnlyOffice, Collabora)