Alexandre Cooreman
FREN
Free quote
  1. Home
  2. Expertise
Infrastructure and method

Your site will run here. And here, everything is documented.

No anonymous “cloud”: an infrastructure I build, monitor, and whose every technical choice I publish: context, options, decision, outcome. Incidents included.

  • Continuous monitoringan outage is seen before your call
  • Backups 3-2-1multiple copies, one off site, encrypted
  • Private administrationinvisible from the Internet

A deliberately redacted view: no address, no port, no exact topology. Showing the reasoning does not weaken what it serves.

01

What happens between the click and the page.

Each step exists for a reason, and each has its decision record below (in French). This is the path running for the sites I host, this one included.

SERVER · FRANCEVisitorbrowserFront doorTLS · headersMonitoringcontinuousYour siteown containerBackupencrypted, off siteAdministrationprivate networkhttpsevery nightnever via the Internet

A visit arrives

From the visitor's browser to the served page

  1. A visitor clicksfrom a search engine, a link, a bookmark
  2. Certificate checkedTLS renewed automatically
  3. Single front doorone exposed entry point, hardened headers
  4. The right containerisolated, no access to the others
  5. The page arrivesserved, measured, monitored

In parallel, unrelated to the visitor: encrypted backups every night, continuous monitoring, and administration that never goes through the Internet.

03

Outages happen. Here is how I handle them.

A provider claiming to never have outages is lying to you. Every real incident has its public post-mortem (in French): symptom, diagnosis, fix, lesson.

SSH indisponible après un reboot : la panne qui dormait (in French)

Symptôme. Reboot de maintenance planifié (mises à jour de sécurité, noyau en attente), le premier depuis des mois. Tout redémarre seul : sites clients en ligne, conteneurs relancés par leurs politiques Docker, le pair qui répond sur le maillage Tailscale. Tout, sauf SSH : « Connection refused » immédiat, sur l’adresse publique comme sur celle du VPN. La machine répond, mais rien n’écoute.

Diagnostic. Une vingtaine de minutes entre le premier refus et le retour de SSH, via la console KVM out-of-band d’OVHcloud (clavier interprété en QWERTY compris). systemctl status ssh donne le verdict : sshd, volontairement restreint à l’adresse du VPN maillé (durcissement zero-trust), a démarré avant que Tailscale ne monte son interface. L’adresse n’existait pas encore, le bind a échoué, sshd a épuisé ses tentatives et est resté couché. Le serveur n’avait jamais redémarré depuis ce durcissement : la panne dormait là depuis des mois.

Correctif. net.ipv4.ip_nonlocal_bind=1 dans /etc/sysctl.d/ : sshd peut se binder sur une adresse qui n’existe pas encore, et n’écoute toujours que sur le VPN. Vérifié par un test qui reproduit les conditions du boot (VPN coupé, sshd redémarré, service actif). Les options écartées et le tradeoff sont détaillés dans la décision complète.

Ce que ça a changé. Un service qui tourne depuis des mois n’a jamais prouvé qu’il savait démarrer : seul un reboot le prouve, et ils font désormais partie de la maintenance régulière. Et le chemin de secours (console out-of-band) reste volontairement indépendant de tout le reste : c’est lui qui a permis de régler l’incident en vingt minutes.

Panne chez l'hébergeur : serveur injoignable (in French)

Symptôme. Vendredi 19 juin, mi-journée : plus aucun nom de domaine ne résout sur les appareils du tailnet, alors que la connexion Internet est bonne. Cause immédiate : ces appareils utilisent le DNS interne de la plateforme comme résolveur, et le serveur qui l’héberge ne répond plus.

Diagnostic. Connexion correcte mais résolution muette : le problème est du côté du serveur. Confirmation rapide chez l’hébergeur : incident de refroidissement dans le datacenter de Roubaix, annoncé sur la page de statut d’OVHcloud (source publique). Environ deux heures trente d’indisponibilité vécue pour ce serveur ; la résolution complète de l’incident a pris une douzaine d’heures pour les derniers serveurs touchés.

Correctif. Aucun levier pendant l’incident : la panne est physique, chez l’hébergeur. Le travail utile se fait avant et après.

Ce que ça a changé. Deux enseignements. La dépendance DNS d’abord : faire du serveur le résolveur des appareils du tailnet transforme une panne d’hébergeur en panne de résolution générale sur tous les appareils. Corrigé depuis : un résolveur de secours est déclaré dans la configuration DNS du tailnet, les appareils gardent une résolution si le serveur ne répond plus. Le mono-serveur ensuite : le risque est connu et accepté à cette échelle, et une infrastructure multi-serveurs reste un objectif d’apprentissage (chantier au-delà du mono-serveur). Changer d’hébergeur ne protégerait de rien : ce type d’incident peut arriver partout.

Une mise à jour automatique coupe l'accès aux services privés (in French)

Symptôme. Tous les services privés répondent 403 : coffre de mots de passe, outils internes, dashboards. Les sites publics fonctionnent normalement. Découvert deux jours après le début de l’incident, en remarquant que le coffre de mots de passe ne se synchronisait plus : les services du tailnet ne servent pas tous les jours, la panne est restée silencieuse le temps d’un week-end.

Diagnostic (1 h 30). Les logs du reverse proxy montrent une adresse source en 172.x, celle de la passerelle du réseau Docker, au lieu de l’adresse tailnet du client. Le filtre tailscale-only, qui n’autorise que le réseau privé, refuse donc tout le monde. Remontée de piste : Tailscale s’était mis à jour automatiquement quelques jours plus tôt, et la nouvelle version introduit des règles de marquage de connexions qui, combinées au masquerading existant, réécrivent la source des paquets entrants avant qu’ils n’atteignent les conteneurs.

Correctif. Désactivation persistante du SNAT des routes locales côté Tailscale, sans effet de bord ici puisque ce nœud ne route aucun sous-réseau.

Ce que ça a changé. Deux jours d’incident silencieux sur la moitié de la plateforme, détectés par un hasard d’usage : c’est précisément ce que le chantier observabilité et alerting de la roadmap doit rendre impossible. Leçon complémentaire : une mise à jour automatique peut modifier le comportement réseau à bas niveau ; pour les composants réseau, lire le changelog avant de mettre à jour, quitte à épingler la version.

04

Simple, written, no surprises.

You always know where your project stands, what it costs, and who to call.

  1. 01Conversationon site or by video callfree
  2. 02Quotedetailed, within 48 hfree
  3. 03Buildregular progress updates
  4. 04Go-livejoint acceptance, training
  5. 05Maintenancemonitored, backed up, reachable

Reply within one business day

to every enquiry, from the person doing the work.

Detailed quote within 48 h

free, line by line, no commitment.

No subcontracting

design, development, hosting and monitoring: the same person, from the first meeting to maintenance.

One point of contact

when something breaks, you call the person who wrote the code.

Hosted in France

infrastructure rented from OVHcloud, data held in the European Union.

What the monthly fee covers

encrypted nightly backups, continuous monitoring, security updates.

A written framework

signed quote, deposit on order, balance at go-live.

Everything is yours

domain name, code, content and data: in your name, exportable, reversible. The subscription ends on thirty days notice.

AI agents are part of the workshop: they speed up building, testing and monitoring, and that gain shows in your quotes. Reviewing, deciding and answering for the work stay human: I sign it.How I work with agents (in French) →

05

One person, reachable.

I am Alexandre Cooreman, a freelance software engineer specialising in infrastructure and security. I design the sites and tools, host them, monitor them, and when something breaks, I am the one you call.

Software engineerInfrastructure & SecurityFreelanceSole proprietorshipRemote across Europe

Documents: Technical career ·CV (French) · CV (English) · LinkedIn

06

Technical notes.

Sharp topics treated short, for the curious and for peers: how I work with AI agents, DNS-based certificates, the message delivery queue. Written in French.

Read the technical notes (in French)
The logical next step

This infrastructure can host your tools.

Managed hosting and maintenance: from €19 excl. VAT / month, a flat fee known in advance.