Article
Nextcloud Installation Sur Ubuntu-Server
Réaliser l'installation de Nextcloud ubuntu-server
Nextcloud sur ubuntu-server
Installation de Nextcloud sur un raspberry Pi4 avec ubuntu-server OS
Dans cet article, nous allons installer un nuage 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.1.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 installée, on commence l'installation d'ImageMagick.
sudo apt install imagemagick
Maintenant vérifions l'installation
identity -version
Réponse du server
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 installons redis-serveur
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.
C'est tout, votre serveur Redis est installé et fonctionnel.
Extensions PHP
Maintenant, on va installer les 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/lastest.tar.bz2
Extraction 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)
On active le site
sudo a2ensite nextcloud.conf
puis on active les modules et le hhtps
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmode env
sudo a2enmode dir
sudo a2enmode mime
pour le ssl
sudo a2enmod ssl a2ensite default-ssl
et pour finir on redémarre le service Apache
sudo systemctl restart apache2
On change les propriétés du répertoire nextcloud
sudo chown -R www-data:www-data /var/www/html/nextcloud/
Maintenant 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
sudo mysql
nous allons commencé par créer la base de données Nextcloud, puis créer un utilisateur avec tous les droits sur cette base.
CREATE DATABASE db_nextcloud;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'VotreMotdePasse';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
Attention Remplacer "VotreMotdePasse" par le mot de passe que vous aurez choisi.
sortons de Mariadb
exit
Finalisation de l'installation de Nextcloud
Pour finaliser l'installation on va maintenant se connecter à Nexcloud en local
exemple: 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 vas modifier un peu le fichier htaccess afin de forcer l'acces en hhtps.
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 /var/wwww/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 des définitives 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 --al-users
-
Cron taches de fond
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 nouvaux fichiers, exécution chargement de page, etc.
crontab -u www-data -e
Ajouter cette ligne à la fin du fichier. Il 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 ligne suivantes au début du fichier au desus de [mysql]
[mysqld]
innodb_buffer_pool_size=512M
innodb_io_capacity=4000
enregistre et 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-COMMITED
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.service
on 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
Ajout 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.conf
Vé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 ( à affectuer après configuration de redis)
sudo -u www-data php /var/www/htmlnextcloud/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/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.ini
vé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.ini
vérification
sudo cat /etc/php/8.1/apache2/php.ini | egrep "^;* *upload_max_filesize *=|^;* *post_max_size *="
et on redémarre une dernière fois =)
sudo systemctl restart apache2
Et voilà
On arrive à la fin de notre installation, maintenant, il reste à faire encore quelques configurations notamment ajoutées 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 sauvegarde de nos photos directement sur notre nuage.