Outils pour utilisateurs

Outils du site


informatique:installation_et_securisation_d_un_serveur_nextcloud_et_nginx_sur_un_raspberrypi_2_et_disque_ssd

Ceci est une ancienne révision du document !


FIXME Cette page est en cours de rédaction !

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 :

  • serveur de sauvegarde de mes documents, séparé de ma machine principale (auparavant mon serveur Nextcloud de sauvegarde tournait sur ma tour, et servait à synchroniser ma tour et mon portable). En cas de défaillance de la tour, la plupart des données étaient perdues
  • soulager mon Nextcloud chez Ouvaton
    • dont l'espace est limité,
    • nombreux messages d'alertes et déconnexions (absence de cron ?)
    • absence d'accès la une console pour executer la commande 'occ'
  • éventuellement remplacer mon Nextcloud chez Ouvaton
  • apprendre !
  • utiliser la carte RaspberryPi 2 achetée il y a déjà 8 ans ! et du matériel d'occasion/réutilisé

Quelques difficultés ou apprentissages à faire :

  • accès uniquement en console
  • nginx plutôt qu'Apache, car il parait que Nginx est plus adapté au RPi2, mais pas forcément à Nextcloud (il y a débat mais ce n'est pas le sujet)
  • sécurisation d'une machine
  • certificat HTTPS
  • rediriger un sous-domaine vers ma box
  • en cas de défaillance du nouveau serveur, il n'y a toujours pas de sauvegarde prévue

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. Relecture de ces blogs, en ayant en tête que ma RPi2 n'est pas aussi puissante que les derniers modèles.

Installations

Construction du système :

  • boot et système sur carte SD (ext4),
  • données et base de données sur SSD (ext4)

Installation Raspbian OS

Rien de particulier à signaler sur cette partie.

FIXME à date de rédation et réalisation (mars 2021) la version est ???

Fichiers de configuration sur la clé au premier démarrage : SSH, Wifi (FIXME liens vers sites tiers pour explications)

Installation serveur nginx

FIXME décrire particularités RPi2, nginx

Installation serveur Mysql/MariaDB

Installation Nextcloud

FIXME décrire particularités RPi2, nginx

A date : Nextcloud 21

Tests de performances

FIXME à faire

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).

Optimisations

FIXME à écrire

Système de fichiers EXT4

Pour diminuer le nombre d'accès (le disque de données est un SSD) FIXME à réaliser

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

Ecriture des journaux systèmes en décalé

FIXME à essayer L'idée est de limiter le nombre de cycles sur la carte flash microSD

Sécurisation

FIXME

- [ ] Penser à filtrage par MAC adress pour l'accès au serveur

Transfert serveur "local" vers le nouveau 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 :

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'ordre (en suivant le guide proposé par Nextcloud) :

  1. Stopper nginx
  2. S'assurer que l'ancien serveur a la même version de Nextcloud que le nouveau
  3. Sauvegarder les données (une copie des fichiers de la base données n'a pas réussi, à cause de versions de MySql/MariaDB différentes : la base de données a du être sauvegardée et restaurée via mysqldump et mysql).
  4. Transférer les sauvegardes vers le nouveau disque (rsync a été bien utile)
  5. Recréer la table dans la base de données (mysql)
  6. Donner les droits à l'utilisateur mysql pour accéder à la table
  7. Modifier le fichier config.php par rapport au nouveau répertoire `data`
  8. Vérifier avec php occ que la connexion à la base de données est correcte
  9. Relancer nginx et tester !

Normalement il est possible de se logger et d'accéder aux fichiers ! (cela a été le cas, moyennant quelques oublis de ma part, et non respect des étapes ci-dessus).

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
/var/www/vhosts/kadavrhusky.net/httpdocs/data/attic/informatique/installation_et_securisation_d_un_serveur_nextcloud_et_nginx_sur_un_raspberrypi_2_et_disque_ssd.1633442815.txt.gz · Dernière modification : 2021/10/05 16:06 de Pascal Delrot