Ceci est une ancienne révision du document !
Table des matières
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.
à date de rédation et réalisation (mars 2021) la version est ???
Fichiers de configuration sur la clé au premier démarrage : SSH, Wifi ( liens vers sites tiers pour explications)
Installation serveur nginx
décrire particularités RPi2, nginx
Installation serveur Mysql/MariaDB
décrire particularités RPi2, nginx
https://docs.nextcloud.com/server/19/admin_manual/installation/nginx.html
Installation Nextcloud
décrire particularités RPi2, nginx
A date : Nextcloud 21
Tests de performances
à 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
à écrire
Système de fichiers EXT4
Pour diminuer le nombre d'accès (le disque de données est un SSD) à réaliser
Utilisation de la swap
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é
à essayer L'idée est de limiter le nombre de cycles sur la carte flash microSD
Sécurisation
- [ ] 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) :
- Stopper nginx
- S'assurer que l'ancien serveur a la même version de Nextcloud que le nouveau
- 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).
- 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'utilisateur mysql pour accéder à la table
- 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'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