« NextCloud » : différence entre les versions

De Le Wiki de Lug
Aller à la navigation Aller à la recherche
 
(41 versions intermédiaires par le même utilisateur non affichées)
Ligne 331 : Ligne 331 :


  # usermod -a -G redis www-data
  # usermod -a -G redis www-data
----
La commande suivante devra s'effectuer sur l'hôte (ProxMox) pour une installation dans un conteneur :
ProxMox:~# vi /etc/sysctl.conf
<font color = grey>...</font>
<font color = blue>vm.overcommit_memory = 1</font>
ProxMox:~# sysctl vm.overcommit_memory=1
----
  # systemctl restart redis
  # systemctl restart redis
  # systemctl restart apache2
  # systemctl restart apache2
Ligne 350 : Ligne 359 :


Il faut activer APCu dans "cli" pour éviter un bug avec certaines commandes :
Il faut activer APCu dans "cli" pour éviter un bug avec certaines commandes :
  # vi /etc/php/7.4/cli/conf.d/20-apcu.ini
  # vi /etc/php/8.1/cli/conf.d/20-apcu.ini


  extension=apcu.so
  extension=apcu.so
Ligne 363 : Ligne 372 :
   | texte  = Editer "/etc/php/8.1/fpm/php.ini" si le serveur est configuré avec [[#.28optionnel.29_NextCloud_avec_PHP-FPM|PHP-FPM]].
   | texte  = Editer "/etc/php/8.1/fpm/php.ini" si le serveur est configuré avec [[#.28optionnel.29_NextCloud_avec_PHP-FPM|PHP-FPM]].
  }}
  }}
Dans cet exemple on applique les [https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html paramètres de base recommandés par NextCloud] :
Dans cet exemple on applique les [https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html paramètres de base recommandés par NextCloud] [https://gist.github.com/rohankhudedev/1a9c0a3c7fb375f295f9fc11aeb116fe autres paramètres]  :
  <font color = grey>...</font>
  <font color = grey>...</font>
  [opcache]
  [opcache]
  <font color = blue>opcache.enable = 1
  <font color = blue>opcache.enable = 1
  opcache.interned_strings_buffer = 8
  opcache.interned_strings_buffer = 64
  opcache.max_accelerated_files = 10000
  opcache.max_accelerated_files = 50000
  opcache.memory_consumption = 128
  opcache.memory_consumption = 512
  opcache.save_comments = 1
  opcache.save_comments = 1
  opcache.revalidate_freq = 1</font>
  opcache.revalidate_freq = 1</font>
Ligne 379 : Ligne 388 :
  [opcache]
  [opcache]
  <font color = blue>opcache.enable = 1
  <font color = blue>opcache.enable = 1
  opcache.interned_strings_buffer = 8
  opcache.interned_strings_buffer = 64
  opcache.max_accelerated_files = 10000
  opcache.max_accelerated_files = 50000
  opcache.memory_consumption = 128
  opcache.memory_consumption = 512
  opcache.save_comments = 1
  opcache.save_comments = 1
  opcache.revalidate_freq = 1</font>
  opcache.revalidate_freq = 1</font>
Ligne 804 : Ligne 813 :


  # usermod -a -G redis www-data
  # usermod -a -G redis www-data
----
La commande suivante devra s'effectuer sur l'hôte (ProxMox) pour une installation dans un conteneur :
ProxMox:~# vi /etc/sysctl.conf
<font color = grey>...</font>
<font color = blue>vm.overcommit_memory = 1</font>
ProxMox:~# sysctl vm.overcommit_memory=1
----
  # systemctl restart redis
  # systemctl restart redis
  # systemctl restart apache2
  # systemctl restart apache2
Ligne 830 : Ligne 848 :
=== OpCache ===
=== OpCache ===
Optimisation de PHP via OpCache.
Optimisation de PHP via OpCache.
  # vi /etc/php/7.4/apache2/php.ini
  # vi /etc/php/8.1/apache2/php.ini
{{Méta bandeau
{{Méta bandeau
   | niveau = information
   | niveau = information
   | icône = loupe
   | icône = loupe
   | texte  = Editer "/etc/php/7.4/fpm/php.ini" si le serveur est configuré avec [[#.28optionnel.29_NextCloud_avec_PHP-FPM|PHP-FPM]].
   | texte  = Editer "/etc/php/8.1/fpm/php.ini" si le serveur est configuré avec [[#.28optionnel.29_NextCloud_avec_PHP-FPM|PHP-FPM]].
  }}
  }}
Dans cet exemple on applique les [https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html paramètres de base recommandés par NextCloud] :
Dans cet exemple on applique les [https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html paramètres de base recommandés par NextCloud] [https://gist.github.com/rohankhudedev/1a9c0a3c7fb375f295f9fc11aeb116fe autres paramètres] :
  <font color = grey>...</font>
  <font color = grey>...</font>
  [opcache]
  [opcache]
  <font color = blue>opcache.enable = 1
  <font color = blue>opcache.enable = 1
  opcache.interned_strings_buffer = 8
  opcache.interned_strings_buffer = 64
  opcache.max_accelerated_files = 10000
  opcache.max_accelerated_files = 50000
  opcache.memory_consumption = 128
  opcache.memory_consumption = 512
  opcache.save_comments = 1
  opcache.save_comments = 1
  opcache.revalidate_freq = 1</font>
  opcache.revalidate_freq = 1</font>
  <font color = grey>...</font>
  <font color = grey>...</font>


  # vi /etc/php/7.4/cli/php.ini
  # vi /etc/php/8.1/cli/php.ini


  <font color = grey>...</font>
  <font color = grey>...</font>
  [opcache]
  [opcache]
  <font color = blue>opcache.enable = 1
  <font color = blue>opcache.enable = 1
  opcache.interned_strings_buffer = 8
  opcache.interned_strings_buffer = 64
  opcache.max_accelerated_files = 10000
  opcache.max_accelerated_files = 50000
  opcache.memory_consumption = 128
  opcache.memory_consumption = 512
  opcache.save_comments = 1
  opcache.save_comments = 1
  opcache.revalidate_freq = 1</font>
  opcache.revalidate_freq = 1</font>
Ligne 981 : Ligne 999 :
=== Dossier des partages ===
=== Dossier des partages ===
Par défaut les partages entre utilisateur apparaissent à la racine, pour plus de clarté on peut les regrouper dans un même dossier :
Par défaut les partages entre utilisateur apparaissent à la racine, pour plus de clarté on peut les regrouper dans un même dossier :
# vi /var/www/nextcloud/config/config.php
  <font color = grey>...</font>
  <font color = grey>...</font>
   <nowiki>'skeletondirectory' => '',</nowiki>
   <nowiki>'skeletondirectory' => '',</nowiki>
Ligne 1 032 : Ligne 1 052 :
=== Partages CIFS/Samba ===
=== Partages CIFS/Samba ===
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/external_storage/smb.html source]
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/external_storage/smb.html source]
 
==== Ubuntu 20.04 ====
Par défaut les partages dit de types Windows ne sont pas disponible, il suffit d'installer les paquets suivants :
Par défaut les partages dit de types Windows ne sont pas disponible, il suffit d'installer les paquets suivants :
  # apt install smbclient libsmbclient
  # apt install smbclient libsmbclient
==== Ubuntu 22.04 ====
# apt install smbclient libsmbclient php8.1-smbclient


== Collabora Online ==
== Collabora Online ==
=== Client ===
=== Client ===
On installe l'application "'''Collabora Online'''" via [[#Application|la GUI de l'administrateur]].
On installe l'application "'''Nextcloud Office'''" via [[#Application|la GUI de l'administrateur]].
{{Méta bandeau
  | niveau = modéré
  | icône = loupe
  | texte  = Dans les versions récente de Nextcloud l'application peut être installé par défaut.
}}
=== Serveur ===
=== Serveur ===
[https://www.linuxbabe.com/ubuntu/integrate-collabora-onlinenextcloud-without-docker Source] [https://www.collaboraoffice.com/code/linux-packages/ Autre source]
{{Méta bandeau
  | niveau = grave
  | icône = important
  | texte  = Installation dans une VM, machine physique ou un conteneur privilégié(+mknod=1) est fortement recommandé. (certaines version du service "coolwsd" ne fonctionnent pas dans un conteneur non privilégié)
}}
{{Méta bandeau
  | niveau = modéré
  | icône = important
  | texte  = Dans un conteneur non privilégié, pour pouvoir utiliser les fonctions d'impression, il faudra activer la fonction "mknod=1"
}}
[[File:MknodA.JPG|mknod=1]]
{{Méta bandeau
  | niveau = information
  | icône = loupe
  | texte  = Voir la [[Restore_mknod|restauration d'un conteneur avec erreur "Cannot mknod: Operation not permitted"]]
}}
 
====Ubuntu 22.04====
{{Méta bandeau
{{Méta bandeau
   | niveau = information
   | niveau = information
Ligne 1 047 : Ligne 1 091 :
  }}
  }}
On active le dépôt de Collabora :
On active le dépôt de Collabora :
  # apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
  # apt install gnupg apt-transport-https ca-certificates
  # echo 'deb <nowiki>https://</nowiki>www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2004 ./' >> /etc/apt/sources.list
# wget <nowiki>https://</nowiki>collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg -P /usr/share/keyrings/
  # echo 'deb [signed-by=/usr/share/keyrings/collaboraonline-release-keyring.gpg] <nowiki>https://</nowiki>www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204 ./' | sudo tee /etc/apt/sources.list.d/collabora.list
 
On installe le serveur de base :
On installe le serveur de base :
  # apt update && apt upgrade
  # apt update && apt upgrade
  # apt install loolwsd code-brand
  # apt install coolwsd code-brand
On installe les modules de langue désirés (ici français, espagnol et anglais)
On installe les modules de langue désirés (ici français, espagnol et anglais)
  # apt install collaboraoffice*<font color = blue>fr</font> collaboraoffice*<font color = blue>es</font> collaboraoffice*<font color = blue>en</font> collaboraoffice*<font color = blue>en-gb</font> collaboraoffice*<font color = blue>en-us</font>
  # apt install collaboraoffice*<font color = blue>fr</font> collaboraoffice*<font color = blue>es</font> collaboraoffice*<font color = blue>en</font> collaboraoffice*<font color = blue>en-gb</font> collaboraoffice*<font color = blue>en-us</font>
On désactive la prise en charge du certificat SSL en local et on l'accepte via le proxy :
On désactive la prise en charge du certificat SSL en local et on l'accepte via le proxy :
  # loolconfig set ssl.enable false
  # coolconfig set ssl.enable false
  # loolconfig set ssl.termination true
  # coolconfig set ssl.termination true
On autorise notre serveur à se connecter :
On autorise notre serveur à se connecter :
  # loolconfig set storage.wopi.host <font color = blue>nextcloud.example.com</font>
  # coolconfig set storage.wopi.host <font color = blue>nextcloud.example.com</font>
----
Pour autoriser plusieurs instances NextCloud :
# vi /etc/coolwsd/coolwsd.xml
{{Méta bandeau
  | niveau = information
  | icône = important
  | texte  = fichier "xml" : bien respecter les aligments..
}}
Puis remplacer :
<font color = gray>...</font>
                        <alias_groups desc="default mode is 'first' it allows only the first host when groups are not defined. set mode to 'groups' and define group to allow multiple host and its aliases" mode="<font color = red>first</font>">
<font color = gray>...</font>
<font color = gray>...</font>
                        </alias_groups>
                        <font color = red><host>nextcloud.example.com</host></font>
                </wopi>
<font color = gray>...</font>
Par :
<font color = gray>...</font>
                        <alias_groups desc="default mode is 'first' it allows only the first host when groups are not defined. set mode to 'groups' and define group to allow multiple host and its aliases" mode="<font color = blue>groups</font>">
<font color = gray>...</font>
<font color = gray>...</font>
                                <font color = blue><group>
                                        <host desc="hostname to allow or deny." allow="true"<font color = green><nowiki>https://</nowiki>nextcloud.example.com</font></host>
                                </group>
                                <group>
                                        <host desc="hostname to allow or deny." allow="true"><font color = green><nowiki>https://</nowiki>autrenextcloud.example.com</font></host>
                                </group></font>
                        </alias_groups>
                </wopi>
<font color = gray>...</font>
----
{{Méta bandeau
  | niveau = modéré
  | icône = important
  | texte  = Erreur '''No acceptable WOPI hosts found matching the target host [<font color = blue>nextcloud.example.com</font>]'''
}}
Si les documents ne s'ouvrent pas à cause de cette erreur il faut corriger la sortie de la commande "coolconfig set storage.wopi.host <font color = blue>nextcloud.example.com</font>" en éditant le fichier de configuration :
# vi /etc/coolwsd/coolwsd.xml
{{Méta bandeau
  | niveau = information
  | icône = important
  | texte  = fichier "xml" : bien respecter les aligments..
}}
Et remplacer la ligne :
<host><font color = green>nextcloud.example.com</font></host>
Par :
 
<host <font color = blue>allow="true" desc="Regex pattern of hostname to allow or deny."</font>><font color = green>nextcloud.example.com</font></host>
----
On redémarre le serveur Collabora pour activer les changements :
On redémarre le serveur Collabora pour activer les changements :
  # systemctl restart loolwsd
  # systemctl restart coolwsd


=== Reverse-Proxy ===
=== Reverse-Proxy ===
Ligne 1 073 : Ligne 1 172 :


  server {
  server {
    listen      443 ssl;
     server_name  <font color = blue>collabora.exemple.com</font>;
     server_name  <font color = blue>collabora.exemple.com</font>;
   
   
     error_log /var/log/nginx/collabora.error;
     error_log /var/log/nginx/collabora.error;
   
   
    # static files
    location ^~ /loleaflet {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
    }
    # WOPI discovery URL
    location ^~ /hosting/discovery {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
    }
    # Capabilities
    location ^~ /hosting/capabilities {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
    }
    # main websocket
    location ~ ^/lool/(.*)/ws$ {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }
    # download, presentation and image upload
    location ~ ^/lool {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
    }
    # Admin Console websocket
    location ^~ /lool/adminws {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
     ssl_certificate /etc/letsencrypt/live/<font color = blue>collabora.exemple.com</font>/fullchain.pem; # managed by Certbot
     ssl_certificate /etc/letsencrypt/live/<font color = blue>collabora.exemple.com</font>/fullchain.pem; # managed by Certbot
     ssl_certificate_key /etc/letsencrypt/live/<font color = blue>collabora.exemple.com</font>/privkey.pem; # managed by Certbot
     ssl_certificate_key /etc/letsencrypt/live/<font color = blue>collabora.exemple.com</font>/privkey.pem; # managed by Certbot
Ligne 1 131 : Ligne 1 187 :
     ssl_stapling on; # managed by Certbot
     ssl_stapling on; # managed by Certbot
     ssl_stapling_verify on; # managed by Certbot
     ssl_stapling_verify on; # managed by Certbot
}
   
   
server {
    # static files
    if ($host = <font color = blue>collabora.exemple.com</font>) {
    location ^~ /browser {
        return 301 <nowiki>https://</nowiki>$host$request_uri;
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
    } # managed by Certbot
        proxy_set_header Host $http_host;
    }
   
   
    listen 80;
    # WOPI discovery URL
    listen [::]:80;
    location ^~ /hosting/discovery {
    server_name  <font color = blue>collabora.exemple.com</font>;
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
    }
   
   
    error_log /var/log/nginx/collabora.error;
    # Capabilities
    location ^~ /hosting/capabilities {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
    }
   
   
    # static files
    # main websocket
    location ^~ /loleaflet {
    location ~ ^/cool/(.*)/ws$ {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
    }
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
    # WOPI discovery URL
        proxy_read_timeout 36000s;
    location ^~ /hosting/discovery {
    }
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
    }
    # Capabilities
    location ^~ /hosting/capabilities {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
    }
    # main websocket
    location ~ ^/lool/(.*)/ws$ {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
    }
   
   
    # download, presentation and image upload
    # download, presentation and image upload
    location ~ ^/lool {
    location ~ ^/(c|l)ool {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Host $http_host;
        proxy_set_header Host $http_host;
    }
    }
   
   
    # Admin Console websocket
    # Admin Console websocket
    location ^~ /lool/adminws {
    location ^~ /cool/adminws {
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_pass <nowiki>http://</nowiki><font color = blue>12.34.56.789</font>:9980;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header Host $http_host;
        proxy_read_timeout 36000s;
        proxy_read_timeout 36000s;
    }
    }
   
   
  }
  }
Ligne 1 203 : Ligne 1 247 :
   | texte  = Dans un container LXC, juste après installation, j'ai réglé l'erreur "Echec de la lecture à partir du stockage..." à l'ouverture d'un fichier avec.. un redémarrage du container..
   | texte  = Dans un container LXC, juste après installation, j'ai réglé l'erreur "Echec de la lecture à partir du stockage..." à l'ouverture d'un fichier avec.. un redémarrage du container..
  }}
  }}
===Page d'administration de Collabora===
Pour activer la page d'administration il faut d'abord attribuer un mot de passe administrateur :
# coolconfig set-admin-password


== Webmail RainLoop intégré ==
Enter admin username [admin]: <font color = blue>admin</font>
Enter admin password:
Confirm admin password:
Saving configuration to : /etc/coolwsd/coolwsd.xml ...
Saved
 
# systemctl restart coolwsd
 
Puis se rendre à l'adresse '''<nowiki>https://</nowiki><font color = blue>collabora.exemple.com</font>/browser/dist/admin/admin.html'''
 
== (<font color=red>Obsolète</font>) Webmail RainLoop intégré ==
 
{{Méta bandeau
  | niveau = grave
  | icône = important
  | texte  = Voir le remplaçant '''[[#Webmail_SnappyMail_intégré|SnappyMail]]'''
}}


{{Méta bandeau
{{Méta bandeau
Ligne 1 296 : Ligne 1 359 :
=== Connexion compte Google protégé ===
=== Connexion compte Google protégé ===
Il n'y a pas de réel module de connexion OAuth 2 avec RainLoop, pas la peine de configurer l'intégration à Google il vous faudrait de toutes façons activer les connexions "moins sécurisées". Il est donc fortement conseillé de passer par [https://support.google.com/mail/answer/185833?hl=fr '''<u>les mots de passe d'application</u>'''].
Il n'y a pas de réel module de connexion OAuth 2 avec RainLoop, pas la peine de configurer l'intégration à Google il vous faudrait de toutes façons activer les connexions "moins sécurisées". Il est donc fortement conseillé de passer par [https://support.google.com/mail/answer/185833?hl=fr '''<u>les mots de passe d'application</u>'''].
== Webmail SnappyMail intégré ==


== Application "Maps" (Cartes) ==
== Application "Maps" (Cartes) ==
Ligne 1 348 : Ligne 1 413 :


Il faut tout d'abord augmenter la limite de mémoire PHP (min. 1G/max. 4G) :
Il faut tout d'abord augmenter la limite de mémoire PHP (min. 1G/max. 4G) :
-----
Ubuntu 20.04 :
  # vi /etc/php/7.4/apache2/php.ini
  # vi /etc/php/7.4/apache2/php.ini
{{Méta bandeau
{{Méta bandeau
Ligne 1 355 : Ligne 1 422 :
  }}
  }}
  <font color = grey>...</font>
  <font color = grey>...</font>
  memory_limit = <font color = blue>2048M</font>
  memory_limit = <font color = blue>4096M</font>
<font color = grey>...</font>
Ubuntu 22.04 :
# vi /etc/php/8.1/apache2/php.ini
{{Méta bandeau
  | niveau = information
  | icône = loupe
  | texte  = Editer "/etc/php/8.1/fpm/php.ini" si le serveur est configuré avec [[#.28optionnel.29_NextCloud_avec_PHP-FPM|PHP-FPM]].
}}
<font color = grey>...</font>
memory_limit = <font color = blue>4096M</font>
  <font color = grey>...</font>
  <font color = grey>...</font>
 
-----
Puis on recharge Apache :
  # apachectl graceful
  # apachectl graceful


Ligne 1 364 : Ligne 1 442 :
  # sudo -u www-data php /var/www/nextcloud/occ face:setup --model 3
  # sudo -u www-data php /var/www/nextcloud/occ face:setup --model 3
  # sudo -u www-data php /var/www/nextcloud/occ face:setup --model 4
  # sudo -u www-data php /var/www/nextcloud/occ face:setup --model 4
Il faut configurer la taille mémoire maximale pour la reconnaissance faciale (exemple avec 4GB) :
# sudo -u www-data php /var/www/nextcloud/occ face:setup --memory <font color = blue>4GB</font>


=== Configuration et vérification de l'application ===
=== Configuration et vérification de l'application ===
Ligne 1 451 : Ligne 1 531 :


==== GPU NVidia via CUDA ====
==== GPU NVidia via CUDA ====
===== Ubuntu 20.04=====
[https://github.com/goodspb/pdlib Source pdlib] [https://stackoverflow.com/questions/49731346/compile-dlib-with-cuda source dlib]
[https://github.com/goodspb/pdlib Source pdlib] [https://stackoverflow.com/questions/49731346/compile-dlib-with-cuda source dlib]
{{Méta bandeau
{{Méta bandeau
Ligne 1 507 : Ligne 1 588 :
  pdlib extension version => 1.0.2
  pdlib extension version => 1.0.2
  dlib library version => 19.22.99
  dlib library version => 19.22.99
<font color = green>DLIB_USE_CUDA => true</font>
DLIB_USE_BLAS => true
DLIB_USE_LAPACK => true
USE_AVX_INSTRUCTIONS => false
USE_AVX2_INSTRUCTIONS => false
USE_NEON_INSTRUCTIONS => false
USE_SSE2_INSTRUCTIONS => true
USE_SSE4_INSTRUCTIONS => false
===== Ubuntu 22.04=====
On installe les dépendances :
# apt install git cmake software-properties-common libopenblas-dev liblapack-dev libx11-dev php8.1-dev pkg-config g++-10 gcc-10
On installe cudnn :
# apt install nvidia-cudnn
On compile et install dlib :
# mkdir -p /opt/SP/packages/
# cd $_
# git clone <nowiki>https://</nowiki>github.com/davisking/dlib.git
# cd dlib
# git submodule init
# git submodule update
# mkdir build
# cd $_
# CC=gcc-10 CXX=g++-10 cmake -DBUILD_SHARED_LIBS=ON -D DLIB_USE_CUDA=1 -D USE_AVX_INSTRUCTIONS=1 ../
# make
# make install
On compile et installe pdlib :
# cd /opt/SP/packages/
# git clone <nowiki>https://</nowiki>github.com/goodspb/pdlib.git
# cd pdlib
# phpize
# ./configure --enable-debug
# make
# make install
On inscrit le module dans apache :
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/8.1/fpm/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/8.1/cli/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/8.1/apache2/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/8.1/mods-available/pdlib.ini
# service apache2 restart && service php8.1-fpm restart
On test :
# php --ri pdlib
Exemple :
pdlib
pdlib support => enabled
pdlib extension version => 1.0.2
dlib library version => 19.24.99
  <font color = green>DLIB_USE_CUDA => true</font>
  <font color = green>DLIB_USE_CUDA => true</font>
  DLIB_USE_BLAS => true
  DLIB_USE_BLAS => true
Ligne 1 572 : Ligne 1 701 :
  [opcache]
  [opcache]
  <font color = blue>opcache.enable = 1
  <font color = blue>opcache.enable = 1
  opcache.interned_strings_buffer = 8
  opcache.interned_strings_buffer = 64
  opcache.max_accelerated_files = 10000
  opcache.max_accelerated_files = 50000
  opcache.memory_consumption = 128
  opcache.memory_consumption = 512
  opcache.save_comments = 1
  opcache.save_comments = 1
  opcache.revalidate_freq = 1</font>
  opcache.revalidate_freq = 1</font>
Ligne 1 643 : Ligne 1 772 :
  [opcache]
  [opcache]
  <font color = blue>opcache.enable = 1
  <font color = blue>opcache.enable = 1
  opcache.interned_strings_buffer = 8
  opcache.interned_strings_buffer = 64
  opcache.max_accelerated_files = 10000
  opcache.max_accelerated_files = 50000
  opcache.memory_consumption = 128
  opcache.memory_consumption = 512
  opcache.save_comments = 1
  opcache.save_comments = 1
  opcache.revalidate_freq = 1</font>
  opcache.revalidate_freq = 1</font>
Ligne 1 679 : Ligne 1 808 :
= Astuces / Commandes CLI =
= Astuces / Commandes CLI =
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html Source officielle]
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html Source officielle]
== Activer/Désactiver le mode maintenance ==
Activer :
# sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
Désactiver :
# sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
== Vérifier/Réparer l'installation de Nextcloud ==
== Vérifier/Réparer l'installation de Nextcloud ==
  # sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
  # sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
Ligne 1 708 : Ligne 1 842 :


=== Prise en charge des images sur les dossiers réseaux ===
=== Prise en charge des images sur les dossiers réseaux ===
{{Méta bandeau
  | niveau = information
  | icône = loupe
  | texte  = Voir [[#Partages_CIFS/Samba|partages Samba]]
}}
Pour activer la reconnaissance faciale des images sur les partages montés dans NextCloud. (Désactivé par default pour préserver la bande passante, le programme nécessitant de faire une copie locale pour analyser chaque images)
Pour activer la reconnaissance faciale des images sur les partages montés dans NextCloud. (Désactivé par default pour préserver la bande passante, le programme nécessitant de faire une copie locale pour analyser chaque images)
  # sudo -u www-data php /var/www/nextcloud/occ config:app:set facerecognition handle_external_files --value true
  # sudo -u www-data php /var/www/nextcloud/occ config:app:set facerecognition handle_external_files --value true

Version actuelle datée du 17 avril 2024 à 11:40

LXC Ubuntu 20.04

Installation Serveur

Source autre source

# apt update && apt upgrade

Archive NextCloud

Page de téléchargement

# apt install unzip
# cd /tmp/
# wget https://download.nextcloud.com/server/releases/latest.zip
# unzip latest.zip -d /var/www/
# rm latest.zip
# chown -R www-data. /var/www/nextcloud

Serveur SQL MariarDB

Installation :

# apt install mariadb-server

On lance le script pour attribuer un mot de passe root, virer l'utilisateur anonyme etc.

# mysql_secure_installation
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
... Success!

On créé la base de donnée pour NextCloud :

# mysql -u root -p
MariaDB [(none)]> create database nextcloud;
MariaDB [(none)]> create user nextcloud@localhost identified by 'motdepasse';
MariaDB [(none)]> grant all privileges on nextcloud.* to nextcloud@localhost IDENTIFIED BY 'motdepasse';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;

Installation de Apache2 & PHP7.4

# apt install imagemagick php-imagick php7.4 libapache2-mod-php7.4 php7.4-common php7.4-mysql php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp

On créé l'alias du site :

# vi /etc/apache2/sites-available/nextcloud.conf
Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

</Directory>

On active le site :

# a2ensite nextcloud.conf

On active les modules requis :

# a2enmod rewrite headers env dir mime

On active SSL :

# a2enmod ssl
# a2ensite default-ssl
# systemctl reload apache2

(Recommandé) On supprime et désactive la page par défaut d'Apache

# rm /var/www/html/index.html
# a2dissite 000-default
# systemctl reload apache2

(Optionnel) Plus d'écoute sur le port 80

Si le serveur n'a aucun autres service sur le port 80 on peut supprimer son écoute :

# vi /etc/apache2/ports.conf
...
# /etc/apache2/sites-enabled/000-default.conf

#Listen 80
...
# systemctl reload apache2

Configuration de NextCloud

On se rend sur l'adresse https://IP_NEXCLOUD/nextcloud/ et on rempli les champs indiqués puis ont clique sur "Terminer l'installation".

Page d'installation NextCloud

Si message d'erreur pas de panique, on retourne sur https://IP_NEXCLOUD/nextcloud/ pour vérifier que tout s'est bien déroulé.

Page de première connexion.

Configuration Reverse-Proxy Nginx

VHost NextCloud

Source

Exemple de vhost pour NextCloud :

server {
listen 80;
    listen [::]:80;
    server_name     nextcloud.exemple.com;
   # return 404;
    return 301 https://$host$request_uri;
}

server {
server_name     nextcloud.exemple.com;
    error_page 403  https://nextcloud.exemple.com;

    location / {
            client_max_body_size 0; # 0 supprime la limite d'upload
            proxy_set_header Upgrade              $http_upgrade;
            proxy_set_header Connection           "upgrade";
            proxy_set_header Host                 $host;
            proxy_set_header X-Real-IP            $remote_addr;
            proxy_set_header X-Forwarded-For      $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto    $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host     $http_host;
            proxy_pass https://IP_SERVEUR_NEXTCLOUD/nextcloud/;
            proxy_buffering off;
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot


    ssl_certificate /etc/letsencrypt/live/nextcloud.exemple.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.exemple.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    add_header Strict-Transport-Security "max-age=31536000" always;
    ssl_trusted_certificate /etc/letsencrypt/live/nextcloud.exemple.com/chain.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

    location ^~ /.well-known {
        # The following 6 rules are borrowed from `.htaccess`

        location = /.well-known/carddav     { return 301 /remote.php/dav/; }
        location = /.well-known/caldav      { return 301 /remote.php/dav/; }
        # Anything else is dynamically handled by Nextcloud
        location ^~ /.well-known            { return 301 /index.php$uri; }

        try_files $uri $uri/ =404;
    }

}

Configuration de Nextcloud

On modifie le fichier de configuration de NextCloud pour qu'il accepte le nom de domaine et le reverse proxy :

NextCloud ~# vi /var/www/nextcloud/config/config.php
...
'trusted_domains' =>
 array (
         0 => '12.34.56.789',
         1 => 'nextcloud.exemple.com',
       ),
 'trusted_proxies' =>
 array (
         0 => 'IP_PROXY',
       ),
 'overwritewebroot' => '/',
...

Post-Installation

NextCloud est maintenant fonctionnel, mais si vous vous rendez, depuis la page de l'administrateur, sur Administrateur -> Paramètres -> Vue d'ensemble .

Accès du menu "Vue d'ensemble"

Il reste quelques réglages à effectués. (3 si vous avez suivie ce tutorial).

Message d'erreurs post installation

(optionnel) Jolie URL

# vi /var/www/nextcloud/config/config.php
...
  'installed' => true,
  'overwrite.cli.url' => 'https://nextcloud.exemple.com/nextcloud',
  'htaccess.RewriteBase' => '/nextcloud',
);
# sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess

Limite de mémoire PHP à 512 Mo

# vi /etc/php/7.4/apache2/php.ini
...
memory_limit = 512M
...
# apache2ctl graceful

Fuseau horaire PHP

# vi /etc/php/7.4/apache2/php.ini
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris
...
# vi /etc/php/7.4/cli/php.ini
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris
...
# apache2ctl graceful

Préfixe de région par défaut

# vi /var/www/nextcloud/config/config.php
...
  'htaccess.RewriteBase' => '/nextcloud',
  'default_phone_region' => 'FR',
);

Langue par défaut

Source

# vi /var/www/nextcloud/config/config.php
...
 'default_phone_region' => 'FR',
 'default_language' => 'fr',
...

Localisation par défaut

Source

# vi /var/www/nextcloud/config/config.php
...
 'default_language' => 'fr',
 'default_locale' => 'fr_FR',
...

Memcache via Redis & APCu

source

# apt install redis-server php-redis php-apcu
# vi /etc/redis/redis.conf

Il faut activer les deux ligne suivantes en supprimant le "#" devant + modification des droits :

...
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770
...

On désactive l'écoute TCP :

...
port 0
...
# usermod -a -G redis www-data

La commande suivante devra s'effectuer sur l'hôte (ProxMox) pour une installation dans un conteneur :

ProxMox:~# vi /etc/sysctl.conf
...
vm.overcommit_memory = 1
ProxMox:~# sysctl vm.overcommit_memory=1

# systemctl restart redis
# systemctl restart apache2

Enfin, on édite Nextcloud pour utiliser Redis :

# vi /var/www/nextcloud/config/config.php
...
  'default_phone_region' => 'FR',
  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.locking' => '\OC\Memcache\Redis',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'redis' =>
   array (
           'host' => '/var/run/redis/redis-server.sock',
           'port' => 0,
           'timeout' => 1.5,
         ),
);

Il faut activer APCu dans "cli" pour éviter un bug avec certaines commandes :

# vi /etc/php/8.1/cli/conf.d/20-apcu.ini
extension=apcu.so
apc.enable_cli=1

OpCache

Optimisation de PHP via OpCache.

# vi /etc/php/8.1/apache2/php.ini

Dans cet exemple on applique les paramètres de base recommandés par NextCloud autres paramètres  :

...
[opcache]
opcache.enable = 1
opcache.interned_strings_buffer = 64
opcache.max_accelerated_files = 50000
opcache.memory_consumption = 512
opcache.save_comments = 1
opcache.revalidate_freq = 1
...
# vi /etc/php/8.1/cli/php.ini
...
[opcache]
opcache.enable = 1
opcache.interned_strings_buffer = 64
opcache.max_accelerated_files = 50000
opcache.memory_consumption = 512
opcache.save_comments = 1
opcache.revalidate_freq = 1
...
# apache2ctl graceful

Test final

On retoune dans le menu "Vue d'ensemble", normalement tous les tests devraient être validés :

Satisfaisant non ? :)

Comme suggéré on se rend sur ce site pour tester le niveau de sécurité de notre serveur NextCloud, si tout va bien vous devriez obtenir ceci :

une note comme j'aurais aimé en avoir à l'école.

Crontab

Source

# vi /etc/systemd/system/nextcloudcron.service
[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

Puis

# vi /etc/systemd/system/nextcloudcron.timer
[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

On active les scripts :

# systemctl enable --now nextcloudcron.timer

On peut ensuite se rendre dans "Paramètres" -> "Paramètres de base" pour vérifier que le changement est prise en compte :

C'est par ici Activation confirmé

datadirectory

Variable nécessaire pour certaines applications comme RainLoop, ajouter si manquante :

# vi /var/www/nextcloud/config/config.php
...
 'overwritewebroot' => '/',
 'datadirectory' => '/var/www/nextcloud/data',
 'dbtype' => 'mysql',
...

Désactiver le découpage des 10Mb

Par default NextCloud découpe les téléchargement en portion de 10Mb, ce qui peut grandement ralentir les envoies de fichier imposant, pour le désactiver :

# sudo -u www-data php /var/www/nextcloud/occ config:app:set files max_chunk_size --value 0

Désactivé les "espaces de travails riches"

Source

Une fonction que je n'ai jamais utilisé, crée des fichier "readme.md" et des messages d'érreurs.. a voir.

# sudo -u www-data php /var/www/nextcloud/occ config:app:set text workspace_available --value=0

Mail Serveur

Il est important de configurer un serveur d'envoi courriel pour le serveur, il permettra d'utiliser la fonction récupération de mot de passe etc :

Menu de configuration du courriel du serveur

Mises à jour automatiques du serveur

Voir la procédure suivante

Ubuntu 22.04

Installation Serveur

Source autre source

# apt update && apt upgrade

Archive NextCloud

Page de téléchargement

# apt install unzip
# cd /tmp/
# wget https://download.nextcloud.com/server/releases/latest.zip
# unzip latest.zip -d /var/www/
# rm latest.zip
# chown -R www-data. /var/www/nextcloud

Serveur SQL MariarDB

Installation :

# apt install mariadb-server

On lance le script pour attribuer un mot de passe root, virer l'utilisateur anonyme etc.

# mysql_secure_installation
Set root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
... Success!

On créé la base de donnée pour NextCloud :

# mysql -u root -p
MariaDB [(none)]> create database nextcloud;
MariaDB [(none)]> create user nextcloud@localhost identified by 'motdepasse';
MariaDB [(none)]> grant all privileges on nextcloud.* to nextcloud@localhost IDENTIFIED BY 'motdepasse';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;

Installation de Apache2 & PHP8.1

# apt install imagemagick php-imagick php libapache2-mod-php php-common php-mysql php-gd php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-bcmath php-gmp

On créé l'alias du site :

# vi /etc/apache2/sites-available/nextcloud.conf
Alias /nextcloud "/var/www/nextcloud/"

<Directory /var/www/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off
  </IfModule>

</Directory>

On active le site :

# a2ensite nextcloud.conf

On active les modules requis :

# a2enmod rewrite headers env dir mime

On active SSL :

# a2enmod ssl
# a2ensite default-ssl
# systemctl reload apache2

(Recommandé) On supprime et désactive la page par défaut d'Apache

# rm /var/www/html/index.html
# a2dissite 000-default
# systemctl reload apache2

(Optionnel) Plus d'écoute sur le port 80

Si le serveur n'a aucun autres service sur le port 80 on peut supprimer son écoute :

# vi /etc/apache2/ports.conf
...
# /etc/apache2/sites-enabled/000-default.conf

#Listen 80
...
# systemctl reload apache2

Configuration de NextCloud

On se rend sur l'adresse https://IP_NEXCLOUD/nextcloud/ et on rempli les champs indiqués puis ont clique sur "Terminer l'installation".

Page d'installation NextCloud

Si message d'erreur pas de panique, on retourne sur https://IP_NEXCLOUD/nextcloud/ pour vérifier que tout s'est bien déroulé.

Page de première connexion.

Configuration Reverse-Proxy Nginx

VHost NextCloud

Source

Exemple de vhost pour NextCloud :

server {
listen 80;
    listen [::]:80;
    server_name     nextcloud.exemple.com;
   # return 404;
    return 301 https://$host$request_uri;
}

server {
server_name     nextcloud.exemple.com;
    error_page 403  https://nextcloud.exemple.com;

    location / {
            client_max_body_size 0; # 0 supprime la limite d'upload
            proxy_set_header Upgrade              $http_upgrade;
            proxy_set_header Connection           "upgrade";
            proxy_set_header Host                 $host;
            proxy_set_header X-Real-IP            $remote_addr;
            proxy_set_header X-Forwarded-For      $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto    $scheme;
            proxy_set_header X-Forwarded-Protocol $scheme;
            proxy_set_header X-Forwarded-Host     $http_host;
            proxy_pass https://IP_SERVEUR_NEXTCLOUD/nextcloud/;
            proxy_buffering off;
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot


    ssl_certificate /etc/letsencrypt/live/nextcloud.exemple.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/nextcloud.exemple.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    add_header Strict-Transport-Security "max-age=31536000" always;
    ssl_trusted_certificate /etc/letsencrypt/live/nextcloud.exemple.com/chain.pem;
    ssl_stapling on;
    ssl_stapling_verify on;

    location ^~ /.well-known {
        # The following 6 rules are borrowed from `.htaccess`

        location = /.well-known/carddav     { return 301 /remote.php/dav/; }
        location = /.well-known/caldav      { return 301 /remote.php/dav/; }
        # Anything else is dynamically handled by Nextcloud
        location ^~ /.well-known            { return 301 /index.php$uri; }

        try_files $uri $uri/ =404;
    }

}

Configuration de Nextcloud

On modifie le fichier de configuration de NextCloud pour qu'il accepte le nom de domaine et le reverse proxy :

NextCloud ~# vi /var/www/nextcloud/config/config.php
...
'trusted_domains' =>
 array (
         0 => '12.34.56.789',
         1 => 'nextcloud.exemple.com',
       ),
 'trusted_proxies' =>
 array (
         0 => 'IP_PROXY',
       ),
 'overwritewebroot' => '/',
...

Post-Installation

NextCloud est maintenant fonctionnel, mais si vous vous rendez, depuis la page de l'administrateur, sur Administrateur -> Paramètres -> Vue d'ensemble .

Accès du menu "Vue d'ensemble"

Il reste quelques réglages à effectués. (3 si vous avez suivie ce tutorial).

Message d'erreurs post installation

(optionnel) Jolie URL

# vi /var/www/nextcloud/config/config.php
...
  'installed' => true,
  'overwrite.cli.url' => 'https://nextcloud.exemple.com/nextcloud',
  'htaccess.RewriteBase' => '/nextcloud',
);
# sudo -u www-data php /var/www/nextcloud/occ maintenance:update:htaccess

Limite de mémoire PHP à 512 Mo

# vi /etc/php/8.1/apache2/php.ini
...
memory_limit = 512M
...
# apache2ctl graceful

Fuseau horaire PHP

# vi /etc/php/8.1/apache2/php.ini
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris
...
# vi /etc/php/8.1/cli/php.ini
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris
...
# apache2ctl graceful

Préfixe de région par défaut

# vi /var/www/nextcloud/config/config.php
...
  'htaccess.RewriteBase' => '/nextcloud',
  'default_phone_region' => 'FR',
);

Langue par défaut

Source

# vi /var/www/nextcloud/config/config.php
...
 'default_phone_region' => 'FR',
 'default_language' => 'fr',
...

Localisation par défaut

Source

# vi /var/www/nextcloud/config/config.php
...
 'default_language' => 'fr',
 'default_locale' => 'fr_FR',
...

Memcache via Redis & APCu

source

# apt install redis-server php-redis php-apcu
# vi /etc/redis/redis.conf

Il faut activer les deux ligne suivantes en supprimant le "#" devant + modification des droits :

...
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770
...

On désactive l'écoute TCP :

...
port 0
...
# usermod -a -G redis www-data

La commande suivante devra s'effectuer sur l'hôte (ProxMox) pour une installation dans un conteneur :

ProxMox:~# vi /etc/sysctl.conf
...
vm.overcommit_memory = 1
ProxMox:~# sysctl vm.overcommit_memory=1

# systemctl restart redis
# systemctl restart apache2

Enfin, on édite Nextcloud pour utiliser Redis :

# vi /var/www/nextcloud/config/config.php
...
  'default_phone_region' => 'FR',
  'memcache.local' => '\OC\Memcache\APCu',
  'memcache.locking' => '\OC\Memcache\Redis',
  'memcache.distributed' => '\OC\Memcache\Redis',
  'redis' =>
   array (
           'host' => '/var/run/redis/redis-server.sock',
           'port' => 0,
           'timeout' => 1.5,
         ),
);

Il faut activer APCu dans "cli" pour éviter un bug avec certaines commandes :

# vi /etc/php/8.1/cli/conf.d/20-apcu.ini
extension=apcu.so
apc.enable_cli=1

OpCache

Optimisation de PHP via OpCache.

# vi /etc/php/8.1/apache2/php.ini

Dans cet exemple on applique les paramètres de base recommandés par NextCloud autres paramètres :

...
[opcache]
opcache.enable = 1
opcache.interned_strings_buffer = 64
opcache.max_accelerated_files = 50000
opcache.memory_consumption = 512
opcache.save_comments = 1
opcache.revalidate_freq = 1
...
# vi /etc/php/8.1/cli/php.ini
...
[opcache]
opcache.enable = 1
opcache.interned_strings_buffer = 64
opcache.max_accelerated_files = 50000
opcache.memory_consumption = 512
opcache.save_comments = 1
opcache.revalidate_freq = 1
...
# apache2ctl graceful

Test final

On retoune dans le menu "Vue d'ensemble", normalement tous les tests devraient être validés :

Satisfaisant non ? :)

Comme suggéré on se rend sur ce site pour tester le niveau de sécurité de notre serveur NextCloud, si tout va bien vous devriez obtenir ceci :

une note comme j'aurais aimé en avoir à l'école.

Crontab

Source

# vi /etc/systemd/system/nextcloudcron.service
[Unit]
Description=Nextcloud cron.php job

[Service]
User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/cron.php
KillMode=process

Puis

# vi /etc/systemd/system/nextcloudcron.timer
[Unit]
Description=Run Nextcloud cron.php every 5 minutes

[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=nextcloudcron.service

[Install]
WantedBy=timers.target

On active les scripts :

# systemctl enable --now nextcloudcron.timer

On peut ensuite se rendre dans "Paramètres" -> "Paramètres de base" pour vérifier que le changement est prise en compte :

C'est par ici Activation confirmé

datadirectory

Variable nécessaire pour certaines applications comme RainLoop, ajouter si manquante :

# vi /var/www/nextcloud/config/config.php
...
 'overwritewebroot' => '/',
 'datadirectory' => '/var/www/nextcloud/data',
 'dbtype' => 'mysql',
...

Désactiver le découpage des 10Mb

Par default NextCloud découpe les téléchargement en portion de 10Mb, ce qui peut grandement ralentir les envoies de fichier imposant, pour le désactiver :

# sudo -u www-data php /var/www/nextcloud/occ config:app:set files max_chunk_size --value 0

Désactivé les "espaces de travails riches"

Source

Une fonction que je n'ai jamais utilisé, crée des fichier "readme.md" et des messages d'érreurs.. a voir.

# sudo -u www-data php /var/www/nextcloud/occ config:app:set text workspace_available --value=0

Mail Serveur

Il est important de configurer un serveur d'envoi courriel pour le serveur, il permettra d'utiliser la fonction récupération de mot de passe etc :

Menu de configuration du courriel du serveur

Mises à jour automatiques du serveur

Voir la procédure suivante

Astuces de personnalisation

Fichiers par défaut

Lorsque l'on créé un nouvel utilisateur, Nextcloud peuplera le nouveau dossier personnel avec le contenu de "/var/www/nextcloud/core/skeleton". Par défaut tous les utilisateurs se retrouveront donc avec diverse images et fichiers d'exemple sans intérêt.

Désativation du modèle de création

# vi /var/www/nextcloud/config/config.php
...
 'default_phone_region' => 'FR',
 'skeletondirectory' => '',
 'memcache.locking' => '\OC\Memcache\Redis',
...

Modèle de création personnalisé

Création du dossier pour le modèle :

# mkdir -p /usr/local/nextcloud/mon_model

Ensuite on peut créer/copier les dossiers/fichiers que l'on souhaite à l'intérieur...

Enfin, on active le nouveau dossier :

# vi /var/www/nextcloud/config/config.php
...
 'default_phone_region' => 'FR',
 'skeletondirectory' => '/usr/local/nextcloud/mon_model',
 'memcache.locking' => '\OC\Memcache\Redis',
...

Dossier des partages

Par défaut les partages entre utilisateur apparaissent à la racine, pour plus de clarté on peut les regrouper dans un même dossier :

# vi /var/www/nextcloud/config/config.php
...
  'skeletondirectory' => '',
  'share_folder' => '/Mes Partages',
...

Application

Les applications s'installent via la GUI de l'administrateur :

Par ici les apps!

Certaines demandent cependant des interventions supplémentaires.

Antivirus ClamAV

Installation

Source

Il faut simplement installer l'antivirus sur le serveur :

# apt-get install clamav clamav-daemon

Puis installer "Antivirus for files" depuis la GUI de l'administrateur. Voila!

Configuration

vade retro satanas!

Support de Stockages Externes

Il faut activer "External storage support" via la GUI de l'administrateur. Un nouveau menu "Stockages Externes" apparaitra dans la console d'administration de l'administrateur.

Menu Stockages Externes

Partages CIFS/Samba

source

Ubuntu 20.04

Par défaut les partages dit de types Windows ne sont pas disponible, il suffit d'installer les paquets suivants :

# apt install smbclient libsmbclient

Ubuntu 22.04

# apt install smbclient libsmbclient php8.1-smbclient

Collabora Online

Client

On installe l'application "Nextcloud Office" via la GUI de l'administrateur.

Serveur

mknod=1

Ubuntu 22.04

On active le dépôt de Collabora :

# apt install gnupg apt-transport-https ca-certificates
# wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg -P /usr/share/keyrings/
# echo 'deb [signed-by=/usr/share/keyrings/collaboraonline-release-keyring.gpg] https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204 ./' | sudo tee /etc/apt/sources.list.d/collabora.list

On installe le serveur de base :

# apt update && apt upgrade
# apt install coolwsd code-brand

On installe les modules de langue désirés (ici français, espagnol et anglais)

# apt install collaboraoffice*fr collaboraoffice*es collaboraoffice*en collaboraoffice*en-gb collaboraoffice*en-us

On désactive la prise en charge du certificat SSL en local et on l'accepte via le proxy :

# coolconfig set ssl.enable false
# coolconfig set ssl.termination true

On autorise notre serveur à se connecter :

# coolconfig set storage.wopi.host nextcloud.example.com

Pour autoriser plusieurs instances NextCloud :

# vi /etc/coolwsd/coolwsd.xml

Puis remplacer :

...
                        <alias_groups desc="default mode is 'first' it allows only the first host when groups are not defined. set mode to 'groups' and define group to allow multiple host and its aliases" mode="first">
...
...
                        </alias_groups>
                        <host>nextcloud.example.com</host>
                </wopi>
...

Par :

...
                        <alias_groups desc="default mode is 'first' it allows only the first host when groups are not defined. set mode to 'groups' and define group to allow multiple host and its aliases" mode="groups">
...
...
                                <group>
                                        <host desc="hostname to allow or deny." allow="true"https://nextcloud.example.com</host>
                                </group>
                                <group>
                                        <host desc="hostname to allow or deny." allow="true">https://autrenextcloud.example.com</host>
                                </group>
                        </alias_groups>
                </wopi>
...

Si les documents ne s'ouvrent pas à cause de cette erreur il faut corriger la sortie de la commande "coolconfig set storage.wopi.host nextcloud.example.com" en éditant le fichier de configuration :

# vi /etc/coolwsd/coolwsd.xml

Et remplacer la ligne :

<host>nextcloud.example.com</host>

Par :

<host allow="true" desc="Regex pattern of hostname to allow or deny.">nextcloud.example.com</host>


On redémarre le serveur Collabora pour activer les changements :

# systemctl restart coolwsd

Reverse-Proxy

Source

Exemple de VHost pour le reverse proxy :

server {
    listen       443 ssl;
    server_name  collabora.exemple.com;

    error_log /var/log/nginx/collabora.error;

    ssl_certificate /etc/letsencrypt/live/collabora.exemple.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/collabora.exemple.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    add_header Strict-Transport-Security "max-age=31536000" always; # managed by Certbot

    ssl_trusted_certificate /etc/letsencrypt/live/collabora.exemple.com/chain.pem; # managed by Certbot
    ssl_stapling on; # managed by Certbot
    ssl_stapling_verify on; # managed by Certbot

   # static files
   location ^~ /browser {
       proxy_pass http://12.34.56.789:9980;
       proxy_set_header Host $http_host;
   }

   # WOPI discovery URL
   location ^~ /hosting/discovery {
       proxy_pass http://12.34.56.789:9980;
       proxy_set_header Host $http_host;
   }

   # Capabilities
   location ^~ /hosting/capabilities {
       proxy_pass http://12.34.56.789:9980;
       proxy_set_header Host $http_host;
   }

   # main websocket
   location ~ ^/cool/(.*)/ws$ {
       proxy_pass http://12.34.56.789:9980;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header Host $http_host;
       proxy_read_timeout 36000s;
   }

   # download, presentation and image upload
   location ~ ^/(c|l)ool {
       proxy_pass http://12.34.56.789:9980;
       proxy_set_header Host $http_host;
   }

   # Admin Console websocket
   location ^~ /cool/adminws {
       proxy_pass http://12.34.56.789:9980;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "Upgrade";
       proxy_set_header Host $http_host;
       proxy_read_timeout 36000s;
   }

}

Liaison Client/Serveur

On se rend dans le menu "Collabora Online" du menu d'administration de l'admin :

Ça se passe par ici Menu de configuration pour l'accès au serveur Collabora.

Page d'administration de Collabora

Pour activer la page d'administration il faut d'abord attribuer un mot de passe administrateur :

# coolconfig set-admin-password
Enter admin username [admin]: admin
Enter admin password:
Confirm admin password: 
Saving configuration to : /etc/coolwsd/coolwsd.xml ...
Saved
# systemctl restart coolwsd

Puis se rendre à l'adresse https://collabora.exemple.com/browser/dist/admin/admin.html

(Obsolète) Webmail RainLoop intégré

Installation et configuration

On installe l'application "RainLopp" via la GUI de l'administrateur puis on se rend dans le menu "Paramètres" -> "Administration" -> "Paramètres supplémentaires" et on clique sur "Accédez à la page d'administration de RainLoop"


Menu Paramètres supplémentaires. Accès menu administration RainLoop.

Il faut se connecter avec l'utilisateur "admin" et le mot de passe par défaut "12345"


Ça fait peut n'est-ce pas ? Aucun problème réel cependant :)


Activation de la fonction "Contacts"

Création de la base de données

# mysql -u root -p
MariaDB [(none)]> create database rainloop;
MariaDB [(none)]> create user rainloop@localhost identified by 'motdepasse';
MariaDB [(none)]> grant all privileges on rainloop.* to rainloop@localhost IDENTIFIED BY 'motdepasse';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;

Activation (GUI)

Depuis le menu "Contacts" de la page d'administration de Rainloop :

Page de configuration des contacts

Ajouter un domaine

Par défaut seul les comptes mails du domaine "gmail.com" sont autorisés à être enregistrés par les utilisateurs, il faut passer par le menu "domaines" de page d'administration de Rainloop pour en ajouter :

Par ici pour autoriser de nouveaux domaine.

Quelques Exemples

Domaine laposte.net

Configuration du domaine "laposte.net"

Domaine yahoo.fr

Configuration du domaine "yahoo.fr"

Domaine Office365

Configuration d'un domain Office365

Connexion automatique de l'utilisateur

Il est possible de connecter automatiquement une boite mail afin que l'utilisateur n'ait pas à rentrer de nouveau ses identifiants courriel une fois déjà connecté à NextCloud. Il suffit de se rendre, depuis le compte utilisateur idoine, dans le menu "Paramètres" -> "Paramètres supplémentaires" -> "Webmail Rainloop"

Menu de connexion automatique RainLoop

Connexion compte Google protégé

Il n'y a pas de réel module de connexion OAuth 2 avec RainLoop, pas la peine de configurer l'intégration à Google il vous faudrait de toutes façons activer les connexions "moins sécurisées". Il est donc fortement conseillé de passer par les mots de passe d'application.

Webmail SnappyMail intégré

Application "Maps" (Cartes)

The "unique" column option is not supported

Au moment ou ce guide est rédigé, l'application "Maps" refuse de s'activer avec le message The "unique" column option is not supported. Il faut donc appliquer ce patch

(Il faut supprimer les lignes en rouge et ajouter les lignes en verte)

Les fichiers sont, dans l'ordre, les suivants :

/var/www/nextcloud/apps/maps/lib/Migration/Version000009Date20190625000800.php
/var/www/nextcloud/apps/maps/lib/Migration/Version000012Date20190722184716.php
/var/www/nextcloud/apps/maps/lib/Migration/Version000013Date20190723185417.php

Application "Face Recognition" (Reconnaissance Facial)

Dépendance

Source

Pour résourdre l'erreur "App "Face Recognition" cannot be installed because the following dependencies are not fulfilled: The library pdlib is not available."

# echo "deb https://repo.delellis.com.ar focal focal" > /etc/apt/sources.list.d/20-pdlib.list
# wget -qO - https://repo.delellis.com.ar/repo.gpg.key | sudo apt-key add -
# apt update
# apt install php7.4-pdlib

Si nécessaire on corrige un bug..

# rm /etc/php/7.4/apache2/conf.d/20-pdlib.ini
# ln -s /etc/php/7.4/mods-available/20-pdlib.ini /etc/php/7.4/apache2/conf.d/20-pdlib.ini
# apache2ctl restart

Configuration et installation du modèle de reconnaissance (Models)

Source models Source mémoire PHP Source commandes

Nous allons installer et activer le modèle de détection le plus précis, le modèle 4 (nécessite l'installation du modèle 1 & 3).

Il faut tout d'abord augmenter la limite de mémoire PHP (min. 1G/max. 4G) :


Ubuntu 20.04 :

# vi /etc/php/7.4/apache2/php.ini
...
memory_limit = 4096M
...

Ubuntu 22.04 :

# vi /etc/php/8.1/apache2/php.ini
...
memory_limit = 4096M
...

Puis on recharge Apache :

# apachectl graceful

Puis on installe les modèles (le dernier installé sera activé) :

# sudo -u www-data php /var/www/nextcloud/occ face:setup --model 1
# sudo -u www-data php /var/www/nextcloud/occ face:setup --model 3
# sudo -u www-data php /var/www/nextcloud/occ face:setup --model 4

Il faut configurer la taille mémoire maximale pour la reconnaissance faciale (exemple avec 4GB) :

# sudo -u www-data php /var/www/nextcloud/occ face:setup --memory 4GB

Configuration et vérification de l'application

On se rend avec le compte "admin" dans le menu "Paramètres" -> "Administration" -> "Reconnaissance faciale" pour vérifier que la pastille est verte et modifier la configuration si nécessaire..

Prêt à pister vos connaissances!

Parfois, après installation, un messages d'erreur s'affiche au lieu de valeurs (ici entourés de rouge), il suffit de les modifier et enregistrer avec le bouton entouré en vert :

Paramètres de la détection des visages..

On peut ensuite tester l'application via la ligne de commande avec un utilisateur et des images disponibles sur son espace de stockage :

# sudo -u www-data php /var/www/nextcloud/occ face:background_job -u nom_utilisateur -t 900

La commande pour réinitialiser la recherche si l'on désire tester ses paramètres de reconnaissance faciale :

# sudo -u www-data /var/www/nextcloud/occ face:reset --all

Pour des options de configuration plus avancées voir les commandes CLI suivantes.

Service SystemD

Source

# vi /etc/systemd/system/facerecognition.service
[Unit]
Description=Nextcloud FaceRecognition Job

StartLimitIntervalSec=10s
StartLimitBurst=5
[Service]
Restart=on-failure
RestartSec=5s

User=www-data
ExecStart=/usr/bin/php -f /var/www/nextcloud/occ face:background_job -t 900
# vi /etc/systemd/system/facerecognition.timer
[Unit]
Description=Run Nextcloud FaceRecognition every 30 minutes

[Timer]
OnBootSec=30min
OnUnitActiveSec=30min
Unit=facerecognition.service

[Install]
WantedBy=timers.target

On active le service :

# systemctl enable --now facerecognition.timer

Reconnaissance faciale avec calculs sur GPU

Vérifier les fonctionnalitées activées de pdlib

Pour vérifier si pdlib utilise CUDA :

# php --ri pdlib

Exemple de résultat :

pdlib

pdlib support => enabled
pdlib extension version => 1.0.2
dlib library version => 19.19.0
DLIB_USE_CUDA => false
DLIB_USE_BLAS => true
DLIB_USE_LAPACK => true
USE_AVX_INSTRUCTIONS => false
USE_AVX2_INSTRUCTIONS => false
USE_NEON_INSTRUCTIONS => false
USE_SSE2_INSTRUCTIONS => true
USE_SSE4_INSTRUCTIONS => false

Suppression de la version standard de pdlib

Si pdlib fut installé via cette méthode, on supprime la version installé :

# apt remove --purge php7.4-pdlib && apt autoremove

Puis on supprime les sources :

# rm /etc/apt/sources.list.d/20-pdlib.list*

GPU NVidia via CUDA

Ubuntu 20.04

Source pdlib source dlib


On installe les dépendances :

# apt install git cmake g++ software-properties-common libopenblas-dev liblapack-dev libx11-dev php7.4-dev pkg-config
# wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
# mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
# apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
# add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
# apt update

On vérifie les versions disponibles en fonction de son pilote NVidia :

# apt list libcudnn8 -a
# apt search cuda-toolkit

On installe la version souhaitée :

# apt install libcudnn8=8.2.4.15-1+cuda11.4 libcudnn8-dev=8.2.4.15-1+cuda11.4 cuda-toolkit-11-4

On compile et install dlib :

# mkdir -p /opt/SP/packages/
# cd $_
# git clone https://github.com/davisking/dlib.git
# cd dlib
# git submodule init
# git submodule update
# mkdir build
# cd $_
# cmake .. -DBUILD_SHARED_LIBS=ON -D DLIB_USE_CUDA=1 -D USE_AVX_INSTRUCTIONS=1
# make
# make install

On compile et installe pdlib :

# cd /opt/SP/packages/
# git clone https://github.com/goodspb/pdlib.git
# cd pdlib
# phpize
# ./configure --enable-debug
# make
# make install

On inscrit le module dans apache :

# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/7.4/fpm/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/7.4/cli/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/7.4/apache2/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/7.4/mods-available/pdlib.ini
# service apache2 restart && service php7.4-fpm restart

On test :

# php --ri pdlib

Exemple :

pdlib

pdlib support => enabled
pdlib extension version => 1.0.2
dlib library version => 19.22.99
DLIB_USE_CUDA => true
DLIB_USE_BLAS => true
DLIB_USE_LAPACK => true
USE_AVX_INSTRUCTIONS => false
USE_AVX2_INSTRUCTIONS => false
USE_NEON_INSTRUCTIONS => false
USE_SSE2_INSTRUCTIONS => true
USE_SSE4_INSTRUCTIONS => false
Ubuntu 22.04

On installe les dépendances :

# apt install git cmake software-properties-common libopenblas-dev liblapack-dev libx11-dev php8.1-dev pkg-config g++-10 gcc-10

On installe cudnn :

# apt install nvidia-cudnn

On compile et install dlib :

# mkdir -p /opt/SP/packages/
# cd $_
# git clone https://github.com/davisking/dlib.git
# cd dlib
# git submodule init
# git submodule update
# mkdir build
# cd $_
# CC=gcc-10 CXX=g++-10 cmake -DBUILD_SHARED_LIBS=ON -D DLIB_USE_CUDA=1 -D USE_AVX_INSTRUCTIONS=1 ../
# make
# make install

On compile et installe pdlib :

# cd /opt/SP/packages/
# git clone https://github.com/goodspb/pdlib.git
# cd pdlib
# phpize
# ./configure --enable-debug
# make
# make install

On inscrit le module dans apache :

# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/8.1/fpm/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/8.1/cli/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/8.1/apache2/conf.d/20-pdlib.ini
# echo -e "[pdlib]\nextension="pdlib.so"" > /etc/php/8.1/mods-available/pdlib.ini
# service apache2 restart && service php8.1-fpm restart

On test :

# php --ri pdlib

Exemple :

pdlib

pdlib support => enabled
pdlib extension version => 1.0.2
dlib library version => 19.24.99
DLIB_USE_CUDA => true
DLIB_USE_BLAS => true
DLIB_USE_LAPACK => true
USE_AVX_INSTRUCTIONS => false
USE_AVX2_INSTRUCTIONS => false
USE_NEON_INSTRUCTIONS => false
USE_SSE2_INSTRUCTIONS => true
USE_SSE4_INSTRUCTIONS => false

Application "Intégration Google"

Après avoir installer l'application via le menu de l'administrateur et créé un Projet Cloud Google, il faudra inscrire votre site Nextcloud sur le projet puis importer les identifiants via l'utilisateur "admin" dans "Paramètres" -> "Administration" -> "Comptes connextés"

Côté Google

Choix du type d'authentification

Choix du type d'application

On inscrit son site NextCloud

On récupère les identifiants

Côté NextCloud

ça se passe par ici.Page de configuration

Import Google

Depuis l'utilisateur idoine on se rend dans le menu "Paramètres" -> "Migration de données" et on clique simplement sur "Se connecter à Google"

Menu d'importation Google

(optionnel) NextCloud avec PHP-FPM

Ubuntu 20.04

Discussion Source

Pour de meilleurs performances on active php-fpm :

# apt update && apt upgrade
# apt install php7.4-fpm libapache2-mod-fcgid
# a2enconf php7.4-fpm
# a2enmod actions alias proxy_fcgi setenvif proxy
# systemctl reload apache2

On édite Apache pour activer PHP-FPM pour NextCloud :

# vi /etc/apache2/sites-enabled/nextcloud.conf
...
</Directory>

<FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
# apache2ctl restart

Il faut maintenant configurer PHP-FPM :

# vi /etc/php/7.4/fpm/php.ini
...
memory_limit = 512M
...
  • On configure le fuseau horaire :
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris
...
...
[opcache]
opcache.enable = 1
opcache.interned_strings_buffer = 64
opcache.max_accelerated_files = 50000
opcache.memory_consumption = 512
opcache.save_comments = 1
opcache.revalidate_freq = 1
...
  • On peut optimiser PHP-FPM à l'aide de ce site
# vi /etc/php/7.4/fpm/pool.d/www.conf
...
; Note: This value is mandatory.
pm.max_children = 5
...
; Default Value: (min_spare_servers + max_spare_servers) / 2
pm.start_servers = 2
...
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1
...
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3
...

On active les variables d'environnements PHP en décommentant les lignes suivante :

...
; Default Value: clean env
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
...
# service php7.4-fpm restart

Ubuntu 22.04

Pour de meilleurs performances on active php-fpm :

# apt update && apt upgrade
# apt install php8.1-fpm libapache2-mod-fcgid
# a2enconf php8.1-fpm
# a2enmod actions alias proxy_fcgi setenvif proxy
# systemctl reload apache2

On édite Apache pour activer PHP-FPM pour NextCloud :

# vi /etc/apache2/sites-enabled/nextcloud.conf
...
</Directory>

<FilesMatch \.php$>
        SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost"
</FilesMatch>
# apache2ctl restart

Il faut maintenant configurer PHP-FPM :

# vi /etc/php/8.1/fpm/php.ini
...
memory_limit = 512M
...
  • On configure le fuseau horaire :
...
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Paris
...
...
[opcache]
opcache.enable = 1
opcache.interned_strings_buffer = 64
opcache.max_accelerated_files = 50000
opcache.memory_consumption = 512
opcache.save_comments = 1
opcache.revalidate_freq = 1
...
  • On peut optimiser PHP-FPM à l'aide de ce site
# vi /etc/php/8.1/fpm/pool.d/www.conf
...
; Note: This value is mandatory.
pm.max_children = 5
...
; Default Value: (min_spare_servers + max_spare_servers) / 2
pm.start_servers = 2
...
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 1
...
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 3
...

On active les variables d'environnements PHP en décommentant les lignes suivante :

...
; Default Value: clean env
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
...
# service php8.1-fpm restart

Astuces / Commandes CLI

Source officielle

Activer/Désactiver le mode maintenance

Activer :

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

Désactiver :

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

Vérifier/Réparer l'installation de Nextcloud

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

Ajouter les indices manquants à la base de données

# sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices

Mise à jour de NextCloud via la CLI

Utile lorsque la mise à jour via la page web est bloquée..

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

Face Recognition (Reconnaissance faciale)

Source

Lancer analyse manuellement

Avec un utilisateur et des images disponibles sur son espace de stockage :

# sudo -u www-data php /var/www/nextcloud/occ face:background_job -u nom_utilisateur -t 900

Pour lancer l'analyse pour tous les utilisateurs :

# sudo -u www-data php /var/www/nextcloud/occ face:background_job -t 900

Réinitialisation des résultats d'analyses

Pour la remise à zéro complète :

# sudo -u www-data php /var/www/nextcloud/occ face:reset --all

Pour réinitialiser l'analyse d'un utilisateur :

# sudo -u www-data php /var/www/nextcloud/occ face:reset --all -u nom_utilisateur

Prise en charge des images sur les dossiers partagés

Pour activer la reconnaissance faciale sur les dossiers partagés. (Désactivé par défaut pour des questions de performance)

# sudo -u www-data php /var/www/nextcloud/occ config:app:set facerecognition handle_shared_files --value true

Prise en charge des images sur les dossiers réseaux

Pour activer la reconnaissance faciale des images sur les partages montés dans NextCloud. (Désactivé par default pour préserver la bande passante, le programme nécessitant de faire une copie locale pour analyser chaque images)

# sudo -u www-data php /var/www/nextcloud/occ config:app:set facerecognition handle_external_files --value true

Attention, si des images sont déposées sur un dossier partagé après la fin d'une analyse complète et sans passer par l'interface de Nextcloud, elles ne seront jamais scannées, pour qu'elles soient prise en compte il faut réinitialiser le statut d'achèvement de l'analyse :

# sudo -u www-data php /var/www/nextcloud/occ user:setting Nom_Utilisateur facerecognition full_image_scan_done false

Pour réinitialiser le statut d'achèvement automatiquement (ici toutes les 3 heures) :

# crontab -e
...
0 */3 * * * /usr/bin/sudo -u www-data php /var/www/nextcloud/occ user:setting Nom_Utilisateur facerecognition full_image_scan_done false

Relancer l'analyse pour un utilisateur considéré comme terminé

Utile pour prendre en compte certains changement d'option..

# sudo -u www-data php /var/www/nextcloud/occ user:setting nom_utilisateur facerecognition full_image_scan_done false