Mon PC dans le Cloud

Comme vous le savez sans doute si vous me suivez sur Twitter, ou si vous avez lu l’épilogue de ma série de billet “25 ans dans une startup”, je travaille en région parisienne trois jours par semaine et je suis deux jours en télétravail dans ma province profonde (mais belle). Je précise que cette organisation a été mise en place AVANT le confinement de mars 2020, car j’ai la chance d’avoir un employeur moderne. J’en ai fait le bilan dans ce billet consacré au télétravail.

Mon employeur a mis à ma disposition un ordinateur portable qui me suit partout, et j’ai un ordinateur fixe personnel chez moi dans ma province profonde (mais belle) ET un ordinateur personnel chez moi dans ma “coquette petite studette en souplex” de région parisienne. J’ai également installé une VM privée sur mon ordinateur professionnel.

Cela fait donc 3 ordinateurs privés sur lesquels je veux retrouver les mêmes outils, les mêmes habitudes, les emails déjà lus, les mêmes partages de fichiers, etc.

Tout allait bien dans le meilleur des mondes, mais j’étais un peu agacé parfois de devoir synchroniser à la main une configuration, installer trois fois un nouveau logiciel, et maintenir des partages de fichiers en toute sécurité. N’était-il pas possible de simplifier un peu tout cela ?

J’écoutais, de plus en plus séduit, l’appel des sirènes du Cloud. Je voyais passer dans ma veille technologique des appels appuyés en direction des gamers pour qu’ils basculent leurs configurations vers des solutions telles que Google Stadia, Nvidia Geforce Now, xCloud de Xbox ou PlayStation Now. Des gamers ! Alors, pourquoi pas un petit PC perso avec sa petite configuration aux petits oignons ?

Oui mais et ma vie privée dans tout cela ? Et le coût ? Et la sécurité ? Après tout, le Cloud, ce n’est rien d’autre qu’un datacenter géré par quelqu’un d’autre et accessible de partout depuis un accès internet. Il faut se poser les bonnes questions : qui fera les sauvegardes, les mises à jour de sécurité, les montées de version des logiciels et des OS, qui sera “root” sur mes données ?

Autant de questions auxquelles il m’a bien fallu répondre pour l’hébergement de ce blog : après avoir testé l’autohébergement d’un WordPress sur YunoHost, j’ai préféré et choisi la location d’un VPS chez OVH, avec son offre Kimsufi à 3,59€ par mois. Je fais régulièrement un backup (et des tests) sur le WordPress de mon YunoHost. Je présenterai mon usage de la fantastique solution YunoHost dans un billet qui lui sera dédiée.

Oui MAIS : faire héberger un blog, ce n’est pas tout à fait la même chose que de faire héberger la totalité d’un ordinateur personnel… Et après avoir étudié les coûts, les solutions proposées, les risques, le coût des sauvegardes et la sécurité, voici ce que j’ai choisi.

A cause des coûts, j’ai abandonné la notion de “datacenter géré par quelqu’un d’autre” pour ne garder que celle de “accessible de partout depuis un accès internet”. Comme les solutions de type TeamViewer demandent de confier la partie sécurité à quelqu’un d’autre, j’ai donc choisi l’autohébergement complet de ma solution :

J’ai viré de mon ordinateur professionnel, la VM privée que j’y avait installé. J’ai entièrement réinstallé l’ordinateur personnel de ma coquette studette souplex pour n’y laisser que le système d’exploitation (Linux Mint, mais cela aurait aussi bien pu être Windows). Je n’ai conservé qu’un seul ordinateur personnel : celui qui se trouve chez moi.

J’y ai installé le logiciel NoMachine qui est ce que j’ai trouvé de plus efficace pour gérer deux écrans, les périphériques USB et le son à distance.

J’ai configuré le Wake On Line du PC de la manière suivante :
– dans le BIOS, j’ai activé “démarrage sur périphérique PCI-E” ;
– dans l’OS Linux Mint, j’ai activé le WoL avec la commande : sudo ethtool -s enp3s0 wol g

Depuis un PC distant, j’accède de manière chiffré à mon réseau privé grâce à OpenVPN en me connectant sur mon serveur NAS (qui fait tourner le service VPN), puis dans ce canal sécurisé je me connecte en ssh à ma VM Debian (voir le billet “Mon matériel”)

J’allume (depuis cette VM) mon PC perso avec la commande : wakeonlan -i IP -p 9 MAC où IP est l’adresse de broadcast de mon réseau privé et MAC l’adresse MAC du PC perso que je veux allumer.

Une fois démarré, j’y accède avec le client NoMachine (à travers le canal chiffré OpenVPN), et j’utilise mon “PC dans le Cloud” 🙂

Comme il est sous GNU/Linux, je peux si je veux le laisser allumer plusieurs jours sans surprise, si par exemple je lance sur ma carte graphique des calculs durant plusieurs jours.

Quelques remarques avant de vous laisser la parole en commentaire (je suis curieux de connaître vos solutions) :
– la solution NoMachine est vraiment puissante et efficace dans sa gestion des débits internet concernant les graphismes. Seul défaut relevé pour l’instant, elle ne gère pas ma Yubikey USB.
– l’accès par OpenVPN / ssh pour WoL / client NoMachine fonctionne également sous Android ou sur iPhone (pour la commande ssh sur iPhone, j’utilise l’excellente application a-shell).

Et vous, comment accédez-vous à un PC privé à distance ?

Source image https://www.pinterest.fr/pin/471963235926834775

Dialogue avec le support Free

A mon avis, ce n’est plus une bonne idée de vouloir autohéberger son propre serveur de messagerie, tant il est difficile de garantir son bon fonctionnement selon les bonnes pratiques (qui évoluent très vite). Mais c’est possible. Et j’ai voulu m’y atteler pour une raison que j’expliquerai dans un autre billet.

L’une des nombreuses conditions pour disposer d’un serveur de messagerie pleinement accepté par ses petits camarades serveurs-de-messagerie, est de pouvoir mettre en place un reverse DNS. Et cela tombe bien, comme Rodolphe, je suis abonné Free, et ce FAI permet via son interface de mettre en place un reverse DNS.

Enfin, c’est ce que je croyais…

Après avoir paramétré le reverse DNS correspondant à mon besoin, dans l’interface Free de mon abonnement FreeBox, et après avoir attendu plusieurs jours pour être certains que les informations se soient bien propagées, le reverse DNS n’était toujours pas fonctionnel : les différents outils à ma disposition me donnent toujours comme reverse W-X-Y-Z.subs.proxad.net, où W.X.Y.Z est l’adresse IPv4 fournie par Free pour mon point d’accès.

Cherchant à en savoir plus, je me tourne vers internet et je constate que pas mal de personnes semblent avoir le même problème que moi…

Comme il n’est plus possible d’avoir une réponse par les canaux habituels des années 90, je m’adresse au support par Twitter en Direct Messages. Je vous livre le dialogue in extenso :

Bonjour, le reverse DNS n’est pas fonctionnel, alors qu’il est activé dans mon interface depuis 15 jours… Je lis dans de nombreux forums que ce service ne fonctionne pas correctement, est-ce exact ? Comment le faire fonctionner quand on autohéberge un serveur de messagerie ?

Ligne Fibre Optique
NRO : XXXXX
Adresse IP : W.X.Y.Z
Préfixe IPv6 : AAAA:BBBB:CCCC:DDDD::/64

Identifiant : fbxXXXXXX
N° de téléphone Freebox : XX XX XX XX XX
N° de fax : XX XX XX XX XX

Le reverse DNS effectif est WW-XX-YY-ZZ.subs.proxad.net

Ce qui n’est pas ce que j’ai paramétré dans l’interface Freebox

bonjour,
edirection DNS [ma conf] vers WW.XX.YY.ZZ (Actif)
Reverse DNS WW.XX.YY.ZZ vers [ma conf] (Actif)

Pour information, nous n’effectuons aucun support à ce sujet.

Bonne journée

Je pense que vous n’avez pas compris la question, car votre réponse ne fait qu’indiquer ce que j’ai moi-même configuré (je suis donc au courant de ce que j’ai configuré) ET me dire que c’est actif (ce que je sais puisque c’est ce que l’interface de la Freebox indique).

Ma question est donc : pourquoi est-ce que ce n’est pas fonctionnel ?

Nous n’effectuons aucun support à ce sujet.
Bonne journée

Vous m’indiquez que la edirection DNS est : [ma config]

Vous m’indiquez que le reverse DNS est : [ma config]

Je suis d’accord avec vous.

MAIS lorsque l’on teste le reverse DNS effectif depuis les ordinateurs du monde entier, la réponse effective est : WW-XX-YY-ZZ.subs.proxad.net

Ce qui n’est PAS le configuration demandée ET indiquée comme “Actif” sur votre interface Freebox

DONC il y a un bug CHEZ VOUS

Pouvez-vous le corriger et rendre ce service FONCTIONNEL ?

Merci

Je ne comprends pas que votre réponse puisse se limiter à “nous n’effectuons aucun support à ce sujet” : je vous signale un dysfonctionnement, et je demande une réparation d’un service dû qui ne fonctionne pas, je ne demande pas un support !

C’est actif, donc fonctionnel. Bonne journée

Je n’ai eu ensuite plus aucune réponse à mes sollicitations…

Une carte n’est pas le territoire qu’elle représente – Alfred Korzybski

[EDIT du 20/02/2020] Un lecteur m’informe sur Twitter qu’un ticket de bug a été ouvert chez Free cet été sur ce problème, puis fermé avec la réponse suivante :

Close par Thibaut Freebox (Thibaut Freebox)
Thursday  1 August, 2019 15:01:46
Raison de clôture :  Ne sera pas implémenté
Commentaires supplémentaires de clôture :
Ne sera pas implémenté POUR L'INSTANT (période de transition adsl-fibre et ipv4-v6)
Ce sera ré-implémenté à l'avenir, mais non : je n'ai pas de date pour cela.

Remplacer un disque dans un soft RAID GNU/Linux

Hier, j’ai eu une petite frayeur en constatant qu’un test automatique SMART (long selftest) rencontrait une erreur de lecture sur l’un des disques durs de mon NAS de sauvegarde. Celui-ci apparaissait en SMART rouge sur l’interface OpenMediaVault…

Comme c’est un NAS DIY, je n’ai pas de procédure automatique en cas de panne de disque dur : il faut intervenir à la main. Je pose ici la procédure, pour la partager et m’en souvenir, car quand un disque tombe, les autres vont commencer à faire pareil…

Le disque en panne est /dev/sdb, et je suis dans le cas d’un RAID5 où je peux retirer un disque du RAID, sans perdre de données. Le NAS ne contient que des sauvegardes, donc je peux perdre toutes les données, mais j’aime mieux pas (10 To de sauvegardes à reconstituer pendant plusieurs semaines, mon cœur ne tiendrait pas).

Dans un terminal ouvert sur le NAS en ssh sous root (ssh root@X.X.X.X), utilisez les commande suivantes (il faut adapter les commandes selon votre configuration. VOUS DEVEZ COMPRENDRE CHAQUE COMMANDE AVANT DE LA LANCER. Une erreur a pu se glisser dans la suite de commandes que j’indique, je décline toute responsabilité, SGDZ, pas taper) :

Je déclare le disque en panne (SMART ne l’a pas fait), puis je le retire du RAID5 :

mdadm --manage /dev/md0 --fail /dev/sdb
mdadm --manage /dev/md0 --remove /dev/sdb

Je constate dans l’interface OpenMediaVault que le RAID est passé en mode dégradé (il ne l’était pas encore car le problème que j’ai détecté est un problème SMART).

J’arrête le NAS et je remplace hors tension le disque défectueux par un disque de même taille, judicieusement disponible à cette occasion (spare à froid).

Je redémarre le NAS et constate que l’interface OpenMediaVault ne me propose pas d’insérer dans le RAID le nouveau disque dur, sans doute parce que celui-ci n’est pas correctement préparé. Je vais le préparer avec les commandes suivantes :

Je me reconnecte root sur le NAS avec un terminal via ssh, pour lancer la commande gdisk :

gdisk /dev/sdb

Et là, horreur malheur, j’ai les informations suivantes :

GPT fdisk (gdisk) version 1.0.1

Caution: invalid backup GPT header, but valid main header; regenerating backup header from main header.

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: damaged
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk verification and recovery are STRONGLY recommended.

Dans l’interface de la commande gdisk, je passe en mode “Expert command” en tapant “x”, puis je supprime les structures GPT et nettoie MBR avec la commande “z”:

Command (? for help): x
Expert command (? for help): z
About to wipe out GPT on /dev/sdb. Proceed? (Y/N): Y

GPT data structures destroyed! You may now partition the disk using fdisk or other utilities.

Blank out MBR? (Y/N): Y

Je quitte gdisk avec la commande “w”, puis je relance gdisk pour vérifier que tout est bon :

# gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present

Creating new GPT entries.

Command (? for help): q

J’ajoute enfin le nouveau disque dans la grappe RAID :

mdadm --manage /dev/md0 --add /dev/sdb

Je vérifie qu’il n’y a pas d’erreur bizarre, avec :

fdisk -l  # <-- le signe avant le croisillon est un L minuscule

Je vérifie que le RAID se reconstruit correctement, dans l’interface OpenMediaVault ou avec la commande :

cat /proc/mdstat

Je prie pour qu’aucun autre disque ne lâche dans les heures suivantes…

Une fois tout rentré dans l’ordre, je n’oublie pas de reprogrammer un selftest SMART de type long sur le nouveau disque, dans l’interface OpenMediaVault.

J’espère que ce billet pourra faire gagner du temps à quelques uns.

Ceinture et bretelles