Nextcloud sur Raspberry Pi 4
21 Nov 2023 à 17:30
devop's
1 Comments
Réalisaer l'installation de Nextcloud sur un raspberry Pi 4 (4 ou 8 GO)
Dans cet article, nous allons installer un cloud personnel, pour se dés-idéologiser de Google. Nous allons commencer par l'environnement du système, ubuntu-server avec Apache, Maria-db, php 8.1 et ses dépendances. Pour fonctionner correctement, Nextcloud à besoin des extensions php suivant :
- imagemagick
- redis-server
- php-apcu
- php-bcmath
- php-curl
- php-gd
- php-gmp
- php-imagick
- php-intl
- php-mbstring
- php-mysql
- php-redis
- php-xml
- php-zip
Commençons par l'installation des logiciels nécessaires.
ImageMagick
ImageMagick est un outil de manipulation d'images gratuit et open-source. Il est principalement utilisé pour créer, éditer, composer ou convertir des images bitmap. Ses utilisations incluent le redimensionnement, la rotation, le cisaillement des images, l'application de divers effets spéciaux ou le dessin de texte, de lignes et de courbes. La plupart de ses fonctionnalités sont exécutées depuis la ligne de commande.
Connexion à notre serveur en ssh
ssh ubuntu@192.168.0.20
Remplacer les informations nécessaires pour votre connexion.
Nous allons commencer par vérifier que notre serveur soit bien à jour :
sudo apt update && sudo apt upgrade
Une fois, la vérification faite, on commence l'installation d'ImageMagick.
sudo apt install imagemagick
Maintenant vérifions l'installation
identify -version
Réponse
Version: ImageMagick 6.9.10-23 Q16 aarch64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff
webp wmf x xml zlib
Maintenant nous allons installer "redis-server".
Redis
Redis est un magasin de données clé-valeur en mémoire open source. Il peut être utilisé comme base de données cache et courtier de messages, et prend en charge diverses structures de données telles que les chaînes, les hachages, les listes, les ensembles, etc. Redis offre une haute disponibilité via "Redis Sentinel "et un partitionnement automatique sur plusieurs nœuds Redis avec "Redis Cluster".
Installation de redis-server
sudo apt install redis-server
Une fois, l'installation complète, le service Redis va démarrer automatiquement.
Maintenant, vérifions notre installation.
sudo systemctl status redis-server
Vous devriez voir quelque chose comme ça
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-04-28 18:27:37 CEST; 5 days ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Main PID: 1941 (redis-server)
Tasks: 4 (limit: 9256)
CGroup: /system.slice/redis-server.service
└─1941 /usr/bin/redis-server 127.0.0.1:0
avril 28 18:27:37 ubuntu systemd[1]: Starting Advanced key-value store...
avril 28 18:27:37 ubuntu systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after
star>
avril 28 18:27:37 ubuntu systemd[1]: Started Advanced key-value store.
normalement tout est bon, votre serveur Redis est installé et fonctionnel.
Extensions PHP
Poursuivons , avec l'installation des extensions PHP.
sudo apt install php-apcu php-bcmath php-curl php-gd php-gmp php-imagick php-intl php-mbstring php-mysql php-redis php-xml php-zip
Des extensions peuvent déjà être installées avec votre version de PHP, vérifier et adapter la ligne en fonction.
Installation de Nextcloud
Téléchargement de Nextcloud
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
Modification des droits pour le dossier htmlsudo chown -R $USER /var/www/html
Extraction des données dans le dossier /var/www/html
tar -xvf latest.tar.bz2 -C /var/www/html/
Avant d'aller plus loin on vas mettre en place notre fichier de configuration pour notre hôte virtuel.
sudo nano /etc/apache2/sites-available/nextcloud.conf
Cela va créer et ouvrir le fichier de configuration de notre hôte virtuel dans lequel nous allons coller les
instructions suivantes.
( à corriger selon vos besoins)
Alias / "/var/www/html/nextcloud/"
<Directory /var/www/html/nextcloud/>
On active le site
sudo a2ensite nextcloud.conf
puis on active les modules et le https :
sudo
a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime
et pour le ssl :
sudo
a2enmod ssl
a2ensite default-ssl
et pour finir on redémarre le service Apache :
sudo systemctl restart apache2
Maintenant on change les propriétés du répertoire Nextcloud :
sudo chown -R www-data:www-data /var/www/html/nextcloud/
et on va vérifier la version installée :
sudo -u www-data php /var/www/html/nextcloud/occ -V
sudo -u www-data php /var/www/html/nextcloud/occ status
Création de la base de données
Commençons par nous connecter à mariadb -server
sudo mysql
Nous allons d'abord créer la base de données Nextcloud, puis créer un utilisateur avec tous les droits sur cette base.
CREATE DATABASE nomdelaBase;
CREATE USER 'votreIdentifiantDeConnnexion'@'localhost' IDENTIFIED BY 'VotreMotdePasse';
GRANT ALL PRIVILEGES ON nomdelaBase.* TO 'votreIdentifiantDeConnexion'@'localhost';
FLUSH PRIVILEGES;
Attention remplacer "les informations de connexion " par les vôtres.
sortons de mariadb;
exit
Finalisation de l'installation de Nextcloud
Pour finaliser l'installation on va maintenant se connecter à Nexcloud en local.
exmeple: http://192.168.0.20
Une fois les champs renseignés, cliquer sur Terminer l'installation.
On va ensuite retourné sur notre terminal afin de configurer notre installation plus précisément.
-
Région et téléphone
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set default_phone_region --value="FR"
Si besoin modifier le code Pays selon votre lieu de résidence.
-
Pretty url en hhtps
Cela permet la suppression de "index.php" dans la barre d'adresse, ce sera plus joli !!!
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set htaccess.RewriteBase --value="/"
sudo -u www-data php /var/www/html/nextcloud/occ maintenance:update:htaccess -
Edition du htaccess
On va modifier un peu le fichier .htaccess afin de forcer l'accès en https.
sudo nano /var/www/html/nextcloud/.htaccess
aller à la fin du fichier juste avant la balise
" "
et avant l'instruction "RewriteBase /"RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUET_URI} [R=301,L] -
Gestion des fichiers supprimés.
L'application "Deleted_files" gère les fichiers supprimés en fonction du paramètre "trashbin_retention_obligation" du fichier "config.php".
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set trashbin_retention_obligation --value="auto,30"
Les fichiers de la poubelle seront supprimés définitivement au bout de 30 jours. Mais si la taille de la poubelle dépasse 50 % de l'espace libre, les fichiers les plus anciens seront supprimés automatiquement.
Forcer la suppression définitives des fichiers de la corbeille
sudo -u www-data php /var/www/html/nextcloud/occ trashbin:expire
Forcer la suppression pour tous les utilisateurs
sudo -u www-data php /var/www/html/nextcloud/occ trashbin:cleanup --all-users
-
Taches de fond _ Cron
Pour son fonctionnement, il est recommandé d'utiliser "Cron" afin d'exécuter les tâches de fonds régulièrement sans intervention.( recherche de nouveaux fichiers, exécution chargement de page, etc.).
sudo crontab -u www-data -e
Ajouter cette ligne à la fin du fichier, cela permet l'exécution des tâches toutes les 5 minutes.
*/5 * * * * php -f /var/www/html/nextcloud/cron.php
configuration du type de tâche dans Nextcloud.
sudo -u www-data php /var/www/html/nextcloud/occ background:cron
Optimisation des performances
Le serveur est maintenant fonctionnel, mais il reste quelques réglages afin de peaufiner l'installation de Nextcloud.
Mariadb configuration
On vas éditer les fichiers de configuration de la base de données pour de meilleurs résultats et éviter les
alertes de sécurisations.
On commence par le fichier mysql.cnf
sudo nano /etc/mysql/conf.d/mysql.cnf
Ajouter les lignes suivantes au début du fichier, au dessus de [mysql]
[mysqld]
innodb_buffer_pool_size=512M
innodb_io_capacity=4000
On enregistre et on ferme le fichier, maintenant on va ouvrir le fichier "my.cnf"
sudo nano /etc/mysql/my.cnf
Ajouter les lignes suivantes a la fin du fichier.
[mysqld]
transaction_isolation = READ-COMMITTED
binlog_format = ROW
et on redémarre le serveur mariadb
sudo systemctl restart mariadb.service
Modification de php.ini
-
Mémoire
On va modifier les valeurs de mémoire pour la porter à 512M pour le bon fonctionnement de Nextcloud. (modifier la version de PHP en fonction de vos besoins, ici "8.1")
sudo sed -i -e "s/^memory_limit \+= \+.*$/memory_limit = 512M/g" /etc/php/8.1/apache2/php.ini
sudo sed -i -e "s/^output_buffering \+= \+.*$/output_buffering = 0/g" /etc/php/8.1/apache2/php.ini
sudo systemctl restart apache2.serviceon vérifie si nos changements on été pris en compte =)
sudo cat /etc/php/8.1/apache2/php.ini | egrep "memory_limit|^output_buffering"
-
Configuration de REDIS
Documentation Nextcloud RedisAjout de l'utilisateur "www-data" au groupe REDIS
sudo usermod -a -G redis www-data
Configuration de redis.conf
sudo sed -i -e "s/^#* *port +*6379$/port 0/g" /etc/redis/redis.conf
sudo sed -i -e "s/^#* *unixsocket +*.*$/unixsocket \/var\/run\/redis\/redis-server.sock/g" /etc/redis/redis.conf
sudo sed -i -e "s/^#* *unixsocketperm+*.*$/unixsocketperm 770/g" /etc/redis/redis.confVérification
sudo cat /etc/redis/redis.conf | egrep "^#* *port +|^#* *unixsocket +|^#* *unixsocketperm +"
Redémarrage de Redis
sudo systemctl restart redis-server.service
-
File locking et Memory cache
Activation de "filelocking".
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set filelocking.enabled --value="true"
configuration de redis
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set redis host --value="/var/run/redis/redis-server.sock"
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set redis port --value="0"
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set redis timeout --value="0.0"Configuration de "memcahe.distributed" ( à effectuer après configuration de redis).
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set memcache.distributed --value="\OC\Memcache\Redis"
Configuration de "memcache.local" et "memcache.locking"
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set memcache.local --value="\OC\Memcache\Redis"
sudo -u www-data php /var/www/html/nextcloud/occ config:system:set memcache.locking --value="\OC\Memcache\Redis"Vérification de l'ensemble
sudo cat /var/www/html/nextcloud/config/config.php | egrep "'filelocking\.enabled|'memcache\.local |'memcache\.locking|'host|'port|'timeout|'memcache\.distributed"
On redémarre apache
sudo systemctl restart apache2
-
Activation de PHP OPcache
On modifie à nouveau le fichier "php.ini", toujours en veillant à modifier la version de PHP si besoin.
sudo sed -i -e "s/^;* *opcache\.enable *= *.*$/opcache.enable=1/g" /etc/php/8.1/apache2/php.ini
sudo sed -i -e "s/^;* *opcache\.memory_consumption *= *.*$/opcache.memory_consumption=128/g" /etc/php/8.1/apache2/php.ini
sudo sed -i -e "s/^;* *opcache\.interned_strings_buffer *= *.*$/opcache.interned_strings_buffer=8/g" /etc/php/8.1/apache2/php.ini
sudo sed -i -e "s/^;* *opcache\.max_accelerated_files *= *.*$/opcache.max_accelerated_files=10000/g" /etc/php/8.1/apache2/php.ini
sudo sed -i -e "s/^;* *opcache\.revalidate_freq *= *.*$/opcache.revalidate_freq=1/g" /etc/php/8.1/apache2/php.ini
sudo sed -i -e "s/^;* *opcache\.save_comments *= *.*$/opcache.save_comments=1/g" /etc/php/8.1/apache2/php.inivérification des modifications
sudo cat /etc/php/8.1/apache2/php.ini | egrep "^;* *opcache\.enable *=|^;* *opcache\.interned_strings_buffer *= |^;* *opcache\.max_accelerated_files *=|^;* *opcache\.memory_consumption *= |^;* *opcache\.save_comments *=|^;* *opcache\.revalidate_freq *="
Et on redémarre le serveur apache =)
sudo systemctl restart apache2
-
Taille limite de téléchargement
sudo sed -i -e "s/^;* *upload_max_filesize *= *.*$/upload_max_filesize=16G/g" /etc/php/8.1/apache2/php.ini
sudo sed -i -e "s/^;* *post_max_size *= *.*$/post_max_size=16G/g" /etc/php/8.1/apache2/php.inivérification
sudo cat /etc/php/8.1/apache2/php.ini | egrep "^;* *upload_max_filesize *=|^;* *post_max_size *="
sudo systemctl restart apache2
Et voilà
On arrive à la fin de notre installation, maintenant, il reste à faire encore quelques configurations notamment
à ajouter un domaine afin d'accéder à notre cloud depuis un adresse dédiée.
Pour accéder au serveur Nextcloud depuis l’extérieur, il est fortement recommandé de le faire au travers du
protocole HTTPS.
Grâce aux étapes précédentes, le serveur Nextcloud force l’utilisation du protocole HTTPS.
Cependant, le certificat SSL utilisé est un certificat auto-signé et n’est pas considéré comme fiable par les
navigateurs. Ces derniers afficheront donc un avertissement
Nous avons donc maintenant un serveur Nextcloud personnel, qui nous permet de nous affranchir de Google concernant les contacts et le calendriers, mais aussi les photos.
Dans un prochain article nous verrons comment mettre en place une relation entre notre nuage Nextcloud et un téléphone portable sous android, afin de gérer notre carnet d'adresse nos calendriers et la sauveagarde dde nos phots directement sur notre nuage.
Liste des commentaires
Posté par Exemple 14 Nov 2022 à 19:49
Installation sur OS Ubuntu-server, voir l'article sur le serveur Lamp