NextCloud NextCloud Voici votre documentation pour Nextcloud : Introduction Objectifs : Installer Nextcloud (plateforme de stockage et collaboration) Configurer Nextcloud Office (édition de documents) Configurer Nextcloud Talk (messagerie et visio) Sécuriser avec un certificat SSL Let's Encrypt Gérer les droits d'accès par utilisateur et dossier 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 : Serveur Ubuntu Sous-domaine : cloud.votredomaine.com (à adapter) PHP 8.2 et MariaDB Configuration recommandée : 6-8 cœurs, 16-24 Go RAM, 1 To stockage É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 : apt update = Met à jour la liste des paquets disponibles apt upgrade = Installe les mises à jour Étape 2 : Installation des dépendances Installer Apache sudo apt install apache2 -y sudo systemctl enable apache2 sudo systemctl start apache2 Explication : apache2 = Serveur web qui va héberger Nextcloud enable = Démarre automatiquement au démarrage du serveur start = Lance le service immédiatement 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 : php8.2-mysql = Connexion à la base de données php8.2-gd et php8.2-imagick = Manipulation d'images (aperçus, miniatures) php8.2-intl = Support multilingue php8.2-opcache = Accélère l'exécution de PHP php8.2-apcu et php8.2-redis = Cache pour meilleures performances php8.2-bcmath et php8.2-gmp = Calculs mathématiques (chiffrement) 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 : memory_limit = Mémoire maximale pour PHP (512 Mo pour Nextcloud) upload_max_filesize = Taille maximum d'un fichier uploadé (10 Go) max_execution_time = Temps maximum d'exécution (1 heure pour gros fichiers) opcache = Cache qui accélère PHP significativement 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 : Switch to unix_socket authentication? → N Change root password? → Y (choisissez un mot de passe fort) Remove anonymous users? → Y Disallow root login remotely? → Y Remove test database? → Y Reload privilege tables? → Y 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 : CHARACTER SET utf8mb4 = Support complet des caractères (émojis, langues asiatiques, etc.) GRANT ALL PRIVILEGES = Donne tous les droits sur la base à l'utilisateur FLUSH PRIVILEGES = Applique les changements immédiatement Informations à retenir : Nom de la base : nextcloud_db Utilisateur : nextcloud_user Mot de passe : VotreMotDePasseSecurise (à personnaliser et noter) É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 : tar -xjf = Décompresse l'archive -C /var/www/ = Extrait dans le dossier du serveur web chown www-data = Donne les droits à l'utilisateur Apache Étape 5 : Configuration Apache Créer le fichier de configuration sudo nano /etc/apache2/sites-available/nextcloud.conf Configuration Apache : ServerName cloud.votredomaine.com DocumentRoot /var/www/nextcloud Options +FollowSymlinks AllowOverride All Require all granted Dav off SetEnv HOME /var/www/nextcloud SetEnv HTTP_HOME /var/www/nextcloud ErrorLog ${APACHE_LOG_DIR}/nextcloud-error.log CustomLog ${APACHE_LOG_DIR}/nextcloud-access.log combined Sauvegardez : Ctrl + O, Entrée, Ctrl + X Explication : ServerName = Le domaine de votre Nextcloud (à remplacer) DocumentRoot = Dossier racine de Nextcloud AllowOverride All = Permet à Nextcloud de gérer ses propres règles Dav off = Désactive DAV d'Apache (Nextcloud gère son propre WebDAV) Activer les modules Apache nécessaires sudo a2enmod rewrite headers env dir mime ssl sudo a2ensite nextcloud.conf sudo a2dissite 000-default.conf Explication : a2enmod = Active des modules Apache rewrite = Gestion des URLs propres headers = Manipulation des en-têtes HTTP (sécurité) ssl = Support HTTPS a2ensite = Active la configuration Nextcloud a2dissite = Désactive le site par défaut Vérifier et redémarrer Apache sudo apache2ctl configtest sudo systemctl restart apache2 Explication : configtest = Vérifie que la configuration Apache est correcte Si vous voyez "Syntax OK", c'est bon ! Étape 6 : Configuration DNS Dans votre interface de gestion DNS (OVH, Infomaniak, etc.) Allez dans Zone DNS de votre domaine 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 : Certbot vous demande votre email (pour les alertes d'expiration) Vous acceptez les conditions d'utilisation Certbot vérifie que vous possédez le domaine Il installe le certificat et configure Apache pour HTTPS 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 Créer un compte administrateur : Nom d'utilisateur : admin (ou votre nom) Mot de passe : Choisissez un mot de passe fort 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 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 : memcache = Système de cache pour accélérer Nextcloud APCu = Cache local pour les petites données Redis = Cache distribué pour les sessions et le verrouillage de fichiers É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 : */5 * * * * = Exécute toutes les 5 minutes cron.php = Script qui effectue les tâches de maintenance Nextcloud (nettoyage, synchronisation, etc.) Activer Cron dans l'interface Nextcloud Connectez-vous en tant qu'admin Cliquez sur votre avatar en haut à droite → Paramètres d'administration Dans le menu de gauche, cliquez sur Paramètres de base 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 Connectez-vous en tant qu'admin Cliquez sur votre avatar → Applications Cherchez "Nextcloud Office" Cliquez sur Télécharger et activer Installer le serveur Collabora Built-in Dans Applications, cherchez "Collabora Online - Built-in CODE Server" 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 Allez dans Paramètres d'administration → Nextcloud Office Sélectionnez "Utiliser le serveur Built-in CODE" 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 Connectez-vous en tant qu'admin Applications → Cherchez "ONLYOFFICE" Télécharger et activer Configurer OnlyOffice Paramètres d'administration → ONLYOFFICE Adresse du serveur : http://localhost 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 Connectez-vous en tant qu'admin Applications → Cherchez "Talk" 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 : listening-port=3478 = Port standard pour TURN static-auth-secret = Clé secrète pour l'authentification (à personnaliser) realm = Votre domaine total-quota=100 = Limite de 100 sessions simultanées 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 Paramètres d'administration → Talk Section "Serveur TURN" : Serveur TURN : cloud.votredomaine.com:3478 Secret : VotreSecretTurnSecurise Protocoles : Cochez UDP et TCP Cliquez sur Enregistrer Vous pouvez maintenant : Envoyer des messages instantanés Faire des appels audio et vidéo Créer des conversations de groupe Partager des fichiers dans les conversations Étape 13 : Gestion des utilisateurs et droits d'accès Créer des utilisateurs Paramètres d'administration → Utilisateurs Cliquez sur Nouvel utilisateur 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 Paramètres d'administration → Utilisateurs Cliquez sur Ajouter un groupe 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é Allez dans Fichiers Créez un nouveau dossier (exemple : "Documents Comptabilité") Cliquez sur l'icône Partager à côté du dossier 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 : Direction → Tous les droits Comptabilité → Peut modifier et créer Stagiaires → Lecture seule Définir des permissions avancées Cliquez sur les 3 petits points à côté d'un partage 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 : Cliquez sur Partager → Partage par lien 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 : 0 2 * * * = Tous les jours à 2h00 Le script crée une sauvegarde de la base de données, des fichiers et de la configuration Supprime automatiquement les sauvegardes de plus de 30 jours É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) Applications → Cherchez "Two-Factor TOTP Provider" 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 : Applications → "Antivirus for files" Télécharger et activer Paramètres d'administration → Antivirus Mode : Daemon (socket) 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é Nextcloud Office = Édition de documents (déjà installé) Talk = Messagerie et visio (déjà installé) Calendar = Calendrier partagé Contacts = Carnet d'adresses Tasks = Gestion de tâches Deck = Tableaux Kanban (type Trello) Collaboration Group folders = Dossiers partagés par groupe avec quotas Forms = Créer des formulaires (sondages, inscriptions) Notes = Prise de notes collaborative Sécurité et administration Brute-force settings = Protection contre les attaques Admin audit = Journaux d'activité Quota warning = Alerte quand les utilisateurs atteignent leur quota Pour installer : Applications → Cherchez le nom Télécharger et activer Informations importantes Identifiants administrateur Définis lors de l'installation web À protéger absolument (utilisez un mot de passe fort + 2FA) Ports utilisés Port 80 : HTTP (redirige vers HTTPS) Port 443 : HTTPS (Nextcloud) Port 3478 : TURN/STUN (Talk - appels vidéo) 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 : Via l'interface web : Paramètres d'administration → Aperçu → Cliquez sur Mettre à jour Ou via terminal (voir commandes utiles ci-dessus) Résumé des accès Nextcloud : https://cloud.votredomaine.com Serveur SSH : ssh utilisateur@IP_DU_SERVEUR Applications disponibles : Fichiers, Office, Talk, Calendar, Contacts, Tasks 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 : ✅ Stockage et partage de fichiers ✅ Édition collaborative de documents (Word, Excel, PowerPoint) ✅ Messagerie instantanée et visioconférence ✅ Gestion fine des droits d'accès par utilisateur et dossier ✅ Sauvegardes automatiques ✅ Sécurité SSL et pare-feu Prochaines étapes conseillées : Créer vos 50 utilisateurs et groupes Configurer les quotas par utilisateur Créer les dossiers partagés avec les bonnes permissions Former vos utilisateurs à l'utilisation de Nextcloud Surveiller les performances et ajuster les ressources si nécessaire