Un ensemble de notes, principalement pour moi.
Ansible
Quand on a le temps, c’est toujours bien de se poser et d’essayer d’écrire un
role ansible (ou autre outil de déploiement) pour un service qu’on met en place.
Même si c’est pour se rendre compte que tout rendre idempotent et facile
prendrait beaucoup de temps, ça permet de noter les étapes et différents
problèmes possibles.
J’ai commencé à le faire sur https://git.mathieui.net/ansible-tools lors
de la réinstallation toute fraîche de mon serveur principal (je ne
recommande pas leur utilisation pour autant).
Certaines choses (les données, la conf un peu sensible, les clefs) ne sont
pas très pratiques à intégrer dans un role ansible, mais beaucoup d’autres
choses peuvent l’être.
Borg
Faire des backups c’est bien. Avoir des backups hors-site c’est mieux.
Au lieu de transférer ses données de serveur en serveur, créer un backup
pendant la maintenance, puis lancer borg extract sur le nouveau serveur
pour les restaurer me semble être une bonne pratique.
J’utilise les storage box hetzner pour stocker mes données, car le prix
au GB/TB n’est pas très cher, ils fournissent un accès SFTP, et le niveau
de facturation augmente tout seul si les données grossissent plus que le
niveau de facturation actuel. Idéalement il est également répliqué en local, pour
une vitesse de restauration et des temps d’accès biens meilleurs.
Si on a de la place en rab, on peut facilement fournir un accès ssh limité
à un ami qui lui permettra de stocker ses données tout en ne risquant
pas trop de compromettre la machine.
Histfile
À chaque fois que j’oublie de mettre un historique infini à mon bash ou zsh,
je m’en mords les doigts quelques mois/années après quand des commandes qui
sont dedans disparaissent par dépassement d’historique. Très pratique pour
retracer ses pas, surtout quand c’est assorti de la date comme dans zsh.
Syncthing
Syncthing est un outil formidable qui permet de partager des documents entre
plusieurs machines de confiance (ou non). Il permet par exemple de synchroniser
le dossier de photos de son téléphone de façon passive, ou encore de partager
un fichier keepass entre plusieurs personnes, ou de faire un backup de son dossier
pass.
Docker
Si un logiciel que vous comptez utiliser propose un seul moyen d’installation
et que ce moyen est docker, c’est probablement que ses auteurs sont incapables
de déterminer de quoi il dépend et de l’exprimer clairement, donc fuyez.
Mais Docker peut se réveler très pratique pour isoler facilement certains
services du reste du système (pensez à Podman toutefois). J’ai par exemple
une machine avec docker + traefik + docker swarm qui me permet de déployer
des services à la demande sur un wildcard dns et d’avoir traefik qui se
débrouille pour récupérer le certiicat et faire passe-plats.
BTRFS
J’avais pour coutume d’utiliser ext4 partout, mais BTRFS a quand même des
fonctionnalités très pratiques, pour une stabilité maintenant plutôt éprouvée :
- Le copy-on-write
- Les snapshots
- Checksum des fichiers
- Les subvolumes (permet d’avoir deux volumes logiques sur la même partition,
tout en partageant l’espace de stockage)
- La compression (pour gagner de la place, activation possible sur données
que l’on sait compressibles)
- L’envoi/réception de partitions/snapshots à travers le réseau ou dans un shell
Mine de rien, quand l’espace disque et la bande passante sont suffisants,
c’est très plaisant de pouvoir juste transférer le filesystem à travers
ssh. Contrairement à la même chose avec dd, seulement les données présentes
sur le disque sont transmises !
Chiffrement de disque
Un certain nombre d’options faciles d’accès de nos jours permettent d’insérer
un serveur ssh minimaliste tel que dropbear ou tinyssh dans l’image du noyau,
afin de déverouiller la machine a distance, une fois authentifié via une clef
ssh.
Sous Arch, mkinitcpio-systemd-tool permet de le faire assez simplement,
j’y reviendrai dans un article futur.
P. S.: attention toutefois car sans bricolage, ce sont vos clefs ssh
de l’hôte qui se retrouvent à l’intérieur de l’image du noyau, donc en
clair dans /boot ! (mais dans tous les cas ça reste mieux que l’intégralité
du système en clair)
P. S. 2: Si le processeur ne supporte pas le déchiffrement matériel d’AES,
c’est probablement une mauvaise idée.
SSD
Arrêtez les disques durs, sauf si vous avez besoin de beaucoup de stockage.
C’est lent et le prix des SSD ne justifie plus de s’en passer (on parle
de 240GB pour 30€ en neuf à l’heure actuelle).
DNSSEC
Si on accepte l’utilité de DNSSEC, alors il ne faut pas oublier de mettre en
place un renouvellement automatique, ainsi que vérifier que la réplication
et la notification de mise à jour de zone fonctionne, sinon on a plein
de problèmes bizarres d’interconnexion et on a du mal à savoir d’où ça vient.
Monitoring
Mettre en place prometheus, grafana, et node-exporter ne coûte rien, et ça
permet d’avoir un aperçu rapide (ou détaillé) de la santé de ses serveurs.
J’utilise à la fois celui-ci pour avoir un aperçu général, et celui-là
pour un aperçu détaillé en sélectionnant la machine.
En plus de ça, il est intéressant de mettre en place des exports pour les
données applicatives quand elles sont disponibles, c’est le cas par exemple
pour prosody.
(Si vous en avez besoin vous pouvez aussi regarder pour les logs avec des SIEM
ou autres bases de données comme ELK ou Loki, mais c’est en général trop
prenant pour que ça vaille le coup si l’infra est petite)
Pare-feu
Je n’aime pas trop iptables, mais nftables est disponible depuis un moment
et sa configuration de base est assez simple, et à mon sens plus digeste.
Paiement
Quand on est chez Hetzner, il faut bien prendre en compte le fait que leur
système de paiement par carte bleue est défaillant, et utiliser leur
prélèvement bancaire. L’alternative est de se retrouver tous les 1 à 2 mois
à devoir aller payer manuellement pour qu’ils rétablissent l’accès réseau
au serveur parce que vous avez raté les mails de relance.
Boards ARM
Une microSD vous lâchera toujours au mauvais moment, de façon plus ou moins
perceptible. Il faut donc toujours avoir son système sur un disque dur ou
SSD associé, quitte à avoir /boot sur la carte mémoire si le SoC ne supporte
pas le boot USB (ou SATA).
P. S. : Le raspberry pi 4 est une bonne machine, mais il faut lui acheter
un moyen de dissipation, que ce soit un boîtier passif (joli et silencieux),
ou un boîtier/heatsink actif (possiblement joli mais plus bruyant).
P. S.2 : La plupart des SoC ne reçoivent pas assez de jus pour faire tourner
un disque dur ou un SSD, il faut des boitiers avec l’alimentation qui vient
d’ailleurs.