Files
2026-06-09 18:40:21 +02:00

7.5 KiB


title: Semaphore UI created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, automation, ansible, ci-cd, devops, ui, go] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Automation, https://github.com/semaphoreui/semaphore]

🖥️ Semaphore UI

L'interface web moderne pour Ansible — exécutez, planifiez et supervisez vos playbooks depuis une UI claire, sans exposer la CLI à toute l'équipe. L'anti-AWX : un binaire Go unique qui démarre en 5 secondes.

📋 Informations Générales

Champ Valeur
Site web semaphoreui.com
GitHub semaphoreui/semaphore
License MIT
Langage Go (backend) + Vue.js (UI)
Étoiles GitHub 1 267 (cette org) / 11k+ sur l'écosystème
Dernière MAJ 2026-06-06
Catégorie cat-automation

📝 Description

Semaphore UI (aussi appelé Ansible Semaphore) répond à une frustration classique des équipes qui adoptent app-ansible : « comment permettre à l'équipe de lancer un playbook de prod depuis une interface, avec logs en temps réel, secrets chiffrés, audit et RBAC, sans donner un accès SSH au serveur de production ? ». Réponse historique : Ansible Tower (propriétaire Red Hat, ~3 000 $/an) ou AWX (la version open source, mais qui pèse 5 Go de RAM, 6 conteneurs Kubernetes, PostGreSQL, Redis…). Réponse légère : Semaphore UI.

Le projet est né en 2015 en Python, puis réécrit en Go en 2022 par la communauté et adopté dans l'écosystème Red Hat comme alternative crédible à AWX pour les petites équipes (2-50 personnes). Côté technique, c'est un binaire Go unique qui embarque : le serveur HTTP, l'UI Vue.js, l'ORM, le scheduler cron et l'intégration Ansible. Résultat : ~150 Mo de RAM au repos, démarrage en moins de 5 secondes, configuration via un TOML/YAML unique.

Fonctionnalités principales :

  • Inventaires statiques (YAML/JSON) et dynamiques (AWS EC2, GCP, OpenStack, DigitalOcean)
  • Credentials Vault : clés SSH, mots de passe, tokens API, stockés chiffrés en DB (AES-256)
  • Environnements multiples : dev / staging / prod avec leurs propres variables
  • Tâches planifiées (cron) : lancer backup.yml tous les jours à 03h15
  • Tâches manuelles : exécution à la demande avec logs live
  • Templates de tâches : pré-configurations réutilisables par toute l'équipe
  • Notifications : email, Slack, webhook sur succès/échec
  • API REST complète (intégrable avec GitLab CI, Gitea Actions, n8n…)
  • RBAC : rôles admin / task runner / viewer

Vs AWX : AWX brille pour des équipes de 50+ admins avec des besoins complexes de conformité. Semaphore brille pour des équipes de 2-10 qui veulent juste une UI simple qui marche. Pour un homelab, Semaphore est largement suffisant.

🚀 Installation

Prérequis

  • Un hôte Linux/macOS ou un conteneur Docker
  • Ansible accessible depuis l'hôte (binaire ou via conteneur dédié)
  • Une base de données : SQLite (par défaut, parfait pour démarrer), MySQL ou PostgreSQL

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
services:
  semaphore-db:
    image: mysql:8.0
    container_name: semaphore-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: change-me-root
      MYSQL_DATABASE: semaphore
      MYSQL_USER: semaphore
      MYSQL_PASSWORD: change-me-db
    volumes:
      - semaphore-db:/var/lib/mysql

  semaphore:
    image: semaphoreui/semaphore:latest
    container_name: semaphore
    restart: unless-stopped
    depends_on:
      - semaphore-db
    ports:
      - "3000:3000"
    environment:
      SEMAPHORE_DB_DIALECT: mysql
      SEMAPHORE_DB_HOST: semaphore-db
      SEMAPHORE_DB_PORT: 3306
      SEMAPHORE_DB_USER: semaphore
      SEMAPHORE_DB_PASSWORD: change-me-db
      SEMAPHORE_DB_NAME: semaphore
      SEMAPHORE_LISTEN: 0.0.0.0:3000
      SEMAPHORE_ADMIN_USERNAME: admin
      SEMAPHORE_ADMIN_PASSWORD: change-me-admin
      SEMAPHORE_ADMIN_EMAIL: admin@example.com
      SEMAPHORE_ACCESS_KEY_ENCRYPTION: "changez-cette-cle-32-chars-min"
    volumes:
      - semaphore-data:/data

volumes:
  semaphore-db:
  semaphore-data:

Option 2 : Binaire natif (Linux)

wget https://github.com/semaphoreui/semaphore/releases/latest/download/semaphore_linux_amd64
chmod +x semaphore_linux_amd64
sudo mv semaphore_linux_amd64 /usr/local/bin/semaphore
semaphore setup    # assistant interactif
sudo systemctl enable --now semaphore

⚙️ Configuration

  • Premier login : admin / mot de passe défini dans SEMAPHORE_ADMIN_PASSWORD (à changer immédiatement)
  • Clés SSH : menu Key Store → ajouter la clé privée qui sera utilisée pour se connecter aux cibles
  • Inventaires : créer un inventaire statique (YAML/JSON) ou pointer vers un script dynamique
  • Repos de playbooks : pointer vers un dépôt Git (HTTPS ou SSH), choisir la branche
  • Credentials Vault : chiffrés en base avec la master key SEMAPHORE_ACCESS_KEY_ENCRYPTIONsauvegarder impérativement
  • Schedules : cron avec timezone explicite (ex. TZ=Europe/Paris)
  • Notifications : configurer Slack / email / webhook pour les résultats d'exécution

🔗 Alternatives

Open Source

  • AWX — version officielle Red Hat, puissante mais lourde (K8s requis, 5 Go RAM)
  • Rundeckapp-rundeck, gère aussi des jobs non-Ansible
  • Jenkins + Ansible plugin — l'ancienne école, orienté pipelines
  • n8n + Ansible CLI — workflow no-code qui appelle Ansible via SSH
  • StackStorm — orienté "event-driven automation" (plus complexe)

Propriétaires (ce que Semaphore remplace)

  • Red Hat Ansible Automation Platform — 14 000 $/an/100 nœuds
  • Ansible Tower (legacy) — maintenant absorbé dans AAP
  • Puppet Enterprise Console — équivalent pour Puppet
  • SaltStack Enterprise — équivalent pour Salt
  • CloudBees Flow — orchestrateur de pipelines CI/CD

🔒 Sécurité

  • ⚠️ Changer SEMAPHORE_ADMIN_PASSWORD et SEMAPHORE_ACCESS_KEY_ENCRYPTION immédiatement après l'install
  • ⚠️ Sauvegarder la master key : si elle est perdue, tous les credentials Vault sont irrécupérables
  • Mettre Semaphore derrière un reverse proxy (Traefik, Caddy, Nginx) avec TLS obligatoire
  • Activer 2FA (TOTP) sur tous les comptes utilisateurs
  • Restriction IP : Semaphore peut tout faire sur les cibles (root via become: yes) — ne pas exposer publiquement
  • Audit : exporter les logs vers un SIEM (Loki, Graylog) pour analyse
  • Sauvegardes : automatiser le dump MySQL + le semaphore-data (qui contient la master key)

📚 Ressources

🔗 Pages Liées