Quand on passe du développement local à la production, le choix de l'infrastructure conditionne la fiabilité et la maintenabilité. Voici comment j'ai provisionné un VPS pour héberger mon site et y déployer l'agent Hermès, en suivant une approche reproductible et sécurisée.

1. Choix du provider et sizing

J'ai opté pour un VPS chez un hébergeur européen (RGPD friendly) avec :

  • 2 vCPU, 4 Go RAM, 80 Go SSD NVMe
  • OS : Ubuntu 24.04 LTS (support long terme)
  • IP fixe + DNS géré côté registrar

Le sizing laisse de la marge pour l'agent Hermès, le serveur web (Nginx), et une éventuelle base de données locale.

2. Durcissement initial (premiers 15 min)

# Mise à jour
apt update && apt upgrade -y

# Utilisateur non-root + clé SSH
adduser deploy
usermod -aG sudo deploy
mkdir -p /home/deploy/.ssh && cp ~/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh

# SSH hardening
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl reload sshd

# Pare-feu minimal
ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable

3. Installation de l'agent Hermès

L'agent Hermès (supervision / inventaire) s'installe via un paquet fourni :

# Dépôt officiel
curl -fsSL https://repo.hermes-agent.io/gpg | gpg --dearmor -o /usr/share/keyrings/hermes.gpg
echo "deb [signed-by=/usr/share/keyrings/hermes.gpg] https://repo.hermes-agent.io/stable any main" > /etc/apt/sources.list.d/hermes.list
apt update && apt install -y hermes-agent

# Configuration minimale
cat > /etc/hermes/agent.yaml <<'EOF'
server_url: "https://hermes.mondomaine.fr"
token: "{{ VAULT_HERMES_TOKEN }}"
tags:
  - role:web
  - env:prod
EOF

systemctl enable --now hermes-agent

Le token est injecté via un gestionnaire de secrets (Vault / SOPS) — jamais en dur dans le dépôt.

4. Déploiement du site (Nginx + CI/CD)

  • Nginx : configuration TLS via Certbot (Let's Encrypt), headers de sécurité (HSTS, CSP), rate limiting.
  • CI/CD : GitHub Actions → SSH → rsync + systemctl reload nginx. Le pipeline valide aussi la santé de l'agent Hermès après déploiement.

5. Supervision et alerting

L'agent Hermès remonte :

  • Métriques système (CPU, RAM, disque, réseau)
  • État des services critiques (nginx, ssh, hermes-agent)
  • Logs structurés (JSON) vers Loki

Une alerte PagerDuty se déclenche si l'agent ne fait pas de heartbeat depuis > 5 min.

6. Automatisation pour la reproductibilité

Tout est codifié dans un playbook Ansible (roles : common, nginx, hermes-agent, certbot). Le provisionnement d'un nouveau nœud prend < 10 min.

ansible-playbook -i inventory/prod site.yml --limit vps-web-01

Bilan

  • Temps total : ~45 min (dont 20 min d'attente DNS/Let's Encrypt)
  • Coût mensuel : ~6 €/mois
  • Maintenance : mises à jour unattended-upgrades + renouvellement auto TLS

L'agent Hermès donne une visibilité immédiate dès la première minute. Prochaine étape : ajouter un second nœud derrière un load balancer pour la haute dispo.