NextCloud

NextCloud

Voici votre documentation pour Nextcloud :


Introduction

Objectifs :


Contexte du projet

Installation de Nextcloud sur un serveur Ubuntu pour 50 utilisateurs, avec édition collaborative de documents (Word, Excel, PowerPoint), messagerie instantanée, partage de fichiers et gestion des permissions.

Environnement :


Étape 1 : Préparation du serveur

Connexion SSH

ssh votre_utilisateur@IP_DU_SERVEUR

Mise à jour du système

sudo apt update
sudo apt upgrade -y

Explication :


Étape 2 : Installation des dépendances

Installer Apache

sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2

Explication :

Installer PHP et extensions

sudo apt install php8.2 php8.2-cli php8.2-common php8.2-curl php8.2-gd php8.2-imagick php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-xml php8.2-zip php8.2-bcmath php8.2-gmp php8.2-apcu php8.2-redis libapache2-mod-php8.2 -y

Explication des extensions principales :

Configurer PHP pour Nextcloud

sudo nano /etc/php/8.2/apache2/php.ini

Modifiez ces lignes (utilisez Ctrl+W pour rechercher) :

memory_limit = 512M
upload_max_filesize = 10G
post_max_size = 10G
max_execution_time = 3600
date.timezone = Europe/Paris
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 1
opcache.save_comments = 1

Sauvegardez : Ctrl + O, Entrée, Ctrl + X

Explication :

Installer MariaDB

sudo apt install mariadb-server -y
sudo systemctl enable mariadb
sudo systemctl start mariadb

Sécuriser MariaDB

sudo mysql_secure_installation

Répondez :

Installer Redis (cache pour performances)

sudo apt install redis-server -y
sudo systemctl enable redis-server
sudo systemctl start redis-server

Explication : Redis accélère considérablement Nextcloud en mettant en cache les données fréquemment utilisées.


Étape 3 : Configuration de la base de données

Se connecter à MariaDB

sudo mysql -u root -p

Entrez le mot de passe root que vous avez défini.

Créer la base et l'utilisateur

CREATE DATABASE nextcloud_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud_user'@'localhost' IDENTIFIED BY 'VotreMotDePasseSecurise';
GRANT ALL PRIVILEGES ON nextcloud_db.* TO 'nextcloud_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Explication :

Informations à retenir :


Étape 4 : Installation de Nextcloud

Télécharger Nextcloud

cd /tmp
wget https://download.nextcloud.com/server/releases/latest.tar.bz2

Explication : Télécharge la dernière version stable de Nextcloud.

Extraire et déplacer Nextcloud

sudo tar -xjf latest.tar.bz2 -C /var/www/
sudo chown -R www-data:www-data /var/www/nextcloud

Explication :


Étape 5 : Configuration Apache

Créer le fichier de configuration

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

Configuration Apache :

<VirtualHost *:80>
    ServerName cloud.votredomaine.com
    DocumentRoot /var/www/nextcloud

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

Sauvegardez : Ctrl + O, Entrée, Ctrl + X

Explication :

Activer les modules Apache nécessaires

sudo a2enmod rewrite headers env dir mime ssl
sudo a2ensite nextcloud.conf
sudo a2dissite 000-default.conf

Explication :

Vérifier et redémarrer Apache

sudo apache2ctl configtest
sudo systemctl restart apache2

Explication :


Étape 6 : Configuration DNS

Dans votre interface de gestion DNS (OVH, Infomaniak, etc.)

  1. Allez dans Zone DNS de votre domaine
  2. Ajoutez un enregistrement A :
    • Sous-domaine : cloud
    • Type : A
    • Cible : IP_DE_VOTRE_SERVEUR
    • TTL : 60 ou 3600

Attendez 5-10 minutes pour la propagation DNS.

Vérifier la propagation DNS

nslookup cloud.votredomaine.com

Explication : Doit retourner l'IP de votre serveur.


Étape 7 : Installation du certificat SSL

Installer Certbot

sudo apt install certbot python3-certbot-apache -y

Explication : Outil pour obtenir des certificats SSL gratuits et les configurer automatiquement avec Apache.

Obtenir le certificat SSL

sudo certbot --apache -d cloud.votredomaine.com

Ce qui se passe :

  1. Certbot vous demande votre email (pour les alertes d'expiration)
  2. Vous acceptez les conditions d'utilisation
  3. Certbot vérifie que vous possédez le domaine
  4. Il installe le certificat et configure Apache pour HTTPS
  5. Choisissez l'option 2 : "Redirect" (redirige automatiquement HTTP vers HTTPS)

Résultat attendu :

Successfully received certificate.
Congratulations! You have successfully enabled HTTPS on https://cloud.votredomaine.com

Tester le renouvellement automatique

sudo certbot renew --dry-run

Explication : Vérifie que le certificat se renouvellera automatiquement tous les 3 mois.


Étape 8 : Installation de Nextcloud via le navigateur

Accéder à l'interface d'installation

Ouvrez votre navigateur : https://cloud.votredomaine.com

Créer le compte administrateur

  1. Créer un compte administrateur :

    • Nom d'utilisateur : admin (ou votre nom)
    • Mot de passe : Choisissez un mot de passe fort
  2. Configurer la base de données :

    • Cliquez sur "Stockage et base de données"
    • Sélectionnez MySQL/MariaDB
    • Utilisateur : nextcloud_user
    • Mot de passe : VotreMotDePasseSecurise
    • Nom de la base : nextcloud_db
    • Hôte : localhost
  3. Cliquez sur Terminer l'installation

Attendez quelques minutes, l'installation peut prendre du temps.


Étape 9 : Configuration de Redis (cache)

Éditer le fichier de configuration Nextcloud

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

Ajoutez ces lignes juste avant la dernière ligne ); :

  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'memcache.locking' => '\OC\Memcache\Redis',
  'redis' => [
    'host' => 'localhost',
    'port' => 6379,
  ],

Sauvegardez : Ctrl + O, Entrée, Ctrl + X

Explication :


Étape 10 : Configurer les tâches en arrière-plan (Cron)

Configurer Cron pour Nextcloud

sudo crontab -u www-data -e

Si on vous demande un éditeur, choisissez 1 (nano).

Ajoutez cette ligne à la fin du fichier :

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

Sauvegardez : Ctrl + O, Entrée, Ctrl + X

Explication :

Activer Cron dans l'interface Nextcloud

  1. Connectez-vous en tant qu'admin
  2. Cliquez sur votre avatar en haut à droite → Paramètres d'administration
  3. Dans le menu de gauche, cliquez sur Paramètres de base
  4. Section "Tâches en arrière-plan", sélectionnez Cron

Étape 11 : Installation de Nextcloud Office

Méthode 1 : Collabora Online (Built-in)

Cette méthode installe un serveur Collabora directement sur votre serveur Nextcloud. C'est la solution la plus simple pour 50 utilisateurs.

Installer l'application Nextcloud Office

  1. Connectez-vous en tant qu'admin
  2. Cliquez sur votre avatar → Applications
  3. Cherchez "Nextcloud Office"
  4. Cliquez sur Télécharger et activer

Installer le serveur Collabora Built-in

  1. Dans Applications, cherchez "Collabora Online - Built-in CODE Server"
  2. Cliquez sur Télécharger et activer

Explication : Cette méthode installe un serveur Collabora léger directement dans Nextcloud. Parfait pour 50 utilisateurs, simple à configurer.

Configurer Collabora

  1. Allez dans Paramètres d'administration → Nextcloud Office
  2. Sélectionnez "Utiliser le serveur Built-in CODE"
  3. Cliquez sur Enregistrer

C'est tout ! Vous pouvez maintenant créer et éditer des documents Word, Excel et PowerPoint.


Méthode 2 (alternative) : OnlyOffice

Si vous préférez OnlyOffice à Collabora Office :

Installer OnlyOffice Document Server

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
echo "deb https://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
sudo apt update
sudo apt install onlyoffice-documentserver -y

Installer l'application OnlyOffice dans Nextcloud

  1. Connectez-vous en tant qu'admin
  2. Applications → Cherchez "ONLYOFFICE"
  3. Télécharger et activer

Configurer OnlyOffice

  1. Paramètres d'administration → ONLYOFFICE
  2. Adresse du serveur : http://localhost
  3. Cliquez sur Enregistrer

Explication : OnlyOffice ressemble plus à Microsoft Office dans son interface. Consomme plus de ressources que Collabora Built-in.


Étape 12 : Installation de Nextcloud Talk (messagerie et visio)

Installer l'application Talk

  1. Connectez-vous en tant qu'admin
  2. Applications → Cherchez "Talk"
  3. Télécharger et activer

Installer le serveur TURN/STUN (pour les appels vidéo)

Le serveur TURN/STUN permet les appels vidéo même si les utilisateurs sont derrière des firewalls.

Installer coturn

sudo apt install coturn -y

Configurer coturn

sudo nano /etc/turnserver.conf

Remplacez tout le contenu par :

listening-port=3478
fingerprint
use-auth-secret
static-auth-secret=VotreSecretTurnSecurise
realm=cloud.votredomaine.com
total-quota=100
bps-capacity=0
stale-nonce
no-loopback-peers
no-multicast-peers

Sauvegardez : Ctrl + O, Entrée, Ctrl + X

Explication :

Activer et démarrer coturn

sudo nano /etc/default/coturn

Décommentez (enlevez le #) cette ligne :

TURNSERVER_ENABLED=1

Sauvegardez et démarrez :

sudo systemctl enable coturn
sudo systemctl start coturn

Ouvrir le port dans le firewall

sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp

Explication : Permet aux appels vidéo de passer à travers le firewall.

Configurer Talk avec TURN

  1. Paramètres d'administration → Talk
  2. Section "Serveur TURN" :
    • Serveur TURN : cloud.votredomaine.com:3478
    • Secret : VotreSecretTurnSecurise
    • Protocoles : Cochez UDP et TCP
  3. Cliquez sur Enregistrer

Vous pouvez maintenant :


Étape 13 : Gestion des utilisateurs et droits d'accès

Créer des utilisateurs

  1. Paramètres d'administration → Utilisateurs
  2. Cliquez sur Nouvel utilisateur
  3. Remplissez :
    • Nom d'utilisateur
    • Nom d'affichage
    • Email
    • Mot de passe (l'utilisateur peut le changer)
    • Groupes (optionnel)
    • Quota (limite d'espace disque par utilisateur)

Conseil : Créez les 50 utilisateurs avec un quota adapté (par exemple 20 Go par personne).

Créer des groupes

  1. Paramètres d'administration → Utilisateurs
  2. Cliquez sur Ajouter un groupe
  3. Nommez le groupe (exemple : "Comptabilité", "Marketing", "Direction")

Explication : Les groupes permettent de gérer facilement les permissions de plusieurs personnes à la fois.

Partager des dossiers avec permissions

Créer un dossier partagé

  1. Allez dans Fichiers
  2. Créez un nouveau dossier (exemple : "Documents Comptabilité")
  3. Cliquez sur l'icône Partager à côté du dossier
  4. Choisissez :
    • Utilisateur ou groupe : Sélectionnez qui peut accéder
    • Permissions :
      • ✅ Peut partager = L'utilisateur peut partager avec d'autres
      • ✅ Peut modifier = Peut créer, modifier, supprimer des fichiers
      • ❌ Peut modifier (décoché) = Lecture seule
      • ✅ Peut créer = Peut ajouter des fichiers
      • ✅ Peut supprimer = Peut effacer des fichiers

Exemple de configuration :

Définir des permissions avancées

  1. Cliquez sur les 3 petits points à côté d'un partage
  2. Permissions personnalisées :
    • Créer
    • Modifier
    • Supprimer
    • Partager
    • Télécharger uniquement (pour empêcher les modifications)

Explication : Vous pouvez définir précisément qui fait quoi dans chaque dossier, exactement comme vous le souhaitiez.

Partager avec un lien public

Si vous voulez qu'un dossier soit accessible sans compte Nextcloud :

  1. Cliquez sur Partager → Partage par lien
  2. Options :
    • Autoriser les modifications (ou lecture seule)
    • Protection par mot de passe
    • Date d'expiration du lien
    • Note pour le destinataire

Étape 14 : Optimisation des performances

Activer la compression

sudo a2enmod deflate
sudo systemctl restart apache2

Explication : Compresse les fichiers envoyés au navigateur = plus rapide.

Configurer PHP-FPM (plus performant qu'Apache mod_php)

sudo apt install php8.2-fpm -y
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.2-fpm
sudo a2dismod php8.2
sudo systemctl restart apache2

Explication : PHP-FPM gère mieux plusieurs utilisateurs simultanés qu'Apache mod_php.

Activer HTTP/2 (plus rapide)

sudo a2enmod http2
sudo systemctl restart apache2

Explication : HTTP/2 charge les pages plus rapidement que HTTP/1.1.

Augmenter le cache APCu

sudo nano /etc/php/8.2/mods-available/apcu.ini

Ajoutez :

apc.enabled=1
apc.shm_size=128M

Sauvegardez et redémarrez :

sudo systemctl restart apache2

Étape 15 : Sauvegardes automatiques

Créer un script de sauvegarde

sudo nano /usr/local/bin/backup-nextcloud.sh

Contenu du script :

#!/bin/bash

# Configuration
BACKUP_DIR="/var/backups/nextcloud"
NC_DIR="/var/www/nextcloud"
DATE=$(date +%Y%m%d_%H%M%S)

# Créer le dossier de sauvegarde
mkdir -p $BACKUP_DIR

# Activer le mode maintenance
sudo -u www-data php $NC_DIR/occ maintenance:mode --on

# Sauvegarder la base de données
mysqldump -u nextcloud_user -p'VotreMotDePasseSecurise' nextcloud_db > $BACKUP_DIR/nextcloud_db_$DATE.sql

# Sauvegarder le dossier data
tar -czf $BACKUP_DIR/nextcloud_data_$DATE.tar.gz $NC_DIR/data

# Sauvegarder le fichier de configuration
cp $NC_DIR/config/config.php $BACKUP_DIR/config_$DATE.php

# Désactiver le mode maintenance
sudo -u www-data php $NC_DIR/occ maintenance:mode --off

# Supprimer les sauvegardes de plus de 30 jours
find $BACKUP_DIR -type f -mtime +30 -delete

echo "Sauvegarde terminée : $DATE"

Sauvegardez : Ctrl + O, Entrée, Ctrl + X

Rendre le script exécutable

sudo chmod +x /usr/local/bin/backup-nextcloud.sh

Programmer la sauvegarde automatique

sudo crontab -e

Ajoutez cette ligne (sauvegarde tous les jours à 2h du matin) :

0 2 * * * /usr/local/bin/backup-nextcloud.sh >> /var/log/nextcloud-backup.log 2>&1

Explication :


Étape 16 : Sécurité supplémentaire

Configurer le pare-feu UFW

sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP
sudo ufw allow 443/tcp   # HTTPS
sudo ufw allow 3478/tcp  # TURN (Talk)
sudo ufw allow 3478/udp  # TURN (Talk)
sudo ufw enable

Explication : N'autorise que les ports nécessaires, bloque tout le reste.

Activer l'authentification à deux facteurs (2FA)

  1. Applications → Cherchez "Two-Factor TOTP Provider"
  2. Télécharger et activer

Les utilisateurs peuvent ensuite activer la 2FA dans leurs Paramètres personnels → Sécurité.

Configurer le scan antivirus (optionnel)

sudo apt install clamav clamav-daemon -y
sudo freshclam
sudo systemctl start clamav-daemon

Dans Nextcloud :

  1. Applications → "Antivirus for files"
  2. Télécharger et activer
  3. Paramètres d'administration → Antivirus
  4. Mode : Daemon (socket)
  5. Socket : /var/run/clamav/clamd.ctl

Explication : Analyse automatiquement les fichiers uploadés pour détecter les virus.


Étape 17 : Applications recommandées pour 50 utilisateurs

Productivité

  1. Nextcloud Office = Édition de documents (déjà installé)
  2. Talk = Messagerie et visio (déjà installé)
  3. Calendar = Calendrier partagé
  4. Contacts = Carnet d'adresses
  5. Tasks = Gestion de tâches
  6. Deck = Tableaux Kanban (type Trello)

Collaboration

  1. Group folders = Dossiers partagés par groupe avec quotas
  2. Forms = Créer des formulaires (sondages, inscriptions)
  3. Notes = Prise de notes collaborative

Sécurité et administration

  1. Brute-force settings = Protection contre les attaques
  2. Admin audit = Journaux d'activité
  3. Quota warning = Alerte quand les utilisateurs atteignent leur quota

Pour installer :

  1. Applications → Cherchez le nom
  2. Télécharger et activer

Informations importantes

Identifiants administrateur

Ports utilisés

Commandes utiles

Mettre Nextcloud en mode maintenance :

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on

Désactiver le mode maintenance :

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

Analyser et réparer :

sudo -u www-data php /var/www/nextcloud/occ maintenance:repair

Mettre à jour Nextcloud via le terminal :

sudo -u www-data php /var/www/nextcloud/updater/updater.phar

Voir les logs d'erreur :

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

Renouvellement SSL

Le certificat SSL se renouvelle automatiquement tous les 3 mois via Certbot.

Maintenance

Mettre à jour Nextcloud :


Résumé des accès


Dépannage

Erreur "Your data directory is not writable"

sudo chown -R www-data:www-data /var/www/nextcloud/data
sudo chmod -R 750 /var/www/nextcloud/data

Les documents Office ne s'ouvrent pas

sudo -u www-data php /var/www/nextcloud/occ app:disable richdocuments
sudo -u www-data php /var/www/nextcloud/occ app:enable richdocuments
sudo systemctl restart apache2

Talk : les appels vidéo ne fonctionnent pas

Vérifiez que coturn est démarré et le port ouvert :

sudo systemctl status coturn
sudo ufw status
sudo netstat -tulpn | grep 3478

Problèmes de performances avec 50 utilisateurs

Augmentez les ressources PHP-FPM :

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Modifiez :

pm.max_children = 120
pm.start_servers = 12
pm.min_spare_servers = 6
pm.max_spare_servers = 18
sudo systemctl restart php8.2-fpm

Voir les erreurs détaillées

sudo tail -f /var/log/apache2/nextcloud-error.log
sudo tail -f /var/www/nextcloud/data/nextcloud.log

Conclusion

Vous disposez maintenant d'un Nextcloud complet pour 50 utilisateurs avec :

Prochaines étapes conseillées :

  1. Créer vos 50 utilisateurs et groupes
  2. Configurer les quotas par utilisateur
  3. Créer les dossiers partagés avec les bonnes permissions
  4. Former vos utilisateurs à l'utilisation de Nextcloud
  5. Surveiller les performances et ajuster les ressources si nécessaire