Outils pour utilisateurs

Outils du site


informatique:installation_et_securisation_d_un_serveur_nextcloud_et_nginx_sur_un_raspberrypi_2_et_disque_ssd

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
informatique:installation_et_securisation_d_un_serveur_nextcloud_et_nginx_sur_un_raspberrypi_2_et_disque_ssd [2021/10/21 14:05] – Déplacement mysql et performances Pascal Delrotinformatique:installation_et_securisation_d_un_serveur_nextcloud_et_nginx_sur_un_raspberrypi_2_et_disque_ssd [2022/11/10 01:38] (Version actuelle) – Compléments sur les versions de Nextcloud Pascal Delrot
Ligne 1: Ligne 1:
 FIXME Cette page est en cours de rédaction ! FIXME Cette page est en cours de rédaction !
 +
 ===== Mes objectifs ===== ===== Mes objectifs =====
 L'installation d'un serveur internet, Nextcloud sur une RaspberryPi n'a rien de nouveau. La création de ce serveur répond à quelques objectifs personnels : L'installation d'un serveur internet, Nextcloud sur une RaspberryPi n'a rien de nouveau. La création de ce serveur répond à quelques objectifs personnels :
Ligne 10: Ligne 11:
   * éventuellement remplacer mon Nextcloud chez Ouvaton   * éventuellement remplacer mon Nextcloud chez Ouvaton
   * apprendre !   * apprendre !
-  * utiliser la carte RaspberryPi 2 achetée il y a déjà 8 ans ! et du matériel d'occasion/réutilisé+  * utiliser la carte RaspberryPi 2 achetée il y a déjà 8 ans (2012) ! et du matériel d'occasion/réutilisé
  
 Quelques difficultés ou apprentissages à faire : Quelques difficultés ou apprentissages à faire :
Ligne 23: Ligne 24:
 Il y a de nombreux blogs traitant du sujet. Il y a de nombreux blogs traitant du sujet.
 La plupart sont orientés Nextcloud+Apache et promettent d'inonder le web avec les octets de notre serveur. La plupart sont orientés Nextcloud+Apache et promettent d'inonder le web avec les octets de notre serveur.
-Relecture de ces blogsen ayant en tête que ma RPi2 n'est pas aussi puissante que les derniers modèles.+Il est classique d'utiliser un serveur Apacheet ma première tentative sur une RaspberryPi n'a pas été couronnée de succès. 
 +C'était cependant la configuration que j'avais sur ma tour depuis plusieurs années. 
 + 
 +En ayant en tête que ma RPi2 n'est pas aussi puissante que les derniers modèles, j'ai choisi d'apprendre à installer et configurer `nginx`. 
 + 
 +*Avant de poursuivre :* La RPi2 fonctionne avec un OS 32 bits. A date de novembre 2022, l'installation de Nextcloud 25 n'est plus possible. Néanmoins l'essentiel de la page doit être valide pour une RPi3 ou RPi4 (sauf les performances bien entendu).
  
 ===== Installations ===== ===== Installations =====
Ligne 38: Ligne 44:
 Fichiers de configuration sur la clé au premier démarrage : Fichiers de configuration sur la clé au premier démarrage :
 SSH, Wifi (FIXME liens vers sites tiers pour explications) SSH, Wifi (FIXME liens vers sites tiers pour explications)
 +
 +FIXME Réinstallation été 2022
  
 ==== Installation serveur nginx ==== ==== Installation serveur nginx ====
 +
 +Sur la RaspberryPi, j'ai choisi nginx, réputé plus léger, donc probablement davantage adapté à un processeur de faible puissance.
 +
 FIXME décrire particularités RPi2, nginx FIXME décrire particularités RPi2, nginx
  
Ligne 64: Ligne 75:
  
  /etc/mysql/mariadb.conf.d/50-server.cnf   /etc/mysql/mariadb.conf.d/50-server.cnf 
- datadir                 = /mnt/disk_externe/mysql_data+ datadir = /mnt/disk_externe/mysql_data
  
  
Ligne 75: Ligne 86:
  
 A date : Nextcloud 21 A date : Nextcloud 21
 +FIXME Réinstallation et migration Nextcloud 23 été 2022
  
 === Messages d'alerte Nextcloud === === Messages d'alerte Nextcloud ===
  
 La page de paramètres de Nextcloud affiche assez souvent au départ quelques alertes concernant les réglages. Rien de grave et tout a pu se régler en suivant la documentation. La page de paramètres de Nextcloud affiche assez souvent au départ quelques alertes concernant les réglages. Rien de grave et tout a pu se régler en suivant la documentation.
 +
 +>     Vous accédez à votre instance via une connexion sécurisée, pourtant celle-ci génère des URLs non sécurisées. Cela signifie probablement que vous êtes derrière un reverse-proxy et que les variables de réécriture ne sont pas paramétrées correctement. Merci de lire la page de documentation à ce propos.
 +    Accès non sécurisé au site via HTTP. Il est fortement conseillé de configurer votre serveur pour exiger HTTPS à la place, comme décrit dans les conseils de sécurité.
 +
 +Un fichier de configuration correct de nginx évite normalement ce type de messages (avec les certificats associés).
  
 > Le module php-imagick n’a aucun support SVG dans cette instance. Pour une meilleure compatibilité, il est recommandé de l’installer. > Le module php-imagick n’a aucun support SVG dans cette instance. Pour une meilleure compatibilité, il est recommandé de l’installer.
  
-    apt install php-imagick imagemagicksudo+    sudo apt install php-imagick imagemagick
  
 :-) :-)
Ligne 89: Ligne 105:
 > Aucun cache mémoire n'est configuré. Si possible, configurez un "memcache" pour améliorer les performances. Pour plus d'informations consultez la documentation. > Aucun cache mémoire n'est configuré. Si possible, configurez un "memcache" pour améliorer les performances. Pour plus d'informations consultez la documentation.
  
-Il a suffit de suivre la documentation qui se trouve ici :+Il a suffit de suivre la documentation qui se trouve plus bas. 
 +J'ai choisi Redis pour le cache local et distribué, ainsi que pour le verrouillage des fichiers.
  
- * https://docs.nextcloud.com/server/21/admin_manual/configuration_server/caching_configuration.html + * https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html 
- * https://docs.nextcloud.com/server/21/admin_manual/configuration_files/files_locking_transactional.html+ * https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/files_locking_transactional.html
  
 Le fichier de configuration `config.php` contient alors les lignes suivantes : Le fichier de configuration `config.php` contient alors les lignes suivantes :
Ligne 107: Ligne 124:
   'filelocking.enabled' => true,   'filelocking.enabled' => true,
  
 +ou encore
 +  
 +  'memcache.local' => '\OC\Memcache\Redis',
 +  'memcache.distributed' => '\OC\Memcache\Redis',
 +  'redis' => [
 +     'host' => '/var/run/redis/redis-server.sock',
 +     'port' => 0,
 +  ],
 +
 +  en prenant garde à bien configurer
 +  /etc/redis/redis.conf
 +  
 +avec 
 +    unixsocket /var/run/redis/redis-server.sock
 +    unixsocketperm 770
 +
 +et sudo usermod -a -G redis www-data  
 +  
 Voici 2 autres tutoriels sur le sujet : Voici 2 autres tutoriels sur le sujet :
  
Ligne 191: Ligne 226:
  
     HOTE:/home/utilisateur/ # dd if=/dev/zero of=/tmp/test.data bs=1M count=1024 conv=fdatasync     HOTE:/home/utilisateur/ # dd if=/dev/zero of=/tmp/test.data bs=1M count=1024 conv=fdatasync
-    1024+0 enregistrements lus +    1024+0 enregistrements lus 
-    1024+0 enregistrements écrits +    1024+0 enregistrements écrits 
-    1073741824 octets (1,1 GB, 1,0 GiB) copiés, 5,88258 s, 183 MB/s+    1073741824 octets (1,1 GB, 1,0 GiB) copiés, 5,88258 s, 183 MB/s
  
 Sur la RaspberryPi 2 Sur la RaspberryPi 2
Ligne 204: Ligne 239:
  
 ^ Test               ^ MacBook Air    ^ RaspberryPi 2   ^ RaspberryPi 2     ^ RaspberryPi 2 ^ Test               ^ MacBook Air    ^ RaspberryPi 2   ^ RaspberryPi 2     ^ RaspberryPi 2
-| Type disque        | SSD SATA       | MicroSD         | SSD (via USB3)    | HDD (via USB3)+| Type disque        | SSD SATA       | MicroSD         | SSD (via USB2)    | HDD (via USB2)
 | hdparm (en cache)  | 5190 MB/sec    | 436.86 MB/sec   | 420.87 MB/sec     | 411.32 MB/sec | hdparm (en cache)  | 5190 MB/sec    | 436.86 MB/sec   | 420.87 MB/sec     | 411.32 MB/sec
 | hdparm (buffer)    | 569 MB/sec     | 21.69 MB/sec    | 28.65 MB/sec      | 25.19 MB/sec | hdparm (buffer)    | 569 MB/sec     | 21.69 MB/sec    | 28.65 MB/sec      | 25.19 MB/sec
Ligne 211: Ligne 246:
 En conclusion : les performances sont largement en dessous d'un PC, il ne faut pas oublier que la RPi2 n'est qu'un nano-ordinateur. Les performances des disques SSD et HDD sont assez proches, et en fait les valeurs de débit sont proches des débits de la liaison USB. Sans surprise, c'est la liaison USB 2.0 qui limite les débits des disques SATA 3GB/s. En conclusion : les performances sont largement en dessous d'un PC, il ne faut pas oublier que la RPi2 n'est qu'un nano-ordinateur. Les performances des disques SSD et HDD sont assez proches, et en fait les valeurs de débit sont proches des débits de la liaison USB. Sans surprise, c'est la liaison USB 2.0 qui limite les débits des disques SATA 3GB/s.
  
 +==== Délai d'accès depuis l'extérieur ====
 +
 +Les délais d'accès se testent rapidement depuis l'extérieur avec la commande `ping` vers l'IP et le port concerné.
 +
 + UTILISATEUR@HOTE:~> ping XXX.XXX.XXX.XXX -p XXXXX
 + PATTERN: 0x180800
 + PING XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX) 56(84) octets de données.
 + 64 octets de XXX.XXX.XXX.XXX : icmp_seq=1 ttl=51 temps=82.3 ms
 + 64 octets de XXX.XXX.XXX.XXX : icmp_seq=2 ttl=51 temps=93.7 ms
 + 64 octets de XXX.XXX.XXX.XXX : icmp_seq=3 ttl=51 temps=79.1 ms
 + 64 octets de XXX.XXX.XXX.XXX : icmp_seq=4 ttl=51 temps=67.4 ms
 + 64 octets de XXX.XXX.XXX.XXX : icmp_seq=5 ttl=51 temps=75.7 ms
 + ^C
 + --- statistiques ping XXX.XXX.XXX.XXX ---
 + 5 paquets transmis, 5 reçus, 0% packet loss, time 4006ms
 + rtt min/avg/max/mdev = 67.400/79.626/93.678/8.599 ms
  
 ==== Conclusion pour les performances ==== ==== Conclusion pour les performances ====
 Le serveur est accessible depuis l'extérieur, mais les performances acceptables uniquement en local, ou pour de petits fichiers (contacts, notes, agendas), ou pour envoyer des fichiers vers le serveur (par exemple photographies d'un appareil nomade). Le serveur est accessible depuis l'extérieur, mais les performances acceptables uniquement en local, ou pour de petits fichiers (contacts, notes, agendas), ou pour envoyer des fichiers vers le serveur (par exemple photographies d'un appareil nomade).
  
-L'utilisation d'un SSD ou d'un HD n'a pas montré de grandes différences, à cause de la liaison USB 2.0. La consommation d'énergie électrique n'a pas semblé très différente non plus entre les 2 disques.+L'utilisation d'un SSD ou d'un HD n'a pas montré de grandes différences, à cause de la liaison USB 2.0. La consommation d'énergie électrique n'a pas semblé très différente non plus entre les 2 disques, au travers du rendement de l'alimentation AC-DC.
  
 =====  Optimisations ===== =====  Optimisations =====
Ligne 221: Ligne 272:
 === Système de fichiers EXT4 === === Système de fichiers EXT4 ===
 Pour diminuer le nombre d'accès (le disque de données est un SSD) Pour diminuer le nombre d'accès (le disque de données est un SSD)
 +
 +FIXME https://wiki.deimos.fr/Optimisation_des_filesystems_extX_et_du_RAID_sous_Linux.html, https://unix.stackexchange.com/questions/403782/adding-data-writeback-to-a-ext4-fstab-entry-results-in-read-only-filesystem mais https://unix.stackexchange.com/questions/40688/disabling-journal-vs-data-writeback-in-ext4-file-system
 +
 FIXME à réaliser FIXME à réaliser
 +
 +FIXME pour des raisons de taille, un disque HDD a ensuite été utilisé
  
 === Utilisation de la swap === === Utilisation de la swap ===
Ligne 250: Ligne 306:
  
 =====  Sécurisation ===== =====  Sécurisation =====
-FIXME+FIXME page dédiée : openSSH, fail2ban, accès utilisateurs, sous-domaine, port non standard, HTTPS 
 + 
 +IMPORTANT: https://docs.nextcloud.com/server/stable/admin_manual/installation/harden_server.html
  
   * [ ] Penser à filtrage par MAC address pour l'accès au serveur   * [ ] Penser à filtrage par MAC address pour l'accès au serveur
Ligne 296: Ligne 354:
  
 ====== Ressenti à l'usage ====== ====== Ressenti à l'usage ======
-A l'usage, la synchronisation totale des fichiers est nettement plus longue qu'auparavant. C'est la plupart du temps sans conséquence lor d'un travail quotidien.+A l'usage, la synchronisation totale des fichiers est nettement plus longue qu'auparavant. C'est la plupart du temps sans conséquence lors d'un travail quotidien.
  
 La mise à jour du Nextcloud (21.0.4) via l'interface graphique fonctionne, bien qu'elle soit un peu lente. Il y a des erreurs 504 et des demandes d'authentification via un "updater.secret". Mes conseils : La mise à jour du Nextcloud (21.0.4) via l'interface graphique fonctionne, bien qu'elle soit un peu lente. Il y a des erreurs 504 et des demandes d'authentification via un "updater.secret". Mes conseils :
Ligne 302: Ligne 360:
   * rafraîchir la page, et ne pas cliquer "retry"   * rafraîchir la page, et ne pas cliquer "retry"
   * parfois se reconnecter sur l'interface, puis revenir sur la mise à jour permet de reprendre là où elle s'était arrêtée    * parfois se reconnecter sur l'interface, puis revenir sur la mise à jour permet de reprendre là où elle s'était arrêtée 
 +  * [[https://www.peltier-net.fr/procedure-de-mise-a-jour-manuelle-serveur-nextcloud/]]
 +  
 +====== Les différentes versions de Nextcloud ======
 +
 +Le premier serveur a été installé avec Nextcloud 21. J'ai pu y réaliser toutes les mises à jour jusqu'à Nextcloud 24 sans soucis majeur (un peu de patience pour les opérations longues durant les mises à jour).
 +
 +Nextcloud 25 ne fonctionne que sur un système à 64 bits ([[https://www.raspberrypi.com/news/raspberry-pi-os-64-bit/]]
 +). J'en ai eu la désagréable expérience lorsque j'ai réalisé cette mise à jour :
 +
 +  * Nextcloud semble fonctionner
 +  * malheureusement les fichiers ne sont plus accessibles sur l'interface web
 +
 +> It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read the documentation page about this.
 +
 +Il existe cependant une solution que j'ai pu appliquer ([[https://help.nextcloud.com/t/cannot-access-files-after-upgrade-to-nextcloud-25/147823/6]]). Je pense que je n'aurai pas d'autre choix que de changer mon RPi2 à l'avenir.
 +
  
  
/var/www/vhosts/kadavrhusky.net/httpdocs/data/pages/informatique/installation_et_securisation_d_un_serveur_nextcloud_et_nginx_sur_un_raspberrypi_2_et_disque_ssd.txt · Dernière modification : 2022/11/10 01:38 de Pascal Delrot