Tutoriel

Alternatives self-hosted à Opsgenie avant avril 2027

Sécurité & Monitoring8 min de lecture7 étapes

Le 5 avril 2027, Opsgenie cessera définitivement de fonctionner. Atlassian a publié l'annonce officielle de fin de vie et recommande aux équipes de migrer vers ses autres produits ou vers des solutions tierces. Quelques semaines plus tôt, Grafana Labs avait archivé le dépôt de Grafana OnCall OSS le 24 mars 2026, supprimant de facto l'une des alternatives open source les plus citées. Ces deux événements laissent les équipes utilisant des VPS ou des infrastructures propres sans solution évidente. Cet article présente deux alternatives entièrement self-hosted — OneUptime et IncidentRelay — que l'on peut déployer sur un VPS standard, configurer en moins d'une heure et maintenir sans abonnement SaaS. Il est complémentaire des guides déjà publiés sur la supervision légère avec Beszel et Uptime Kuma, et sur le déploiement de Wazuh pour la détection d'intrusion.

Sommaire· Opsgenie et Grafana OnCall : deux piliers qui s'effacent1/10
  1. 01Opsgenie et Grafana OnCall : deux piliers qui s'effacent
  2. 02Ce qu'une solution de gestion d'incident doit couvrir
  3. 03OneUptime vs IncidentRelay vs PagerDuty
  4. 04Prérequis VPS pour OneUptime
  5. 05Déployer OneUptime sur un VPS en 7 étapes
  6. 06Configurer les alertes : webhook Prometheus vers OneUptime
  7. 07Gérer les astreintes et les escalades
  8. 08Exposer la page de statut derrière nginx
  9. 09Dépannage — erreurs courantes au démarrage
  10. 10Planifier la migration Opsgenie vers OneUptime avant avril 2027

Opsgenie et Grafana OnCall : deux piliers qui s'effacent

Opsgenie a été racheté par Atlassian en 2018 et intégré progressivement dans la suite Jira. L'annonce de fin de vie a été publiée sur la page d'état officielle Atlassian : le service s'arrête le 5 avril 2027. Les utilisateurs disposent d'un peu plus d'un an pour migrer leurs politiques d'astreinte, leurs intégrations et leurs historiques d'incidents. Grafana OnCall OSS, le composant open source de Grafana OnCall, a quant à lui été archivé sur GitHub le 24 mars 2026. L'équipe Grafana Labs a indiqué que la version cloud reste disponible, mais le dépôt en auto-hébergement ne reçoit plus de correctifs ni de nouvelles fonctionnalités. Les équipes qui avaient basé leur infrastructure de gestion d'incidents sur cette brique se retrouvent dans une situation identique : elles doivent migrer avant que les failles de sécurité non corrigées ne deviennent un risque réel. La convergence de ces deux événements en moins de douze mois crée une fenêtre de migration que les équipes ont intérêt à planifier dès maintenant plutôt que d'attendre la pression des dernières semaines avant l'échéance d'avril 2027.

Ce qu'une solution de gestion d'incident doit couvrir

  • Réception et déduplification des alertes depuis Prometheus, Grafana, Zabbix ou tout webhook HTTP
  • Routage des alertes vers les bonnes équipes selon des règles configurables (sévérité, service, horaire)
  • Gestion des plannings d'astreinte (on-call schedules) avec rotations hebdomadaires ou personnalisées
  • Escalades automatiques si l'alerte n'est pas acquittée dans un délai défini
  • Notifications multicanal : e-mail, SMS, appel vocal, Slack, Microsoft Teams, PagerDuty webhooks
  • Page de statut publique pour informer les utilisateurs en temps réel
  • Historique des incidents consultable et exportable pour les post-mortems
  • API REST pour l'intégration dans les pipelines CI/CD et les outils d'automatisation

OneUptime vs IncidentRelay vs PagerDuty

Faites défiler le tableau

CritèreOneUptimeIncidentRelayPagerDuty (SaaS)
LicenceApache 2.0MITPropriétaire
HébergementSelf-hosted (Docker Compose)Self-hosted (Docker Compose)Cloud uniquement
Stack techniqueNode.js / TypeScript, PostgreSQLGo, SQLite/PostgreSQLNon divulguée
RAM minimale recommandée4 Go (prod légère), 8 Go conseillé512 Mo (SQLite), 2 Go (PostgreSQL)N/A
Page de statut intégréeOui, publique et personnalisableOui, basiqueOui, via Statuspage (payant séparé)
Prix de baseGratuit (self-hosted)Gratuit (self-hosted)Payant (consulter le site officiel)

Prérequis VPS pour OneUptime

OneUptime utilise une architecture multi-conteneurs orchestrée par Docker Compose. Pour une équipe de moins de vingt personnes avec un volume d'alertes modéré (moins de mille événements par jour), un VPS avec 4 vCPU et 8 Go de RAM constitue une base correcte. En dessous de 4 Go de RAM, plusieurs conteneurs entrent en concurrence au démarrage et provoquent des redémarrages intempestifs. Le stockage doit être sur un volume SSD : OneUptime écrit fréquemment dans PostgreSQL et dans son bus d'événements interne. Prévoir au minimum 40 Go pour les logs et la base de données sur une durée de six mois. Le serveur doit exposer les ports 80 et 443 ; un reverse proxy nginx ou Caddy peut être placé devant si le VPS héberge déjà d'autres services. Docker Engine version 24 ou supérieure et Docker Compose version 2.20 ou supérieure sont requis. Une adresse IP fixe et un nom de domaine avec enregistrement DNS A sont nécessaires pour le certificat TLS et pour que les webhooks entrants soient joignables.

Déployer OneUptime sur un VPS en 7 étapes

  1. Connectez-vous au VPS en SSH et installez Docker Engine ainsi que Docker Compose v2 via le dépôt officiel Docker : curl -fsSL https://get.docker.com | sh puis vérifiez avec docker compose version.

  2. Clonez le dépôt OneUptime : git clone https://github.com/OneUptime/oneuptime.git puis entrez dans le répertoire cd oneuptime.

  3. Copiez le fichier d'exemple de configuration : cp .env.example .env puis ouvrez-le dans un éditeur. Renseignez au minimum DOMAIN (votre domaine ou sous-domaine), DISABLE_TELEMETRY=true si vous ne souhaitez pas envoyer de métriques d'usage, et les variables SMTP (SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_FROM_EMAIL) pour les notifications e-mail.

  4. Lancez les conteneurs en arrière-plan : docker compose up -d. Le premier démarrage télécharge les images et exécute les migrations de base de données ; comptez trois à cinq minutes selon la bande passante.

  5. Vérifiez que tous les services sont sains : docker compose ps. Les conteneurs oneuptime-app, oneuptime-worker, oneuptime-postgres et oneuptime-redis doivent afficher l'état running. En cas d'erreur sur un conteneur, consultez ses logs avec docker compose logs <nom-du-conteneur> --tail=100.

  6. Ouvrez le navigateur sur https://votre-domaine et créez le compte administrateur initial. Accédez ensuite à *Settings → On-Call Duty → Policies* pour créer votre première politique : définissez l'équipe concernée, les plages horaires et les canaux de notification.

  7. Activez les mises à jour automatiques des images avec Watchtower ou planifiez un docker compose pull && docker compose up -d hebdomadaire via cron pour intégrer les correctifs de sécurité sans interruption de service prolongée.

Configurer les alertes : webhook Prometheus vers OneUptime

OneUptime expose un endpoint webhook entrant pour chaque moniteur ou intégration créée. Dans l'interface, allez dans *Integrations → Incoming Webhooks* et créez une nouvelle intégration de type Prometheus Alertmanager. L'interface génère une URL de la forme https://votre-domaine/api/v1/incoming-request/<uuid>. Dans la configuration Alertmanager de Prometheus, ajoutez un receiver de type webhook pointant vers cette URL. Le champ send_resolved: true permet à OneUptime de fermer automatiquement un incident quand Alertmanager envoie la notification de résolution. Pour une intégration depuis Grafana, utilisez le type de contact *Webhook* et renseignez la même URL. OneUptime analyse le JSON entrant et extrait automatiquement le titre, la sévérité et les labels de l'alerte Prometheus. Si vous envoyez des alertes depuis un outil personnalisé, le format attendu est documenté dans la page d'intégration : un champ title et un champ description suffisent pour créer un incident.

Gérer les astreintes et les escalades

Les plannings d'astreinte dans OneUptime (On-Call Schedules) définissent qui est disponible, à quelle heure et pour quel service. Un planning est associé à une ou plusieurs couches (layers) : chaque couche représente une rotation d'équipe. La rotation peut être quotidienne, hebdomadaire ou sur une période personnalisée. Chaque membre d'équipe peut renseigner ses préférences de notification dans son profil : e-mail immédiat, SMS après deux minutes d'attente, appel vocal si l'incident n'est pas acquitté après cinq minutes. Les escalades se configurent dans les politiques d'alerte (Alert Policies) : si la personne d'astreinte au niveau 1 ne répond pas dans le délai configuré, l'alerte remonte automatiquement au niveau 2, qui peut être une autre personne, une équipe différente ou un canal Slack partagé. Cette chaîne d'escalade est visible dans l'historique de chaque incident, ce qui facilite les revues post-mortem.

Exposer la page de statut derrière nginx

OneUptime génère une page de statut publique accessible sur un sous-domaine dédié, par exemple status.votre-domaine.com. Pour l'exposer proprement derrière nginx en proxy inverse, créez un vhost qui achemine les requêtes vers le port interne 3105 utilisé par le conteneur de status page : proxy_pass http://127.0.0.1:3105;. Activez le header X-Forwarded-Proto pour que OneUptime génère des liens HTTPS corrects dans les notifications. Le certificat TLS peut être obtenu via Certbot avec le plugin nginx : certbot --nginx -d status.votre-domaine.com. La page de statut permet aux clients et utilisateurs de suivre l'état des services en temps réel sans avoir accès à l'interface d'administration.

Dépannage — erreurs courantes au démarrage

Le problème le plus fréquent au premier démarrage est un conteneur PostgreSQL qui ne répond pas avant que le conteneur applicatif ne tente de s'y connecter. OneUptime intègre des healthcheck dans son docker-compose.yml officiel ; si vous utilisez une version modifiée, assurez-vous que le service app a bien une directive depends_on avec condition service_healthy sur le service postgres. Un second problème courant concerne les variables SMTP : si les e-mails de vérification de compte ne partent pas, vérifiez que SMTP_PORT est bien 587 (STARTTLS) et non 465 (SSL direct) si votre fournisseur SMTP l'exige. Pour diagnostiquer les erreurs silencieuses, consultez les logs du worker en temps réel avec docker compose logs -f oneuptime-worker. Enfin, si le port 443 est déjà occupé par un autre service, OneUptime démarrera mais sera inaccessible : modifiez le mapping de port dans le docker-compose.yml ou arrêtez le service concurrent avant de lancer la stack.

Planifier la migration Opsgenie vers OneUptime avant avril 2027

Opsgenie permet d'exporter les politiques d'alerte, les plannings d'astreinte et l'historique des incidents au format JSON ou CSV depuis *Settings → Export*. Ces exports contiennent les règles de routage, les membres d'équipe et les intégrations actives. L'import dans OneUptime n'est pas automatique : il faut recréer les politiques manuellement ou via l'API REST de OneUptime en s'appuyant sur les données exportées. Commencer par les intégrations critiques (Prometheus, Grafana, Datadog) puis progresser vers les plannings d'astreinte et enfin les notifications secondaires est l'approche recommandée. Prévoyez une période de double-fonctionnement d'au moins deux semaines : les deux systèmes reçoivent les mêmes alertes pendant que les équipes valident les nouvelles politiques. L'échéance du 5 avril 2027 laisse suffisamment de temps pour une migration soignée si elle est démarrée avant janvier 2027. Attendre les dernières semaines expose les équipes à un basculement contraint, sans possibilité de revenir en arrière si une intégration manque.

Déployez OneUptime sur un VPS ServOrbit

Déployez OneUptime en un clic sur un VPS ServOrbit — template préconfiguré, données en votre possession.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet