Mon serveur (auto-hébergé avec un Orange Pi 2+) avait un petit peu du mal à rester stable, sûrement dû au fait que je lui demandait trop de ressources en ayant ajouté un nœud Duniter (mirroir de la blockchain de la monnaie libre Ğ1) aux applications déjà en place. Cela faisait longtemps que je songeais à essayer de découvrir les nouveaux Raspberry Pi 4 qui permettent d’avoir plus de mémoire ram, alors pendant le confinement, j’ai craqué et j’en ai commandé un avec 4Go de ram.
Comme le Raspberry Pi 4 chauffe, j’ai aussi commandé un ventilateur (indispensable apparement)…

Je ne me suis pas précipité pour migrer mon serveur en le recevant, car le nouveau Raspberry Pi 4 ne supporte que une version de Debian 10 (Buster) et la communauté YuNoHost était justement en plein travail de développement pour rendre compatible le plus possible la migration de la version Debian 9 (Stretch) de YuNoHost vers cette version. Autant dire que c’était un travail de longue haleine de rendre compatibles aussi toutes les applications plus au moins maintenues et les dépendances qui ne sont pas simples à résoudre (les évolutions des dépendances PHP par exemple qui sont un vrai casse-tête).
Mais tant mieux car dès que certains tests étaient en cours pour des versions Alpha puis Bêta, j’ai installé une version de Raspian Lite (qui a changer de nom Raspberry Pi 0S maintenant) , puis tester l’installation de la version instable (elle vient de passer en stable après quelques mois de travail acharné) de YuNoHost.
Rappel :
on copie l’image .img sur la carte SD. Souvent après la copie il faut penser à redimensionner la partition pour l’étendre à toute la carte SD (il est aussi possible de le faire après la copie avec Gparted), cela est proposé aussi en démarrant le Raspberry dans les configurations du système Raspbian avec la commande:

$ raspi-config

Ensuite on peut en profiter pour configurer le clavier azerty, le zone horaire, changer le mot de passe root, etc… (ici un lien exhaustif de choses à faire (à adapter, tout n’est pas considérer pour ce cas) Raspberry Pi – Installation en mode serveur.
Pour cette période de tests (attention, c’était durant la période de test de cette version de Yunohost et ce n’est plus la démarche à suivre !), les commandes d’installation étaient en root:

# curl https://raw.githubusercontent.com/YunoHost/install_script/buster-unstable/install_yunohost | bash

Mise à jour : Comme la période d’essais est terminée et la version de Yunohost 4 aboutie, je pense que la procédure n’est plus la même, il faut suivre plutôt la procédure d’installation manuelle avec la commande en root:

# curl https://install.yunohost.org | bash

(Si curl n’est pas installé sur votre système, il vous faudra peut-être l’installer avec apt install curl. Autrement, si la commande n’affiche rien du tout, vous pouvez tenter apt install ca-certificates)
Ou bien utiliser une image préinstallée de Yunohost pour Rpi ici : https://yunohost.org/#/images comme le préconise la documentation de Yunohost : Installer YunoHost sur Raspberry Pi.
Ensuite, c’était une post-installation de YuNoHost… (voir https://yunohost.org/#/postinstall)
Au début des périodes de tests, certaines applications ne fonctionnaient pas encore, comme Nextcloud par exemple… Donc je n’ai pas tout de suite migrer mon serveur, mais juste participer aux tests et aux évolutions de ce développement. Je gardais donc mon serveur sur le Orange Pi et testait le Raspberry (avec un autre nom de domaine) en local sans ouvrir les ports à l’extérieur pour attendre le moment propice.
À partir du moment où déjà Roundcube, l’application de boîte mail et le site WordPress semblait compatibles, j’ai fait des backups de mon ancien serveur et tenté de les restaurer sur le nouveau et ça fonctionnait. À partir de là, je me suis décidé à garder le Raspberry Pi 4 comme principal serveur. Bien plus réactif et fluide tout de même que l’ancien.
Une commande pour avoir le bon nom de domaine configuré :

# yunohost tools maindomain -n rodinux.fr

Puis comme je bataille depuis plusieurs années avec les adresses mails qui étaient blacklistées par certaines adresses pour la bonne raison que le Reverse DNS configuré avec ma box Free n’était pas correct, problème récurrent avec les  box Free (c’est à dire que mon nom de domaine rodinux.fr correspondait à une adresse IP du style: xx-xx-xx-xxx.subs.proxad.net comme expliqué par exemple sur cette discussion), je me suis donc décidé à configurer un service VPN surtout que je disposais déjà d’un abonnement VPN chez Ilyse. J’ai pu leur demander me configurer un Reverse DNS propre pour les IPs (IPv4 et IPv6). Une application existe à cet effet sur YuNoHost, Vpn Client. Le gros avantage aussi pour mon cas, c’est de pouvoir connecter mon serveur à n’importe quelle box puisque parfois j’ai des coupures internet avec une ligne très endommagée dans la forêt que je dois parfois réparer moi-même… Du coup mon serveur peut être nomade comme la Brique Internet, que du bonheur ! Si je dois me déplacer et que je sais qu’un orage risque de faire sauter le compteur chez moi, je n’ai plus qu’à emmener mon serveur avec moi pour le brancher ailleurs.
J’ai ensuite ajouter un disque dur externe aux Raspberry Pi 4 pour mettre le système dessus et libérer la carte SD, puisque les écritures sur la carte SD saturent en écriture de cache et fichiers temporaires l’espace de la carte SD et peuvent avec le temps l’altérer, puis aussi pour avoir plus d’espace. J’ai opté pour un disque dur HDD (un SSD serait plus rapide et performant, mais il y a aussi les problèmes d’écritures des fichiers temporaires et du cache sur ces disques qui sont délicats dans la durée) avec une alimentation externe n’étant pas sûr que l’alimentation du Raspberry est assez de puissance pour lui et pour le disque dur…
Toujours quelques configurations ensuite pour optimiser tout cela (je vais essayer de me rappeler en vrac, cela date un peu)…
Pour l’utisateur admin de yunohost, j’ai du faire quelques manips, je ne sais plus très bien pourquoi :

# yunohost user ssh allow admin
# yunohost user ssh add-key admin
# chown admin: /home/admin/
# chown admin: /home/admin/*

Pour le disque dur externe, j’ai préparer une partition en ext4 et une partition swap.
Copié le système sur la partition / sur la partition en ext4 du disque dur :

# dd if=/dev/mmcblk0p2 of=/dev/sda2 bs=32M conv=noerror,sync

Redimensionner la partition pour qu’elle prenne toute la place libre:

e2fsck -f /dev/sda2
resize2fs /dev/sda2

pour la partition boot, une sauvegarde :

# cp /boot/cmdline.txt /boot/cmdline_old.txt

Puis on créer le fichier de démarrage :

# nano /boot/cmdline.txt

Ici j’ai édité de cette façon ce fichier avec un délai de 32ms avant de monter le disque dur externe car sinon j’avais des soucis au démarrage…

console=serial0,115200 console=tty1 root=/dev/sda2 boot_delay=32 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

On monte la nouvelle partition root:

# mount /dev/sda2 /mnt

On édite le montage des partitions :

# nano /mnt/etc/fstab

Ici j’ai ajouté la partition / et swap pour l’échange de ram et enlever le reste (j’expliquerai ensuite d’autres choses pour ce qui est la mémoire ram)

proc /proc proc defaults 0 0
PARTUUID=738a4d67-01 /boot vfat defaults 0 2
#PARTUUID=738a4d67-02 / ext4 defaults,noatime 0 1
/dev/sda2 / ext4 defaults,errors=remount-ro 0 1
# swap file added
/dev/sda1 none swap sw 0 0
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for tha

Éditer aussi le fichier /boot/cmdline.txt qui va se trouver sur le disque dur externe de la même façon pour booter correctement:

# nano mnt/boot/cmdline.txt

avec toujours ces lignes (voir plus haut)

console=serial0,115200 console=tty1 root=/dev/sda2 boot_delay=32 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

Un reboot voir si tout va bien…
Pour la gestion de la mémoire :
Je me suis un peu perdu peut-être avec les différentes sources à ce sujet.
J’ai voulu désactiver dphys-swapfile avec ces commandes:

$ sudo dphys-swapfile swapoff
$ sudo dphys-swapfile uninstall
$ sudo chkconfig dphys-swapfile off
$ sudo update-rc.d dphys-swapfile remove

Et j’ai aussi ajouter zram avec un script de cette façon:

$ git clone https://github.com/foundObjects/zram-swap.git
$ cd zram-swap && sudo ./install.sh

et éditer le fichier /etc/sysctl.conf avec ces lignes:

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

Ces commandes viennent de cette source: https://haydenjames.io/raspberry-pi-performance-add-zram-kernel-parameters/
Mais peut-être que je me suis emmêller les pinceaux ??
Résultats:
Sinon, la version Buster (Debian 10) est maintenant la nouvelle version stable YuNoHost ! J’ai pu remettre en plus Nextcloud, ZeroBin, OpenSondage et Hot Spot Wifi qui permet de créer un point de connexion wifi au VPN !
Il n’y a pas encore à l’heure où j’écris cet article une image iso pour le Raspberry pour un soucis technique qui je pense la communauté active saura résoudre…
J’ai aussi ajouté un moment un nœud Duniter quelques semaines, mais décidément, les Raspberry sont un peu fragile si trop de ressources sont demandées, mon serveur tombait dans les choux avec les services php-fpm, j’ai fini par l’enlever.
Je tiens encore à remercier la communauté YuNoHost pour l’énorme boulot qu’ils ont déployé pour faciliter la migration des serveurs avec leurs applications vers Debian 10. Les aides de la communauté sur le forum sont très actives et on ne se sent jamais seul devant un soucis technique.
Mise à jour : depuis que la version Yunohost 4 est stable, j’ai du résoudre des instabilités en éditant le fichier /etc/apt/sources.list.d/yunohost.list avec cette ligne pour revenir à la source stable de cette version:

deb http://forge.yunohost.org/debian/ buster stable

Suivi de mises à jours du système bien sûr !

YuNoHost migration vers un Raspberry Pi 4
Tagged on:         

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.