Post

💭Nextcloud HUB

💭Nextcloud HUB

Pré‑requis

  • Serveur Debian 13 (headless) avec accĂšs root ou utilisateur sudo.
  • Nginx dĂ©jĂ  installĂ© et en fonctionnement.
  • Certificats Let-s Encrypt disponibles
  • Nom de domaine https://cloud.rnmkcy.eu
  • Ports 80/443 ouverts (UFW installĂ©)

Mise Ă  jour des paquets

1
sudo apt update && sudo apt upgrade -y

Mariadb

Installer et sécuriser MariaDB

Commandes pour installer MariaDB, sĂ©curiser l’installation et crĂ©er la base + utilisateur Nextcloud (exĂ©cutez en root ou avec sudo). Installer MariaDB

1
2
3
sudo apt update
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

Version du script qui conserve auth_socket (pas de changement d’authentification root) et applique uniquement les suppressions/FLUSH recommandĂ©es. ExĂ©cutez en root ou avec sudo :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo mysql <<'SQL'
-- Supprimer utilisateurs anonymes
DELETE FROM mysql.user WHERE User='';

-- Interdire root distant (conserver root@localhost / 127.0.0.1 / ::1)
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');

-- Supprimer la base de test
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db LIKE 'test\\_%';

-- Retirer validate_password plugin s'il existe (évite blocages au create user)
DELETE FROM mysql.plugin WHERE name = 'validate_password';

-- Recharger les privilĂšges
FLUSH PRIVILEGES;
SQL

Vérifier connexion locale (auth_socket) :

1
sudo mysql -e "SELECT USER(), VERSION();"
1
2
3
4
5
+----------------+--------------------------------------+
| USER()         | VERSION()                            |
+----------------+--------------------------------------+
| root@localhost | 11.8.6-MariaDB-0+deb13u1 from Debian |
+----------------+--------------------------------------+

Créer base et utilisateur Nextcloud (ncuser)

Remplacez NEXTCLOUD_DB_PASS par un mot de passe fort généré, ou générez-en un avec la commande suivante si vous voulez automatiser :

1
2
export NEXTCLOUD_DB_PASS=$(openssl rand -base64 24)
echo $NEXTCLOUD_DB_PASS

Puis exécutez :

1
2
3
4
5
6
7
sudo mysql <<SQL
DROP USER IF EXISTS 'ncuser'@'localhost';
CREATE USER 'ncuser'@'localhost' IDENTIFIED BY '${NEXTCLOUD_DB_PASS}';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'ncuser'@'localhost';
FLUSH PRIVILEGES;
SQL

Vérifier connexion (optionnel)

1
mysql -u ncuser -p${NEXTCLOUD_DB_PASS} -e "SHOW DATABASES;"
1
2
3
4
5
6
+--------------------+
| Database           |
+--------------------+
| information_schema |
| nextcloud          |
+--------------------+

Sauvegarde mot de passe en sécurité (option recommandé)

  • Ne conservez pas le mot de passe en clair dans des scripts non sĂ©curisĂ©s.
  • Exemple de stockage sĂ©curisĂ© local (fichier lisible seulement par root) :
1
2
echo "NEXTCLOUD_DB_PASS='${NEXTCLOUD_DB_PASS}'" | sudo tee /root/nextcloud_db_creds
sudo chmod 600 /root/nextcloud_db_creds

PHP8.4

Commandes d’installation pour PHP 8.4 + extensions requises et un fichier de pool PHP-FPM optimisĂ© pour Nextcloud. ExĂ©cutez en root ou avec sudo.

Installer PHP 8.4 et extensions (Debian 13)

1
2
3
4
5
6
7
8
9
10
11
sudo apt update && sudo apt upgrade -y
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2 curl

# Si PHP 8.4 n'est pas dans les dépÎts par défaut, ajouter sury (maintenu pour PHP) :
#sudo curl -fsSL https://packages.sury.org/php/README.txt | sudo bash -x

# Installer PHP 8.4 et extensions recommandées
sudo apt update
sudo apt install -y php8.4-fpm php8.4-cli php8.4-mysql php8.4-xml php8.4-gd php8.4-curl php8.4-zip php8.4-mbstring php8.4-intl php8.4-bcmath php8.4-gmp php8.4-imagick php8.4-apcu php8.4-opcache php8.4-redis

sudo apt install php8.4-{fpm, cli, mysql, xml, gd, curl, zip, mbstring, intl, bcmath, gmp, imagick, apcu, opcache, redis, openssl, sodium, sysvsem, ffmpeg, exif, json}

Configuration PHP recommandée (rapide)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ajustez timezone et limites
sudo sed -i "s/^;date.timezone =.*/date.timezone = Europe\\/Paris/" /etc/php/8.4/fpm/php.ini
sudo sed -i "s/^memory_limit = .*/memory_limit = 512M/" /etc/php/8.4/fpm/php.ini
sudo sed -i "s/^upload_max_filesize = .*/upload_max_filesize = 512M/" /etc/php/8.4/fpm/php.ini
sudo sed -i "s/^post_max_size = .*/post_max_size = 512M/" /etc/php/8.4/fpm/php.ini

# OPcache / APCu réglages (créer fichier conf si nécessaire)
cat <<'EOF' | sudo tee /etc/php/8.4/mods-available/opcache-recommended.ini
opcache.enabled=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=100000
opcache.validate_timestamps=1
opcache.revalidate_freq=2
opcache.save_comments=1
EOF

sudo phpenmod opcache
sudo systemctl restart php8.4-fpm

Pool PHP-FPM optimisé pour Nextcloud

Créer /etc/php/8.4/fpm/pool.d/nextcloud.conf avec ce contenu :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[nextcloud]
user = www-data
group = www-data
listen = /run/php/php8.4-fpm-nextcloud.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

pm = dynamic
pm.max_children = 70
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

php_admin_value[memory_limit] = 512M
php_admin_value[upload_max_filesize] = 512M
php_admin_value[post_max_size] = 512M
php_admin_value[max_execution_time] = 360
php_admin_value[date.timezone] = Europe/Paris

Puis activer ce pool et redémarrer PHP-FPM :

1
2
3
sudo systemctl restart php8.4-fpm
# vérifier socket
sudo ss -xl | grep php8.4-fpm-nextcloud.sock
1
u_str LISTEN 0      4096           /run/php/php8.4-fpm-nextcloud.sock 167181            * 0   

Voici ce qu’il faut ajouter/modifier pour l’optimiser davantage avec PHP 8.4 : ✅ Ce qui est dĂ©jĂ  correct

|ParamĂštre|Votre valeur|Recommandation|Statut| |—|—|—|—| |date.timezone|Europe/Paris|✅|Parfait [it-connect]| |memory_limit|512M|≄512M|✅ Minimal correct| |upload_max_filesize|512M|Adaptable|✅ Bon| |opcache.memory_consumption|256|128-256|✅ Excellent| |opcache.max_accelerated_files|100000|10000-100000|✅ Excellent| |pm.max_children|70|~4×cƓurs|✅ Bon pour 2-4 cƓurs| ⚠ Ce qu’il manque pour PHP 8.4 1 - Activer le JIT d’OPcache (nouveau PHP 8.4) Ajoutez dans /etc/php/8.4/mods-available/opcache-recommended.ini :
opcache.jit=tracing # ou 1255 opcache.jit_buffer_size=128M
Le JIT est désactivé par défaut en PHP 8.4 mais apporte un gain significatif pour les apps CPU-intensives comme Nextcloud.[github]

2 - Ajouter APCu pour le cache local
Créez /etc/php/8.4/mods-available/apcu.ini :
apc.enabled=1 apc.shm_size=128M apc.ttl=3600 apc.user_ttl=3600 apc.num_files_hint=1024 Puis activez : sudo phpenmod apcu

3 - Ajouter les paramĂštres OPCache CLI (pour cron) Dans /etc/php/8.4/cli/php.ini ou crĂ©ez /etc/php/8.4/mods-available/opcache-cli.ini : opcache.enable_cli=1 apc.enable_cli=1 C’est critique pour que le cron Nextcloud fonctionne correctement.[docs.nextcloud]

🔧 Actions Ă  exĂ©cuter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 1. Ajouter JIT au fichier opcache-recommended.ini
sudo tee -a /etc/php/8.4/mods-available/opcache-recommended.ini <<'EOF'
opcache.jit=tracing
opcache.jit_buffer_size=128M
EOF

# 2. Créer config APCu
sudo tee /etc/php/8.4/mods-available/apcu.ini <<'EOF'
apc.enabled=1
apc.shm_size=128M
apc.ttl=3600
apc.user_ttl=3600
EOF

# 3. Activer modules
sudo phpenmod opcache apcu

# 4. Ajouter opcache.enable_cli pour le cron
echo "opcache.enable_cli=1" | sudo tee -a /etc/php/8.4/cli/php.ini
echo "apc.enable_cli=1" | sudo tee -a /etc/php/8.4/cli/php.ini

# 5. Redémarrer
sudo systemctl restart php8.4-fpm

📋 VĂ©rifications finales

1
2
3
4
5
6
7
8
# Vérifier configuration active
php -i | grep -E "memory_limit|upload_max_filesize|opcache.jit|apc.enabled"

# Vérifier statut Nextcloud
sudo -u www-data php /var/www/nextcloud/occ status

# Vérifier avis dans logs
sudo tail -50 /srv/nextcloud-data/nextcloud.log

Votre pool PHP-FPM est déjà bien configuré avec pm = dynamic et des valeurs raisonnables. La seule chose critique à ajouter : opcache.enable_cli=1 et apc.enable_cli=1 pour le cron.[docs.nextcloud] Ajuster configuration Nginx pour utiliser le socket du pool (si vous utilisez le fichier fourni précédemment, modifiez fastcgi_pass)

🚀 Optimisations PHP-FPM pour 4 cƓurs / 32 Go RAM

Avec 4 cƓurs et 32 Go de RAM, vous pouvez optimiser davantage votre configuration PHP-FPM pour tirer pleinement parti de votre matĂ©riel.

Modifier PHP-FPM pool

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo tee /etc/php/8.4/fpm/pool.d/nextcloud.conf > /dev/null <<'EOF'
[nextcloud]
user = www-data
group = www-data
listen = /run/php/php8.4-fpm-nextcloud.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

pm = dynamic
pm.max_children = 150
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 40
pm.max_requests = 500

php_admin_value[memory_limit] = 768M
php_admin_value[upload_max_filesize] = 512M
php_admin_value[post_max_size] = 512M
php_admin_value[max_execution_time] = 360
php_admin_value[date.timezone] = Europe/Paris
EOF

Calcul pm.max_children :

  • RAM disponible pour PHP : ~28 Go (32 Go - 4 Go systĂšme)
  • Nextcloud utilise ~128-200 MB par processus
  • 28 Go / 200 MB = 140 → 150 est parfait[forum.yunohost]

Modifier OPcache

1
sudo nano /etc/php/8.4/mods-available/opcache-recommended.ini

Avec 32 Go RAM, augmentez aussi OPcache :

1
2
3
4
5
6
7
8
9
10
11
opcache.enabled=1
opcache.enable_cli=1
opcache.memory_consumption=512          # AUGMENTER de 256 → 512
opcache.interned_strings_buffer=32      # AUGMENTER de 16 → 32
opcache.max_accelerated_files=100000
opcache.validate_timestamps=1
opcache.revalidate_freq=2
opcache.save_comments=1
opcache.jit=tracing                     # AJOUTER pour PHP 8.4
opcache.jit_buffer_size=256M            # AUGMENTER de 128M → 256M
apc.enable_cli=1                        # AJOUTER pour cron

🔧 Appliquer les changements

1
2
3
4
5
6
# Redémarrer PHP-FPM
sudo systemctl restart php8.4-fpm

# Vérifier
sudo systemctl status php8.4-fpm
sudo -u www-data php /var/www/nextcloud/occ status

📊 Comparaison avant/aprùs

|Paramùtre|Avant|Aprùs (32 Go RAM)|Impact| |—|—|—|—|

|ParamĂštre|Avant|AprĂšs (32 Go RAM)|Impact| |—|—|—|—| |pm.max_children|70|150|×2 concurrents| |pm.start_servers|10|20|DĂ©marrage plus rapide| |memory_limit|512M|768M|Plus de marge pour gros fichiers| |opcache.memory_consumption|256|512|Cache scripts plus grand| |opcache.jit_buffer_size|128M|256M|JIT plus performant|

🎯 Pour un usage avec plusieurs utilisateurs

Si vous avez 50+ utilisateurs simultanés, augmentez encore :

1
2
3
4
pm.max_children = 200
pm.start_servers = 30
pm.min_spare_servers = 15
pm.max_spare_servers = 50

Avec 32 Go RAM, vous pouvez supporter 100+ utilisateurs simultanés sans problÚme.

Votre serveur est maintenant optimisĂ© pour la puissance de votre matĂ©riel ! 🚀

Nextcloud

Nginx - cloud.rnmkcy.eu

Nginx - configuration /etc/nginx/conf.d/cloud.rnmkcy.eu.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
server {
    listen 80;
    server_name cloud.rnmkcy.eu;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;
    server_name cloud.rnmkcy.eu;

    root /var/www/nextcloud/;
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;
    fastcgi_buffer_size 128k;          # ← AJOUTER
    fastcgi_busy_buffers_size 128k;  # ← AJOUTER
    access_log /var/log/nginx/nextcloud.access.log;
    error_log /var/log/nginx/nextcloud.error.log;

    ssl_certificate /etc/ssl/private/rnmkcy.eu-fullchain.pem;
    ssl_certificate_key /etc/ssl/private/rnmkcy.eu-key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
#    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets off;           # ← AJOUTER (security)
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
    add_header X-Content-Type-Options "nosniff" always;      # ← AJOUTER
    add_header X-Frame-Options "SAMEORIGIN" always;          # ← AJOUTER
    add_header X-XSS-Protection "1; mode=block" always;      # ← AJOUTER

    index index.php index.html /index.php$request_uri;

    # Security & well-known redirects
    location = /robots.txt { allow all; log_not_found off; access_log off; }
    location = /.well-known/carddav { return 301 /remote.php/dav; }
    location = /.well-known/caldav  { return 301 /remote.php/dav; }
    location = /.well-known/webfinger { return 301 /index.php/.well-known/webfinger; }  # ← AJOUTER
    location = /.well-known/nodeinfo  { return 301 /index.php/.well-known/nodeinfo; }   # ← AJOUTER

    # Deny access to sensitive folders
    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ { deny all; }

    # Main
    location / { rewrite ^ /index.php$uri; }

    # Static files
    location ~* \.(?:css|js|woff2?|svg|gif|png|jpg|jpeg|ico)$ {
        try_files $uri /index.php$uri$is_args$args;
        access_log off;
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }

    # PHP handling
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_pass unix:/run/php/php8.4-fpm-nextcloud.sock;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
        try_files $uri =404;
    }

    # Prevent access to .ht* files
    location ~ /\.ht { deny all; }
    
    # Deny access to specific files
    location ~ ^/(?:\.ht.*|README\.md|CHANGELOG.*|AUTHORS.*|LICENSE.*) { deny all; }  # ← AJOUTER
}

tester et recharger nginx :

1
2
sudo nginx -t
sudo systemctl reload nginx

Créer dossier web et attribuer les droits

1
2
3
4
5
6
7
sudo mkdir -p /var/www/nextcloud
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 750 /var/www/nextcloud
# permissions data dir
sudo mkdir -p /srv/nextcloud-data
sudo chown -R www-data:www-data /srv/nextcloud-data
sudo chmod 750 -R /srv/nextcloud-data

Télécharger et déployer Nextcloud
Lien des versions Nextcloud server https://download.nextcloud.com/server/releases/
Aller sur /tmp et télécharger la derniÚre version (latest.zip)

1
2
3
4
5
6
cd /tmp
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
tar -xvf latest.tar.bz2
sudo rsync -a nextcloud/ /var/www/nextcloud/
sudo chown -R www-data:www-data /var/www/nextcloud
cd ~

Cron Nextcloud (pour exécuter en tant que www-data) :

1
sudo -u www-data crontab -e

Ajouter

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

Installation via web

  • Ouvrez https://cloud.rnmkcy.eu
  • Sur la page d’installation Nextcloud :
    • Chemin des donnĂ©es : /srv/nextcloud-data
    • Base: MariaDB (host=localhost), user (ncuser) et mot de passe (/root/nextcloud_db_creds), database=nextcloud
    • Utilisateur admin et mot de passe admin

Remarque de sĂ©curitĂ© : les certificats sont rĂ©fĂ©rencĂ©s directement ; assurez-vous que les permissions de /etc/ssl/private/* empĂȘchent l’accĂšs non autorisĂ© (600, propriĂ©taire root).

Ouvrir le lien https://cloud.rnmkcy.eu

Créer un compte administrateur et son mot de passe

Renseigner les éléments de la base mysql

Correction des warnings

Voici comment résoudre les 4 warnings de Nextcloud

  1. ✅ FenĂȘtre de maintenance Ă  configurer
  2. ✅ OPcache interned_strings_buffer trop faible
  3. ✅ Migrations MIME Ă  exĂ©cuter
  4. ✅ Variable getenv() PHP (optionnel) . Ce warning est inoffensif pour Nextcloud. Si vous voulez le supprimer, ajoutez dans /etc/php/8.4/fpm/pool.d/nextcloud.conf :
    1
    
    php_admin_value[argv_arguments] = 1
    

    Ou ignorez-le — cela n’affecte pas le fonctionnement.

📋 RĂ©sumĂ© des actions pour corriger les 4 warnings

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 1. Configurer fenĂȘtre de maintenance
sudo -u www-data php /var/www/nextcloud/occ config:system:set maintenance_window_start --value=4 --type=integer

# 2. Modifier OPcache (sinon manuellement)
sudo tee /etc/php/8.4/mods-available/opcache-recommended.ini > /dev/null <<'EOF'
opcache.enabled=1
opcache.enable_cli=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=100000
opcache.validate_timestamps=1
opcache.revalidate_freq=2
opcache.save_comments=1
opcache.jit=tracing
opcache.jit_buffer_size=256M
EOF

# 3. Redémarrer PHP-FPM
sudo systemctl restart php8.4-fpm

# 4. Exécuter migrations MIME (15-30 min selon taille)
sudo -u www-data php /var/www/nextcloud/occ maintenance:repair --include-expensive

# 5. Vérifier dans l'interface Nextcloud
# Allez dans Administration → Paramùtres → Overview

Aprùs ces corrections, tous les warnings disparaütront de l’interface d’administration Nextcloud.[reddit]

  1. ✅ OPcache interned_strings_buffer (valeur insuffisante). Le warning dit que la valeur doit ĂȘtre > 8, mais vous avez modifiĂ© le fichier .ini. Le problĂšme : PHP-FPM lit la config depuis le pool, pas depuis le fichier .ini
  2. ✅ Verrouillage transactionnel + Memcache (RESOLU ensemble). Pour Ă©liminer les deux warnings (verrouillage + aucun cache), installez Redis et configurez-le dans Nextcloud
  3. ✅ Modules PHP (PCRE.d’APCu). Le warning dit “apcu module php8.4-apcu est installĂ©â€ mais il n’est pas activĂ©.
  4. ✅ PHP ne semble pas ĂȘtre configurĂ© de maniĂšre Ă  rĂ©cupĂ©rer les valeurs des variables d’environnement. Le test de la commande getenv(“PATH”) retourne seulement une rĂ©ponse vide. Solution : Ajouter les variables d’environnement dans le pool PHP-FPM

📋 RĂ©sumĂ© complet des actions

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/bin/bash
set -e

echo "=== 1. Modifier pool PHP-FPM ==="
sudo tee /etc/php/8.4/fpm/pool.d/nextcloud.conf > /dev/null <<'EOF'
[nextcloud]
user = www-data
group = www-data
listen = /run/php/php8.4-fpm-nextcloud.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

pm = dynamic
pm.max_children = 150
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 40
pm.max_requests = 500

env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

php_admin_value[memory_limit] = 768M
php_admin_value[upload_max_filesize] = 512M
php_admin_value[post_max_size] = 512M
php_admin_value[max_execution_time] = 360
php_admin_value[date.timezone] = Europe/Paris
php_admin_value[opcache.save_comments] = 1
php_admin_value[opcache.revalidate_freq] = 2
php_admin_value[opcache.validate_timestamps] = 1
php_admin_value[opcache.interned_strings_buffer] = 64
php_admin_value[opcache.memory_consumption] = 512
php_admin_value[opcache.max_accelerated_files] = 100000
EOF
echo "=== 2. Installer Redis ==="
sudo apt update
sudo apt install redis-server php-redis -y
sudo systemctl enable redis-server
sudo systemctl start redis-server

echo "=== 3. Activer APCu ==="
sudo phpenmod -v 8.4 apcu

echo "=== 4. Configurer memcache dans Nextcloud ==="
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.local --value="\OC\Memcache\Redis"
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.distributed --value="\OC\Memcache\Redis"
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.locking --value="\OC\Memcache\Redis"
sudo -u www-data php /var/www/nextcloud/occ config:system:set redis:host --value="localhost"
sudo -u www-data php /var/www/nextcloud/occ config:system:set redis:port --value="6379" --type=integer

echo "=== 5. Redémarrer PHP-FPM ==="
sudo systemctl restart php8.4-fpm

echo "=== 6. Vérifier ==="
sudo -u www-data php /var/www/nextcloud/occ status

Subsiste une anomalie apcu

1
2
3
Modules PHP

Cette instance ne dispose pas de plusieurs modules PHP recommandés. Il est recommandé de les installer pour améliorer les performances, et la compatibilité : - apcu

Vérifier les liens

1
2
3
# Vérifier les liens dans cli et fpm
ls -la /etc/php/8.4/cli/conf.d/20-apcu.ini
ls -la /etc/php/8.4/fpm/conf.d/20-apcu.ini

Les liens existent

1
2
lrwxrwxrwx 1 root root 36  4 juin  08:33 /etc/php/8.4/cli/conf.d/20-apcu.ini -> /etc/php/8.4/mods-available/apcu.ini
lrwxrwxrwx 1 root root 36  4 juin  08:33 /etc/php/8.4/fpm/conf.d/20-apcu.ini -> /etc/php/8.4/mods-available/apcu.ini

Si les liens sont inexistants, les créer

1
2
3
# Créer les liens symboliques
sudo ln -sf /etc/php/8.4/mods-available/apcu.ini /etc/php/8.4/cli/conf.d/20-apcu.ini
sudo ln -sf /etc/php/8.4/mods-available/apcu.ini /etc/php/8.4/fpm/conf.d/20-apcu.ini

Vérifier que le fichier contient extension=apcu.so

1
2
# Vérifier que le fichier contient extension=apcu.so
grep -q "extension=apcu.so" /etc/php/8.4/mods-available/apcu.ini || echo "extension=apcu.so" | sudo tee -a /etc/php/8.4/mods-available/apcu.ini

Réponse: extension=apcu.so

Redémarrer PHP-FPM

1
sudo systemctl restart php8.4-fpm

Vérifier que APCu est actif pour CLI

1
php -r "echo extension_loaded('apcu') ? 'APCu CLI OK' : 'APCu CLI NON'; echo PHP_EOL;"

Réponse: APCu CLI OK

Vérifier dans FPM

1
php -m | grep apcu

Réponse: apcu

✅ Configurer l’ID du serveur de configuration (serverid). C’est un warning optionnel pour les installations multi-serveurs. Pour un seul serveur, vous pouvez le configurer avec une valeur entre 0 et 1023

1
2
echo "=== 1. Configurer serverid ==="
sudo -u www-data php /var/www/nextcloud/occ config:system:set serverid --value=1 --type=integer

🔑 Authentification Double facteur - TOTP

đŸ›Ąïž Administration

En mode administration vérifier si application TOTP active

ParamĂštres d’administration ⇹ SĂ©curitĂ©

Puis cliquer sur Enregistrer les modifications

đŸ‘„ Utilisateurs

Les opérations suivantes sont à effectuer sur chaque utilisateur

Aller ensuite sur ParamĂštres personnels –> SĂ©curitĂ© dans la rubrique Personnel

Il faut rentrer le code secret ou le QR code et vérifier

Générer des codes de récupération

AprÚs avoir activé authentification TOTP (saisie du mot de passe)

Enter le secret TOTP dans le ou les applications TOPT

Saisir le code de vĂ©rification gĂ©nĂ©rer par votre application et cliquer sur “VĂ©rifier”

Ensuite cliquer sur “GĂ©nĂ©rer des codes de rĂ©cupĂ©ration”

Se déconnecter puis se reconnecter pour une vérification complÚte

📧 Messagerie pour les notifications

Cet article est sous licence CC BY 4.0 par l'auteur.