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
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
-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;
- 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
| Module | Fonction |
|---|---|
| php-gd | Traitement d'images (miniatures, prévisualisations) |
| php-mysql | Connexion à la base de données |
| php-curl | Transferts de données via URL |
| php-mbstring | Gestion des chaînes multi-octets |
| php-intl | Internationalisation (i18n) |
| php-gmp | Calculs arithmétiques de précision |
| php-bcmath | Mathématiques de précision arbitraire |
| php-imagick | Manipulation d'images avancée (ImageMagick) |
| php-xml | Traitement XML |
| php-zip | Compression/décompression ZIP |
| php-bz2 | Compression bzip2 |
| php-apcu | Cache 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
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>
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
L'interface d'installation de Nextcloud s'affiche automatiquement lors du premier accès.
Remplir le formulaire :
- Nom d'utilisateur administrateur : admin
- Mot de passe administrateur : [mot de passe fort]
- Répertoire de données : /var/www/nextcloud/data (par défaut)
- 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
- Cliquer sur "Terminer l'installation"
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
- Cliquer sur l'icône "+" en haut
- Sélectionner "Téléverser un fichier"
- Choisir un fichier de test
- Vérifier qu'il apparaît dans la liste
Test de partage de fichier
- Cliquer sur un fichier
- Cliquer sur l'icône de partage (trois points reliés)
- Générer un lien de partage public
- 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ètres → Administration → Paramè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)
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)
- 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)