article

Améliorations pour Nextcloud sur le Raspberry Pi

Par  Benjamin

Publié le 17 avril 2022

Retrouvez-nous sur BlueSky, Facebook et Mastodon.

Dans un précédent article nous avions vu comment installer Nextcloud sur votre Raspberry Pi. Ici nous allons voir comment corriger des erreurs et améliorer notre installation. J'ai balayé large afin de répondre à un maximum de messages d'erreur. Il est possible que je mette l'article à jour de temps en temps en fonction des découvertes que je ferai. N'étant pas un professionnel du domaine veillez à vous documenter aussi, je ne voudrais pas être responsable d'un drame ! Nous allons faire un grand tour des problèmes et j'espère que tout ça vous permettra de profiter au mieux de votre service Nextcloud.

Mise à jour le 3 juillet 2022

Corriger l'erreur d'utilisateur du dossier Nextcloud: On va simplement changer l'ordre des groupes.
sudo chown -R www-data:nomUtilisateurPi /var/www/html/nextcloud
Ajouter les différents modules PHP manquants: Tous ces petits modules d'extensions vont vous permettre un meilleur support dans php. Si vous êtes passé à une autre version de php, vous pouvez changer les numéros.
sudo apt install php-intl
sudo apt install php-bcmath
sudo apt install php7.4-gmp
sudo apt install php-imagick
sudo apt install imagemagick
Problème de préfixe régional: On va éditer le fichier de configuration de Nextcloud et ajouter une ligne avant la fermeture ");".
sudo nano /var/www/html/nextcloud/config/config.php
'default_phone_region' => 'FR',
Redémarrage du serveur Apache.
sudo service apache2 restart
Corriger l'erreur HSTS et de redirection 301: Éditons le fichier apache2.conf sur le Raspberry Pi, pour d'autres systèmes cela peut être le .htaccess.
sudo nano /etc/apache2/apache2.conf
Ajouter tout en bas du fichier ces quelques lignes. La première est pour le HSTS, les autres permettrons par exemple à l'application Contacts de Mac OS de bien trouver le chemin. Il faudra ajouter aussi la balise IfModule mod_headers.c avec les chevrons, comme sur l'image. N'oubliez pas de fermer la balise.

Exemple avec les chevrons et if module.

Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav
Redirect 301 /.well-known/webfinger /nextcloud/index.php/.well-known/webfinger
Redirect 301 /.well-known/nodeinfo /nextcloud/index.php/.well-known/nodeinfo
Puis il faut activer l'entête Apache et relancer le tout !
sudo a2enmod headers
sudo systemctl restart apache2
Si vous avez un blocage pour relancer votre page web. ^_^
sudo reboot
Activation du caching: En activant le caching nous aurons normalement une machine plus véloce. J'ai utilisé "redis server", il y a d'autres solutions mais celle-ci fonctionne bien.
sudo apt install php-apcu redis-server php-redis -y
sudo nano /etc/redis/redis.conf
Changez le port 6379 par 0 et vous décommentez les paramètres qui suivent.
unixsocket /var/run/redis/redis.sock
unixsocketperm 700
Maintenant vous passez "unixsocketperm 700" à la valeur 770 pour les permissions. On ajoute maintenant l'utilisateur Redis à Apache.
usermod -a -G redis www-data
Redémarrage du server Redis.
service redis-server restart
Maintenant on ajoute des paramètres de caching au fichier de configuration Nextcloud. Recopier le code à l'identique:

Attention à ne pas faire d'erreur !

Redémarrage du serveur.
systemctl enable redis-server
Réglage de la mémoire php: La mémoire par défaut est de 128Mo mais Nextcloud a besoin de 512Mo. Nous allons éditer le fichier php.ini est augmenter tout ça.
sudo nano /etc/php/7.4/apache2/php.ini
Cherchez "memory_limit" avec Ctrl+w et remplacez la valeur comme ci-dessous.
memory_limit = 512M
Redémarrage du serveur Apache.
sudo service apache2 restart
Impossible de vider la corbeille: Parfois on rencontre des problèmes avec la corbeille dans l'interface graphique, casse la tienne, on va passer par le terminal.
cd /var/www/html/nextcloud
nc_user=www-data
sudo -u ${nc_user} php occ trashbin:cleanup --all-users
Normalement en réponse de retour vous aurez le nom d'utilisateur du ou des comptes NextCloud. ► Autoriser la connection d'un sous domaine: Pour autoriser un sous domaine à se connecter, il faudra ajouter l'adresse. Nous éditions encore une fois le fichier de configuration de Nextcloud.
sudo nano /var/www/html/nextcloud/config/config.php
Il faudra ajouter votre sous domaine dans "trusted domaine".
1 => 'sous.domaine.com',
Redémarrage du serveur Apache.
sudo service apache2 restart
Activer le mode maintenance: Direction le fichier de configuration de Nextcloud.
sudo nano /var/www/html/nextcloud/config/config.php
Si la ligne maintenance est absente, ajoutez la. La valeur "true" nous donne la maintenance, la valeur "false" coupe cette dernière, et nous repasse en fonctionnement normal. Idéal pour des mises à jour ou bricoler sur Nextcloud.
'maintenance' => true,
Corriger l'erreur Server replied "423 Locked": Nous allons nous connecter à la BDD, il faut donc connaître le nom de l'utilisateur, et le mot de passe, mais aussi le nom de votre BDD Nextcloud. Sinon cette partie va être compliquée. Avant de passer à la suite activer le mode maintenance.
mysql --user=utilisateurRoot --password=monDePasse
use votreBDDNextcloud;
DELETE FROM oc_file_locks WHERE 1;
Corriger le problème APCU pour php CLI : Pour corriger le problème, il suffit d'éditer le fichier apcu.ini. Debian avec ISPConfig ignore les paramètres PHP du site web, il faut donc définir le CLI dans le fichier de configuration.
sudo nano /etc/php/7.4/mods-available/apcu.ini
Ajoutez les valeurs suivantes sur la ligne du dessous.
apc.enable_cli=1
apc.shm_size=512M
Puis redémarrer apache.
sudo service apache2 restart
Activation du htaccess: Si vous avez un avertissement pour le ".htaccess" il suffit de l'activer.
sudo nano /etc/apache2/apache2.conf
Puis passer les paramètres de "None" à "All" et sur /var/www/ et modifier le pointage vers /var/www/html/ en fonction de votre dossier web.

Exemple de configuration.

Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Redémarrage de Apache.
sudo service apache2 restart
Réussir le scan de sécurité en A+: Vous aurez remarqué que l'installation dans mon tutoriel s'est faite dans le dossier "/var/www/html/". Cet emplacement ne permettra pas d'avoir la note A+, pour avoir la note maximale, il suffira de déplacer le dossier "nexcloud" dans le dossier "www". Si vous ne déplacez pas le dossier il sera impossible d'avoir la note max, mais vous aurez un A avec une erreur "__Host-Prefix". https://scan.nextcloud.comAugmenter la taille maximale de téléversement de 2M: Pour modifier la taille des téléverssements dans le client web (navigateur) il faut changer deux valeurs, "post_max_size" et "upload_max_filesize". Personnellement je cherche les valeurs avec le raccourci "w" dans l'éditeur Nano. J'ajoute au deux 5G.
sudo nano /etc/php/7.4/apache2/php.ini
Éditer votre fichier, puis redémarrer.
sudo service apache2 restart
NB: Toutes ces corrections conviennent à une installation de Nexcloud sur un Raspberry Pi, avec Raspberry Pi OS. Les pré-requis ici sont, Apache, php, MySQL / Mariadb, et la dernière version de Nextcloud. ► Corriger l'erreur "occ db:add-missing-indices": Si vous êtes passé de Nextcloud Hub II version 23 à la 24, dans la vue d'ensemble vous avez peut-être une erreur "occ db:add-missing-indices". Pour la corriger rien de plus simple.
sudo -u www-data php /var/www/html/nextcloud/occ db:add-missing-indices
Normalement vous êtes à nouveau tranquille, mais attention pour certains le chemin est /var/www/html et pour d'autres simplement /var/www en fonction de vos installations. ► Activer Cron : Pour exécuter des tâches régulières il faut manipuler un fichier et donner le bon chemin. Surtout si votre dossier n'est pas dans /www/. L'utilisateur doit être www-data, dans d'autre Linux que Debian ça change. Pour activer Cron, il suffit de passer par les paramètres de base.
sudo crontab -u www-data -e
Choisir 1 pour l'éditeur nano. Vous ajoutez la ligne :
*/5  *  *  *  * php -f /var/www/html/nextcloud/cron.php
Puis la commande :
crontab -u www-data -l
Vous donne :
*/5  *  *  *  * php -f /var/www/html/nextcloud/cron.php
Je conseille un reboot, ou relancer apache. ► Corriger l'erreur "opcahe" inférieur à 8:
sudo nano /etc/php/7.4/apache2/php.ini
Chercher la ligne opcache.interned_strings_buffer=8 et mettre 16.
Crédits: KernelDesign.net