💾 Archived View for gmi.valvin.fr › gemlog › 2022 › 11 › 17 › migration-serveur-on-avance captured on 2023-04-19 at 22:32:23. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
Publié le 17-11-2022
🏷️ migration, auto-hébergement
Depuis quelques semaines, je tente d'appliquer une simplification de mon infrastructure pour mon auto-hébergement. Comme je l'indiquais dans mon précédent billet, utiliser kubernetes pour mon besoin n'était pas très judicieux. Et donc voici l'avancement de cette nouvelle migration.
Tout d'abord, j'ai constaté qu'économiquement un serveur dédié me permettait d'avoir plus de ressources que plusieurs VM. Même si je perds une certaine flexibilité, j'ai l'impression (peut être à tort) que ça vaut le coup. J'ai donc choisi un serveur Kimsufi KS-17 qui va héberger tous mes services. Je n'ai pas vraiment besoin d'autant de ressources, surtout que je n'héberge plus mon instance Friendica, mais bon, ça ouvre des possibilités ! Je dispose donc de 4 coeurs pour 8 threads et souvent 1vCPU d'une VM = 1 thread ce qui me fait "8 vCPU dédiés". Côté mémoire, 32 Go de RAM et côté disque 2 x 460 Go SSD en raid 1 soit 460 Go de stockage.
Pour garder un peu de fléxibilité sans pour autant mettre en place un hyperviseur, j'ai choisi d'utiliser LXD [1] avec des containers LXC. Je sépare principalement les bases de données, l'execution des applicatifs et la partie réseau (proxy). Principalement, je déploie des containers debian mais pour l'éxécution des applications j'ai choisi ubuntu afin d'avoir des paquets plus à jour.
Pour la partie base de données, il s'agit d'une PosgreSQL mais également un serveur Redis.
Pour la partie éxécution des applicatifs, vu que je viens de kubernetes, la plupart d'entre eux fonctionnent avec des containers "docker". J'ai donc tenté de déployer ces applicatifs en "rootless" avec podman + systemd (avec enable-ligner pour l'utilisateur). Cependant, je ne referais pas la bêtise d'utiliser un container pour une application qui n'est pas réellement prévu pour ça et lui ferait un container LXC dédié.
Pour la partie réseau, je vais utiliser HAproxy pour la partie http(s) et j'espère pouvoir l'utiliser également pour les autres protocoles même si cela semble plus complexe (ssh, gemini...). La génération de certificat est faite avec Letsencrypt (certbot) et un challenge DNS avec Gandi.
Pour déployer tout ça, j'ai créé un container d'outillage avec Ansible. Je reviens sur ce que j'utilisais avant ma migration Kubernetes. Dans l'état actuel des choses tout n'est pas déployer avec Ansible, notamment toute la configuration HAproxy et celle de Postgres hors création des bases de données et utilisateurs. J'ai passé un peu de temps sur la partie podman + systemd et ça vallait le coup car maintenant je n'ai pas grand-chose à faire pour déployer les nouvelles briques.
Je n'avais pas ce service auparavant mais ça me semble maintenant indispensable, j'ai déployé ma propre instance Gitea. Initialement je pensais m'orienter vers Gogs, mais il y a quand même une grosse différence en termes de fonctionnalité sans pour autant être trop "usine à gaz" comme Gitlab.
Autres services que j'ai migré, mon instance owncast, un bot lichess et fishnet qui fait du calcul pour lichess.org. Il me reste les composants disposant de la donnée à restaurer sur mon instance PostgreSQL et ensuite je pourrais décomissionner mon ancienne infra d'Hetzner.
C'est très brouillon mais pour les curieux, je mets mes notes sur mon wiki:
https://wiki.valvin.fr/fr/notes/migration-serveur
💬 Une question, une remarque, contactez-moi :)
Le contenu de cette page est disponible sous licence CC-BY-SA