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.ymltous 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 dansSEMAPHORE_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_ENCRYPTION— sauvegarder 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)
- Rundeck — app-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_PASSWORDetSEMAPHORE_ACCESS_KEY_ENCRYPTIONimmé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
- Site officiel
- Dépôt GitHub
- Documentation
- Démo en ligne (login:
demo/demo) - Communauté Reddit
- Awesome Ansible
🔗 Pages Liées
- cat-automation — Catégorie Automation
- app-ansible — Le moteur que Semaphore pilote
- app-rundeck — Orchestrateur de jobs (alternative généraliste)
- cat-deployment — Catégorie Déploiement
- recettes-docker-compose — Templates Docker
- securisation-home-lab — Sécurité