Tuto d’installation et d’optimisation de Nextcloud avec Nextcloud Office (Collabora Online) sur YunoHost

l’Almanet doLys Gnu/Linux – Open Source – Entreprises Forums L’almanet doLys Open Source Tuto d’installation et d’optimisation de Nextcloud avec Nextcloud Office (Collabora Online) sur YunoHost

  • This topic is empty.
Affichage de 1 message (sur 1 au total)
  • Auteur
    Articles
  • #12958
    nam1962nam1962
    Keymaster

      Je vais vous proposer ici un guide complet pour installer et optimiser Nextcloud avec Nextcloud Office (basé sur Collabora Online) sur un serveur YunoHost disposant de ressources limitées. Ce tuto est particulièrement adapté pour les petits VPS ou les serveurs à domicile ayant une configuration modeste (1 CPU, 2 Go de RAM).

      Pour bien comprendre ce que nous allons faire :

      • YunoHost est un système de gestion de serveur qui facilite l’auto-hébergement de nombreux services web. C’est la fondation sur laquelle nous allons tout installer.
      • Nextcloud est une plateforme complète de stockage et de collaboration, comparable à Dropbox ou Google Drive, mais en version auto-hébergée et gratuite. Vous pourrez stocker vos fichiers, les synchroniser et collaborer dessus.
      • Nextcloud Office est une application intégrée à Nextcloud qui permet d’éditer des documents bureautiques (textes, tableurs, présentations) directement dans votre navigateur, comme le fait Google Docs. C’est l’équivalent auto-hébergé et gratuit de Google Sheets/Docs/Slides.
      • Collabora est une application YunoHost séparée qui fonctionne comme serveur pour Nextcloud Office. C’est elle qui gère le traitement des documents en coulisses.

      Nextcloud possède d’autres applications intéressantes comme Deck (un équivalent de Trello pour la gestion de projets), Notes, Talk (vidéoconférence), etc. En suivant ce guide, vous pourrez créer votre propre écosystème collaboratif complet, hébergé chez vous et totalement sous votre contrôle !

      Lisez tranquillement le tuto pour comprendre et choisir vos optimisations.

      A – Prérequis et considérations initiales

      Configuration minimale

      • CPU : 1 cœur (virtual core)
      • RAM : 2 Go minimum
      • Stockage : Au moins 20 Go d’espace disque (mais plus c’est mieux !)
      • YunoHost installé et fonctionnel (version 11+ recommandée)
      • Un nom de domaine configuré (dans notre exemple : exemple.fr)

      Avant de commencer

      • Cette configuration permettra de gérer 3 à 5 utilisateurs simultanés maximum
      • Prévoyez des sauvegardes régulières de votre système et de vos données
      • Patience, l’installation peut prendre du temps sur une machine peu puissante
      • Un sous-domaine dédié pour Office (office.exemple.fr) sera nécessaire

      Comment se connecter en SSH à votre serveur YunoHost

      Pour les opérations en ligne de commande, vous devrez vous connecter en SSH :

      # Sous Linux/Mac :
      ssh admin@votre-serveur-yunohost
      # ou
      ssh admin@votre-ip-serveur
      
      # Sous Windows : utilisez PuTTY ou Windows Terminal
      # Nom d'hôte : votre-serveur-yunohost ou votre-ip-serveur
      # Utilisateur : admin
      

      Le mot de passe est celui que vous avez défini lors de l’installation de YunoHost.

      B – Installation de Nextcloud via YunoHost (GUI)

      La méthode la plus simple est d’utiliser l’interface graphique de YunoHost :

      1. Connectez-vous à l’interface d’administration de YunoHost
        • Allez dans « Applications » > « Installer »
        • Recherchez « Nextcloud » et cliquez sur Installer
      2. Configurez l’installation
        • Choisissez votre domaine principal (ex: exemple.fr)
        • Créez éventuellement un sous-domaine (ex: cloud.exemple.fr)
        • Choisissez un chemin d’installation (ex: /nextcloud)
        • Sélectionnez les utilisateurs autorisés (ou tous les utilisateurs)
      3. Finalisez l’installation
        • Cliquez sur « Installer » et patientez (ça peut être long !)

      C – Installation de Collabora Online (GUI + CLI)

      1. Créez un sous-domaine pour Collabora

      Vous pouvez le faire via l’interface graphique de YunoHost (Domaines > Ajouter un domaine) ou en ligne de commande :

      # Connectez-vous en SSH à votre serveur YunoHost
      ssh admin@votre-serveur-yunohost
      
      # Ajoutez un sous-domaine pour Collabora
      sudo yunohost domain add office.exemple.fr
      

      2. Installez l’application Collabora via YunoHost

      De préférence, utilisez l’interface graphique pour l’installation initiale :

      1. Allez dans « Applications » > « Installer »
      2. Recherchez « Collabora » et cliquez sur Installer
      3. Sélectionnez le domaine « office.exemple.fr » créé précédemment

      Si vous préférez la ligne de commande :

      # Connectez-vous en SSH à votre serveur YunoHost (si ce n'est pas déjà fait)
      ssh admin@votre-serveur-yunohost
      
      # Installez Collabora depuis les applications communautaires
      sudo yunohost app install collabora
      

      3. Installez l’application « Nextcloud Office » dans Nextcloud

      Cette étape se fait dans l’interface graphique de Nextcloud :

      1. Connectez-vous à votre instance Nextcloud en tant qu’administrateur
      2. Allez dans Applications > Office & texte
      3. Activez « Collabora Online » (pas « Collabora Online – Built-in CODE Server »)

      D – Configuration de l’intégration Nextcloud + Collabora

      C’est ici que la plupart des gens rencontrent des problèmes. Suivez bien ces étapes !

      1. Configurez Nextcloud pour utiliser Collabora (GUI)

      Dans l’interface d’administration Nextcloud :

      1. Allez dans « Paramètres » > « Administration » > « Collabora Online »
      2. Dans « URL de votre serveur Collabora », entrez : https://office.exemple.fr
      3. Cochez « Désactiver la vérification du certificat (non recommandé) » si vous utilisez un certificat auto-signé
      4. Sous « Paramètres avancés », ajoutez votre adresse IP serveur dans « Plages d’adresses IP autorisées pour WOPI »

      Pour déterminer l’adresse IP de votre serveur, utilisez cette commande en SSH :

      # Pour trouver l'IP de votre serveur
      hostname -I | awk '{print $1}'
      

      2. Configurez Collabora pour autoriser les domaines Nextcloud (CLI)

      Maintenant, passons aux configurations qui nécessitent la ligne de commande :

      # Connectez-vous en SSH à votre serveur
      ssh admin@votre-serveur-yunohost
      
      # Éditez le fichier de configuration de Collabora
      sudo nano /etc/coolwsd/coolwsd.xml
      

      Trouvez la section <storage desc="Backend storage"> et dans la sous-section <wopi>, assurez-vous que les hôtes suivants sont autorisés (remplacez « exemple.fr » par votre vrai domaine) :

      <host desc="Regex pattern of hostname to allow or deny." allow="true">exemple\.fr</host>
      <host desc="Regex pattern of hostname to allow or deny." allow="true">.*\.exemple\.fr</host>
      <host desc="Regex pattern of hostname to allow or deny." allow="true">127\.0\.0\.1</host>
      <host desc="Regex pattern of hostname to allow or deny." allow="true">::1</host>
      <host desc="Regex pattern of hostname to allow or deny." allow="true">localhost</host>
      

      Ou en utilisant sed (plus simple mais attention aux erreurs) :

      # Configurez Collabora pour accepter les connexions de votre domaine
      # REMPLACEZ exemple.fr par votre nom de domaine réel !
      sudo sed -i 's/<host desc="Regex pattern of hostname to allow or deny." allow="true">exemple.fr<\/host>/<host desc="Regex pattern of hostname to allow or deny." allow="true">exemple\\.fr<\/host>\n            <host desc="Regex pattern of hostname to allow or deny." allow="true">.*\\.exemple\\.fr<\/host>\n            <host desc="Regex pattern of hostname to allow or deny." allow="true">127\\.0\\.0\\.1<\/host>\n            <host desc="Regex pattern of hostname to allow or deny." allow="true">::1<\/host>\n            <host desc="Regex pattern of hostname to allow or deny." allow="true">localhost<\/host>/' /etc/coolwsd/coolwsd.xml
      

      3. Configurez Nginx pour gérer correctement les requêtes (CLI)

      # Créez ou modifiez la configuration Nginx pour Collabora
      # REMPLACEZ exemple.fr par votre vrai domaine !
      cat > /etc/nginx/conf.d/office.exemple.fr.conf << 'EOF'
      map $http_upgrade $connection_upgrade {
          default upgrade;
          ''      close;
      }
      
      server {
          listen 80;
          listen [::]:80;
          server_name office.exemple.fr;
          
          # Redirect all HTTP requests to HTTPS
          return 301 https://$host$request_uri;
      }
      
      server {
          listen 443 ssl;
          listen [::]:443 ssl;
          server_name office.exemple.fr;
          
          ssl_certificate /etc/yunohost/certs/office.exemple.fr/crt.pem;
          ssl_certificate_key /etc/yunohost/certs/office.exemple.fr/key.pem;
          
          # Augmenter la taille maximale des requêtes
          client_max_body_size 100M;
          
          # Include collabora config
          include /etc/nginx/conf.d/office.exemple.fr.d/collabora.conf;
      }
      EOF
      

      4. Redémarrez les services (CLI)

      # Redémarrez Collabora
      sudo systemctl restart coolwsd
      
      # Redémarrez Nginx
      sudo systemctl restart nginx
      

      5. Vérifiez que l’API de découverte Collabora fonctionne (CLI)

      # REMPLACEZ exemple.fr par votre vrai domaine !
      curl -v https://office.exemple.fr/hosting/discovery
      

      Vous devriez obtenir un long fichier XML qui liste les formats de documents supportés.

      E – Optimisations pour les serveurs à ressources limitées

      Voici les optimisations essentielles pour un serveur limité (1 CPU, 2 Go RAM) :

      1. Optimisation de PHP-FPM (CLI)

      # Modifier PHP-FPM pour utiliser le mode ondemand
      sudo sed -i 's/^pm = dynamic/pm = ondemand/' /etc/php/8.3/fpm/pool.d/www.conf
      sudo sed -i 's/^pm.max_children = 5/pm.max_children = 8/' /etc/php/8.3/fpm/pool.d/www.conf
      sudo sed -i '/^;pm.process_idle_timeout/a pm.process_idle_timeout = 90s' /etc/php/8.3/fpm/pool.d/www.conf
      sudo sed -i '/^;php_admin_value\[memory_limit\]/a php_admin_value[memory_limit] = 256M\nphp_admin_value[max_execution_time] = 300\nphp_admin_value[max_input_time] = 300\nphp_admin_value[upload_max_filesize] = 100M\nphp_admin_value[post_max_size] = 100M' /etc/php/8.3/fpm/pool.d/www.conf
      

      2. Optimisation du cache PHP (CLI)

      # Créer une configuration d'optimisation pour PHP
      sudo cat > /etc/php/8.3/fpm/conf.d/99-nextcloud.ini << 'EOF'
      opcache.enable=1
      opcache.memory_consumption=128
      opcache.interned_strings_buffer=16
      opcache.max_accelerated_files=10000
      opcache.revalidate_freq=60
      opcache.save_comments=1
      opcache.jit=1255
      opcache.jit_buffer_size=128M
      
      apc.enabled=1
      apc.shm_segments=1
      apc.shm_size=128M
      apc.ttl=7200
      apc.user_ttl=7200
      
      realpath_cache_size=4096K
      realpath_cache_ttl=600
      EOF
      

      3. Optimisation de Collabora (CLI)

      # Optimiser Collabora pour un serveur avec peu de ressources
      sudo sed -i 's/<max_concurrency.*type="uint".*>[0-9]*<\/max_concurrency>/<max_concurrency desc="The maximum number of threads to use while processing a document." type="uint" default="4">2<\/max_concurrency>/' /etc/coolwsd/coolwsd.xml
      sudo sed -i 's/<num_prespawn_children.*type="uint".*>[0-9]*<\/num_prespawn_children>/<num_prespawn_children desc="Number of child processes to keep started in advance and waiting for new clients." type="uint" default="1">1<\/num_prespawn_children>/' /etc/coolwsd/coolwsd.xml
      sudo sed -i 's/<limit_dirty_mem_mb.*type="uint".*>[0-9]*<\/limit_dirty_mem_mb>/<limit_dirty_mem_mb desc="Minimum memory usage for a document to be candidate for bad state" type="uint" default="3072">1024<\/limit_dirty_mem_mb>/' /etc/coolwsd/coolwsd.xml
      

      4. Optimisation de Nextcloud (GUI + CLI)

      Connectez-vous à Nextcloud en tant qu’administrateur puis :

      1. Désactivez les applications non essentielles (GUI)
      2. Allez dans Paramètres > Administration > Paramètres de base (GUI)
      3. Activez le cache APCu et Redis si disponible (GUI)
      4. Configurez les tâches de fond pour utiliser le cron système (GUI)

      Via la ligne de commande (CLI) :

      # Configurez Nextcloud pour utiliser le cache APCu
      sudo -u nextcloud php /var/www/nextcloud/occ config:system:set memcache.local --value='\OC\Memcache\APCu'
      
      # Activez la génération préventive des miniatures
      sudo -u nextcloud php /var/www/nextcloud/occ config:system:set preview_max_x --value=1024
      sudo -u nextcloud php /var/www/nextcloud/occ config:system:set preview_max_y --value=1024
      sudo -u nextcloud php /var/www/nextcloud/occ config:system:set jpeg_quality --value=60
      

      5. Script de maintenance automatique (CLI)

      sudo cat > /usr/local/bin/nextcloud-optimize.sh << 'EOF' #!/bin/bash echo "Nettoyage des fichiers temporaires..." find /tmp -type f -atime +7 -delete find /var/tmp -type f -atime +7 -delete echo "Maintenance Nextcloud..." sudo -u nextcloud php /var/www/nextcloud/occ maintenance:repair sudo -u nextcloud php /var/www/nextcloud/occ files:scan-app-data sudo -u nextcloud php /var/www/nextcloud/occ preview:generate-all -f echo "Optimisation de la base de données..." sudo -u nextcloud php /var/www/nextcloud/occ db:add-missing-indices sudo -u nextcloud php /var/www/nextcloud/occ db:convert-filecache-bigint echo "Nettoyage des vieux fichiers de logs..." find /var/log -name "*.gz" -mtime +30 -delete EOF sudo chmod +x /usr/local/bin/nextcloud-optimize.sh # Ajouter au cron pour une exécution hebdomadaire sudo echo "0 2 * * 0 /usr/local/bin/nextcloud-optimize.sh" > /etc/cron.d/nextcloud-optimize
      

      F – Résolution des problèmes courants

      Erreur « Hôte WOPI non autorisé »

      Si vous obtenez cette erreur lors de l’ouverture d’un document :

      1. Vérifiez les journaux Nextcloud :
        sudo -u nextcloud php /var/www/nextcloud/occ log:tail
        
      2. Si vous voyez une erreur comme « WOPI request denied from X.X.X.X as it does not match the configured ranges », ajoutez cette adresse IP à la liste des adresses autorisées dans Nextcloud :
        sudo -u nextcloud php /var/www/nextcloud/occ config:app:get richdocuments wopi_allowlist
        sudo -u nextcloud php /var/www/nextcloud/occ config:app:set richdocuments wopi_allowlist --value="127.0.0.1,X.X.X.X"
        
      3. Redémarrez les services :
        sudo systemctl restart php8.3-fpm
        sudo systemctl restart coolwsd
        

      Problèmes de certificats SSL

      Si vous avez des erreurs liées aux certificats :

      1. Vérifiez que les certificats existent et sont valides :
        # REMPLACEZ exemple.fr par votre domaine réel
        sudo ls -la /etc/yunohost/certs/office.exemple.fr/
        
      2. Renouvelez le certificat au besoin :
        # REMPLACEZ exemple.fr par votre domaine réel
        sudo yunohost domain cert renew office.exemple.fr --force
        

      Problèmes de performances

      Si les documents s’ouvrent trop lentement :

      1. Vérifiez la charge système :
        htop
        
      2. Augmentez les limites de mémoire si nécessaire :
        # Augmenter la mémoire allouée à PHP
        sudo sed -i 's/memory_limit = 256M/memory_limit = 512M/' /etc/php/8.3/fpm/conf.d/99-nextcloud.ini
        
      3. Désactivez plus d’applications Nextcloud non essentielles

      G – Bonus : Ajout d’extensions utiles

      Extensions Nextcloud recommandées pour petite configuration

      • Calendar (calendrier)
      • Contacts (carnet d’adresses)
      • Files PDF viewer (visualiseur PDF intégré)
      • Notes (prise de notes simple)

      Évitez les extensions gourmandes en ressources comme :

      • Talk (visioconférence)
      • Audio Player
      • Photos (préférez « Gallery » qui est plus léger)

      Conclusion

      Voilà, vous avez maintenant un Nextcloud avec Nextcloud Office fonctionnel sur un petit serveur YunoHost ! Cette configuration vous permettra de travailler confortablement avec 3-5 utilisateurs maximum simultanément.

      N’oubliez pas de :

      • Faire des sauvegardes régulières
      • Surveiller l’espace disque disponible
      • Exécuter occasionnellement le script de maintenance

      Si vous souhaitez accueillir plus d’utilisateurs ou améliorer les performances, envisagez de passer à un serveur avec 2 cœurs CPU et 4 Go de RAM minimum.

      Profitez de votre cloud personnel et de votre suite bureautique collaborative auto-hébergés !

      Problème de notifications répétitives LDAP

      Si vous recevez des notifications répétitives concernant l’ajout/retrait d’utilisateurs des groupes (toutes les heures environ), c’est généralement dû à une mauvaise configuration des filtres LDAP et à un intervalle de synchronisation trop court. Voici comment résoudre ce problème :

      1. Corrigez les filtres LDAP :
        # Corriger le filtre de groupe
        sudo -u nextcloud php /var/www/nextcloud/occ ldap:set-config "" ldapGroupFilter "(objectClass=posixGroup)"
        
        # Corriger le filtre utilisateur
        sudo -u nextcloud php /var/www/nextcloud/occ ldap:set-config "" ldapUserFilter "(&(objectclass=posixAccount)(permission=cn=nextcloud.main,ou=permission,dc=yunohost,dc=org))"
        
      2. Ajustez l’intervalle de synchronisation en fonction de vos besoins :
        # Pour une synchronisation quotidienne (recommandé pour la plupart des cas)
        sudo -u nextcloud php /var/www/nextcloud/occ config:app:set user_ldap background_sync_interval --value="86400"
        
        # Pour une synchronisation hebdomadaire (si vous modifiez rarement les utilisateurs/groupes)
        sudo -u nextcloud php /var/www/nextcloud/occ config:app:set user_ldap background_sync_interval --value="604800"
        
      3. Testez que la configuration fonctionne correctement :
        # Tester la configuration LDAP
        sudo -u nextcloud php /var/www/nextcloud/occ ldap:test-config ""
        
        # Vérifier qu'un utilisateur est toujours reconnu (remplacez "nom_utilisateur" par un utilisateur réel)
        sudo -u nextcloud php /var/www/nextcloud/occ ldap:check-user nom_utilisateur
        
      4. Redémarrer PHP pour appliquer les changements :
        systemctl restart php8.3-fpm
        

      Ces modifications devraient résoudre le problème de notifications répétitives. Sachez que même avec un intervalle de synchronisation long, les nouveaux utilisateurs pourront se connecter immédiatement après leur création dans YunoHost, sans attendre la synchronisation. L’intervalle n’affecte que les mises à jour des appartenances aux groupes et autres attributs utilisateur.

      Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc

    Affichage de 1 message (sur 1 au total)
    • Vous devez être connecté pour répondre à ce sujet.