Et si on retentait l'expérience de l'auto hébergement ? Le principe est simple, utiliser sa connexion internet et son propre matériel pour rendre disponible des services de son réseau local au monde extérieur. Si il a toujours été possible de le faire, les connexions non pro et sans fibre étaient un peu frêle en débit montant pour se permettre de proposer plusieurs services.

J'avais sur mon serveur une liste de services dont je ne me servais que trop peu... ou qui demandaient tellement de maintenance par rapport à mon utilisation quotidienne que je me suis résolu à les abandonner.

Adieu Matrix, Peertube, Mastodon et NextCloud, je vous retrouverai peut être un jour. J'ai gardé le plus important: mon Blog Ghost, dont vous lisez les lignes, et mon gitlab. Les pages statiques, je les héberge sur Vercel (la gratuité et la simplicité me satisfont).

Traefik d'influence

Pour se faire une idée, j'ai fait un petit diagramme afin de se faire une idée. Sur le serveur Ikoula, j'avais tout de centralisé, Docker écoutait aux ports 80 et 443 et laissait le conteneur NGINX de l'image nginx-proxy rediriger vers les conteneurs qui étaient sur le même réseau; seul le port 222 était redirigé vers gitlab sans l'aide de NGINX. Un autre conteneur gérait le SSL avec Let's Encrypt afin d'avoir le chiffrage entre les internautes et les services.

Désormais les internautes toquent à ma Freebox qui redirige tout le trafic 80, 443 et 222 vers un raspberrypi qui redirige tout ça vers le conteneur Traefik. Ce dernier agit en tant que Load Balancer, tout comme NGINX précédemment, il redirige ghost et git suivant ce qui est tapé dans la barre de navigation de l'internaute.

J'ai séparé la charge entre deux serveurs physiques (le Raspberry Pi et l'ordinateur portable) afin de ne pas avoir le Pi qui souffre de trop. Gitlab est assez gourmand et je mettrai sur le laptop un autre service de partage de données (SFTPGO ou NextCloud).

Traefik gère manière plus proprement les redirections et offre un tableau de bord visuel pour voir les redirections et services, il permet également de détecter les services docker pour rediriger automatiquement vers des ports exposés là où il me fallait manuellement décrire des variables d'environnements avec `nginx-proxy`.