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

# 🚀 Semaphore

> **UI web pour Ansible** — exécutez, planifiez et supervisez vos playbooks Ansible depuis une interface web, sans passer par la CLI. L'équivalent self-hosted d'Ansible Tower / AWX, mais en Go léger.

## 📋 Informations Générales

| Champ | Valeur |
| :--- | :--- |
| **Site web** | [semaphoreui.com](https://semaphoreui.com/) |
| **GitHub** | [ansible-semaphore/semaphore](https://github.com/ansible-semaphore/semaphore) |
| **License** | MIT |
| **Langage** | Go (backend) + Vue.js (UI) |
| **Étoiles GitHub** | 1,5k ⭐ (monorepo) / 11k+ sur ansible-semaphore |
| **Catégorie** | [[cat-deployment\|Deployment]] |
| **Origine** | Communauté Ansible (reconnu par Red Hat) |

## 📝 Description

**Semaphore** (nom complet *Ansible Semaphore*) est une **interface web moderne pour Ansible** qui répond au besoin classique : "je veux que l'équipe puisse lancer les playbooks prod depuis une UI, avec logs, secrets, et audit, sans donner accès à la CLI". C'est l'**anti-AWX** : là où AWX est une montagne Kubernetes (multi-conteneurs, Operator, PostGreSQL, Redis…), Semaphore est un **binaire Go unique** qui démarre en quelques secondes.

L'**ancêtre historique** de Semaphore (v1) était en Python, repris par la communauté sous le nom "Ansible Semaphore" puis réécrit en Go en 2022-2023. La version actuelle (2.x) est mature, activement maintenue, et recommandée par Red Hat comme alternative légère à AWX pour les équipes de 2-50 personnes.

**Fonctionnalités principales** :

- ✅ **Inventaires statiques et dynamiques** (fichier YAML, AWS EC2, GCP, OpenStack…)
- ✅ **Credentials vault** : SSH keys, mots de passe, tokens API, stockés chiffrés en DB
- ✅ **Environnements multiples** : dev/staging/prod avec leurs propres vars
- ✅ **Tâches planifiées** (cron-like) : lancer un playbook tous les jours à 03:00
- ✅ **Tâches manuelles** : exécution à la demande, sortie live des logs
- ✅ **Templates de tâches** : pré-configurations réutilisables par l'équipe
- ✅ **Notifications** : email, Slack, webhook
- ✅ **API REST** complète (intégration avec GitLab CI, Gitea Actions, n8n…)
- ✅ **RBAC basique** : admin, "task runner", viewer

**Vs AWX** : AWX (~5 Go RAM, 6 conteneurs, PostGreSQL) est adapté à des équipes de 50+ admins ; Semaphore (~150 Mo RAM, binaire unique) est adapté à des équipes de 2-10. Pour un homelab, Semaphore est largement suffisant.

## 🚀 Installation

### Prérequis
- Un serveur Linux (Ubuntu, Debian, RHEL, Alpine…) ou macOS
- Ansible installé sur la même machine (ou via Docker runner)
- Une base de données : SQLite (par défaut, suffit pour démarrer) ou MySQL/PostgreSQL

### Via Docker (recommandé)

```yaml
# docker-compose.yml
services:
  semaphore:
    image: semaphoreui/semaphore:latest
    container_name: semaphore
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - semaphore-data:/data
    environment:
      - SEMAPHORE_DB_DIALECT=bolt
      - SEMAPHORE_ADMIN_USERNAME=admin
      - SEMAPHORE_ADMIN_PASSWORD=changeme
      - SEMAPHORE_ADMIN_EMAIL=admin@example.com
      - SEMAPHORE_LISTEN=0.0.0.0:3000
volumes:
  semaphore-data:
```

### Installation native (Linux)

```bash
# Sur Ubuntu/Debian
sudo apt install -y ansible
wget https://github.com/ansible-semaphore/semaphore/releases/latest/download/semaphore_linux_amd64
chmod +x semaphore_linux_amd64
sudo mv semaphore_linux_amd64 /usr/local/bin/semaphore
semaphore setup   # assistant de configuration
semaphore --config /etc/semaphore/config.json
```

## ⚙️ Configuration

- **Clés SSH** : ajouter la clé privée qui sera utilisée par Ansible pour se connecter aux cibles
- **Inventaires** : créer un inventaire statique (YAML) ou pointer vers un inventaire dynamique (plugin AWS)
- **Playbooks** : pointer vers un repo Git (HTTPS ou SSH), sélectionner la branche
- **Credentials** : chiffrés en DB avec la master key de Semaphore — sauvegarder cette clé
- **Schedules** : définir les planifications cron (timezone importante, ex. `TZ=Europe/Paris`)
- **Notifications** : configurer Slack/email/webhook pour les succès/échecs

## 🔗 Alternatives

- **AWX** — la version officielle Red Hat, puissante mais lourde (Kubernetes requise)
- **Ansible Tower** — l'original propriétaire (3 000 $/an pour 100 nœuds)
- **Rundeck** — alternative plus généraliste (CI/CD + jobs non-Ansible)
- **n8n + Ansible CLI** — orchestrateur no-code qui appelle Ansible
- **Jenkins + Ansible plugin** — l'ancienne école, lourd

## 🔒 Sécurité

- ⚠️ **Changer `SEMAPHORE_ADMIN_PASSWORD`** dès l'installation
- ⚠️ **Sauvegarder la master key** de chiffrement des credentials : si elle est perdue, tous les secrets sont irrécupérables
- **Mettre Semaphore derrière un reverse proxy** (Traefik, Caddy) avec TLS
- **Activer 2FA** sur les comptes utilisateurs
- **Limiter les permissions du binaire** : Semaphore exécute Ansible, qui peut tout faire — ne pas l'exposer publiquement sans restriction IP
- **Audit** : les actions sont loggées, mais exporter les logs vers un SIEM (Loki, Splunk) pour l'analyse

## 📚 Ressources

- [Site officiel](https://semaphoreui.com/)
- [Dépôt GitHub](https://github.com/ansible-semaphore/semaphore)
- [Documentation](https://docs.semaphoreui.com/)
- [Démo en ligne](https://demo.semaphoreui.com/)

## 🔗 Pages Liées

- [[cat-deployment]]
- [[app-portainer]]
- [[app-coolify]]
- [[app-traefik]]
- [[cat-docker]]
- [[securisation-home-lab]]
- [[recettes-docker-compose]]
