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.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
informatique:installation_et_securisation_d_un_serveur_nextcloud_et_nginx_sur_un_raspberrypi_2_et_disque_ssd [2021/03/29 21:56] – ajouts version et détails Ouvaton Pascal Delrot | 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 Delrot | ||
---|---|---|---|
Ligne 10: | Ligne 10: | ||
* é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 ! | + | * utiliser la carte RaspberryPi 2 achetée il y a déjà 8 ans ! et du matériel d' |
Quelques difficultés ou apprentissages à faire : | Quelques difficultés ou apprentissages à faire : | ||
Ligne 29: | Ligne 29: | ||
* boot et système sur carte SD (ext4), | * boot et système sur carte SD (ext4), | ||
- | * données et base de données sur SSD (ext4) | + | * données et base de données sur SSD (ext4 ou btrfs) |
==== Installation Raspbian OS ==== | ==== Installation Raspbian OS ==== | ||
Rien de particulier à signaler sur cette partie. | Rien de particulier à signaler sur cette partie. | ||
- | FIXME à date de rédation et réalisation (mars 2021) la version est ??? | + | A date de rédation et réalisation (mars 2021) la version est Raspbian basée sur Debian buster. |
Fichiers de configuration sur la clé au premier démarrage : | Fichiers de configuration sur la clé au premier démarrage : | ||
Ligne 46: | Ligne 46: | ||
[[https:// | [[https:// | ||
+ | |||
+ | |||
+ | Afin d' | ||
+ | |||
+ | Les étapes sont les suivantes : | ||
+ | |||
+ | - Si l' | ||
+ | - Arrêt sur serveur mysql `sudo systemctl stop mysql` | ||
+ | - Copie à l' | ||
+ | - Renommer le répertoire par défaut par sécurité | ||
+ | - Modification du fichier de configuration de MariaDB | ||
+ | - Redémarrage du serveur mysql `sudo systemctl start mysql` | ||
+ | - Vérification du fonctionnement | ||
+ | - Effacement de l' | ||
+ | |||
+ | Le fichier de configuration MariaDB contient alors une ligne similaire à ceci : | ||
+ | |||
+ | / | ||
+ | datadir | ||
+ | |||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
Ligne 52: | Ligne 75: | ||
A date : Nextcloud 21 | A date : Nextcloud 21 | ||
+ | |||
+ | |||
+ | === Messages d' | ||
+ | |||
+ | 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. | ||
+ | |||
+ | > Le module php-imagick n’a aucun support SVG dans cette instance. Pour une meilleure compatibilité, | ||
+ | |||
+ | apt install php-imagick imagemagicksudo | ||
+ | |||
+ | :-) | ||
+ | |||
+ | > Aucun cache mémoire n'est configuré. Si possible, configurez un " | ||
+ | |||
+ | Il a suffit de suivre la documentation qui se trouve ici : | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | Le fichier de configuration `config.php` contient alors les lignes suivantes : | ||
+ | |||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ), | ||
+ | ' | ||
+ | ' | ||
+ | |||
+ | Voici 2 autres tutoriels sur le sujet : | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | L' | ||
+ | |||
+ | La documentation PHP est utile à lire : https:// | ||
+ | |||
+ | Il a d' | ||
+ | |||
+ | utilisateur@hote: | ||
+ | Configuration File (php.ini) Path => / | ||
+ | Loaded Configuration File => / | ||
+ | |||
+ | L' | ||
+ | |||
+ | Par défaut l' | ||
+ | |||
+ | utilisateur@hote: | ||
+ | [opcache] | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ... | ||
+ | |||
+ | |||
+ | Les seules lignes activées après modifications sont : | ||
+ | |||
+ | utilisateur@hote: | ||
+ | [opcache] | ||
+ | opcache.enable=1 | ||
+ | opcache.memory_consumption=128 | ||
+ | opcache.interned_strings_buffer=8 | ||
+ | opcache.max_accelerated_files=10000 | ||
+ | opcache.revalidate_freq=2 | ||
+ | opcache.save_comments=1 | ||
+ | |||
+ | > La limite de mémoire PHP est inférieure à la valeur recommandée de 512 Mo. | ||
+ | |||
+ | J'ai suivi ce tutoriel, c'est l' | ||
+ | https:// | ||
+ | |||
+ | utilisateur@hote: | ||
+ | memory_limit = 512M | ||
+ | |||
+ | > Votre installation n’a pas de préfixe de région par défaut. C’est nécessaire pour valider les numéros de téléphone dans les paramètres du profil sans code pays. Pour autoriser les numéros sans code pays, veuillez ajouter " | ||
+ | |||
+ | Il suffit d' | ||
+ | |||
+ | ' | ||
+ | |||
+ | Pour d' | ||
+ | |||
+ | |||
+ | > La configuration du serveur web ne permet pas d' | ||
+ | > La configuration du serveur web ne permet pas d' | ||
+ | |||
+ | Ces alertes semblent activées car j' | ||
+ | |||
===== Tests de performances ===== | ===== Tests de performances ===== | ||
FIXME à faire | FIXME à faire | ||
+ | |||
+ | Les performances peuvent concerner les disques, le serveur, le temps de réactivité, | ||
+ | |||
+ | Pour les accès disques : [[http:// | ||
+ | |||
+ | Sur mon MacBookAir (2013) qui fonctionne sur Debian, disque SSD : | ||
+ | |||
+ | Test via `hdparm` : | ||
+ | |||
+ | HOTE:/ | ||
+ | /dev/sda: | ||
+ | Timing cached reads: | ||
+ | Timing buffered disk reads: 1710 MB in 3.00 seconds = 569.95 MB/sec | ||
+ | |||
+ | Ecriture d'un fichier de 1GB aléatoire (attention la commande `dd` peut être très dangereuse si utilisée avec des droits administrateurs) : | ||
+ | |||
+ | HOTE:/ | ||
+ | 1024+0 enregistrements lus | ||
+ | 1024+0 enregistrements écrits | ||
+ | 1073741824 octets (1,1 GB, 1,0 GiB) copiés, 5,88258 s, 183 MB/s | ||
+ | |||
+ | Sur la RaspberryPi 2 | ||
+ | |||
+ | utilisateur@raspberrypi2:/ | ||
+ | / | ||
+ | Timing cached reads: | ||
+ | Timing buffered disk reads: | ||
+ | |||
+ | |||
+ | ^ Test ^ MacBook Air ^ RaspberryPi 2 ^ RaspberryPi 2 ^ RaspberryPi 2 | ||
+ | | Type disque | ||
+ | | hdparm (en cache) | ||
+ | | hdparm (buffer) | ||
+ | | Ecriture (dd) | 183 MB/s (1GB) | 197 MB/s (51Mo) | 13,8 MB/s (1GB) | 22.6 MB/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. | ||
+ | |||
==== Conclusion pour les performances ==== | ==== Conclusion pour les performances ==== | ||
Le serveur est accessible depuis l' | Le serveur est accessible depuis l' | ||
+ | |||
+ | L' | ||
===== Optimisations ===== | ===== Optimisations ===== | ||
Ligne 66: | Ligne 224: | ||
=== Utilisation de la swap === | === Utilisation de la swap === | ||
- | FIXME C'est un sujet de discussion sur des blogs. A voir, la RPi2 ayant une quantité de RAM limitée | + | C'est un sujet de discussion sur des blogs. A voir, la RPi2 ayant une quantité de RAM limitée. |
+ | Le choix qui a été réalisé est de créer un fichier de swap de 100MB (puis 256MB). Par rapport à une partition dédiée, le fichier peut " | ||
+ | |||
+ | sudo dphys-swapfile swapoff | ||
+ | sudo nano / | ||
+ | CONF_SWAPFILE=256 | ||
+ | sudo dphys-swapfile setup | ||
+ | want / | ||
+ | sudo dphys-swapfile swapon | ||
+ | |||
+ | Ne pas oublier les commandes | ||
+ | |||
+ | Il est aussi possible de ne pas modifier le fichier de configuration, | ||
+ | |||
+ | Swap ou pas, la discussion est ouverte : | ||
* https:// | * https:// | ||
- | * https:// | + | * https:// |
=== Ecriture des journaux systèmes en décalé === | === Ecriture des journaux systèmes en décalé === | ||
FIXME à essayer | FIXME à essayer | ||
L' | L' | ||
+ | |||
+ | |||
===== Sécurisation ===== | ===== Sécurisation ===== | ||
FIXME | FIXME | ||
+ | |||
+ | * [ ] Penser à filtrage par MAC address pour l' | ||
+ | * [ ] Authentification à 2 facteurs est intéressante aussi | ||
+ | |||
+ | ===== Transfert serveur " | ||
+ | |||
+ | Mes précédents fichiers étaient hebergés sur ma tour, un serveur Apache+MySQL+Nextcloud. | ||
+ | Le transfert était la finalité du projet. | ||
+ | |||
+ | Nextcloud propose des guides de migration qui ont été efficaces, moyennant quelques éléments ci-dessous : | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * et aussi https:// | ||
+ | |||
+ | A date, le serveur de test heberge 8Go de données et donne satisfaction en temps de réponse et en durée de fonctionnement. | ||
+ | Les données à transférer sont de 135Go, ce qui représente une marche conséquente (base de données, plus contenu du dossier `data` de Nextcloud). | ||
+ | |||
+ | Pour ne pas réinstaller et reconfigurer tout le serveur de test il a été choisi de : | ||
+ | |||
+ | * remplacer la base de données de test par la nouvelle | ||
+ | * remplacer les données par les nouvelles | ||
+ | * tout cela via le fichier config.php de Nextcloud | ||
+ | |||
+ | Les étapes dans l' | ||
+ | |||
+ | - Stopper nginx | ||
+ | - S' | ||
+ | - Sauvegarder les données (une copie des fichiers de la base données n'a pas réussi, à cause de versions de MySql/ | ||
+ | - Transférer les sauvegardes vers le nouveau disque (rsync a été bien utile) | ||
+ | - Recréer la table dans la base de données (mysql) | ||
+ | - Donner les droits à l' | ||
+ | - Modifier le fichier config.php par rapport au nouveau répertoire `data` | ||
+ | - Vérifier avec php occ que la connexion à la base de données est correcte | ||
+ | - Relancer nginx et tester ! | ||
+ | |||
+ | Normalement il est possible de se logger et d' | ||
+ | |||
+ | Les 4 CPU sont montés à 100% pendant 5 minutes durant le premier login, mais cela n'a pas empéché la navigation sur le site Nextcloud. La swap, auparavant proche de 0Mo, est désormais utilisée (88% des 100Mo parfois). | ||
+ | |||
+ | Ménage : | ||
+ | |||
+ | * suppression base de données serveur de test | ||
+ | * suppression des données de test | ||
+ | |||
+ | ====== Ressenti à l' | ||
+ | A l' | ||
+ | |||
+ | La mise à jour du Nextcloud (21.0.4) via l' | ||
+ | |||
+ | * rafraîchir la page, et ne pas cliquer " | ||
+ | * parfois se reconnecter sur l' | ||
+ | |||
/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