{ "slug": "semaphoreui", "kind": "compose", "metadata": { "name": "Semaphore UI", "description": "Modern web UI for Ansible automation with task scheduling, inventory management, and playbook execution. Ideal for teams who want a user-friendly way to run and monitor Ansible.", "tags": [ "traefik", "database" ], "icon": { "provider": "selfhst", "id": "semaphore-ui" }, "draft": false, "version": { "name": "v2.18.1", "source_dep_name": "docker.io/semaphoreui/semaphore", "source_dep_version": "v2.18.1" } }, "variables": [ { "title": "General", "name": "general", "items": [ { "name": "service_name", "type": "str", "title": "Service Name", "required": false, "default": "semaphoreui", "config": { "placeholder": "semaphoreui" } }, { "name": "container_name", "type": "str", "title": "Container Name", "required": false, "default": "semaphoreui", "config": { "placeholder": "semaphoreui" } }, { "name": "restart_policy", "type": "enum", "title": "Restart Policy", "required": true, "default": "unless-stopped", "config": { "options": [ "unless-stopped", "always", "on-failure", "no" ] } }, { "name": "secret_key", "type": "secret", "title": "Secret Key", "required": true, "description": "Secret key for encrypting access keys", "config": { "autogenerated": { "kind": "base64", "bytes": 32 } } }, { "name": "admin_user", "type": "str", "title": "Administrator username", "required": true, "default": "admin", "config": { "placeholder": "admin" } }, { "name": "admin_name", "type": "str", "title": "Administrator full name", "required": true, "default": "Administrator", "config": { "placeholder": "Administrator" } }, { "name": "admin_email", "type": "str", "title": "Administrator email address", "required": true, "default": "admin@home.arpa", "config": { "placeholder": "admin@home.arpa" } }, { "name": "admin_pass", "type": "secret", "title": "Administrator password", "required": true, "config": { "autogenerated": { "length": 32 } } }, { "name": "ansible_host_key_checking", "type": "bool", "title": "Host Key Checking", "required": false } ] }, { "title": "Ports", "name": "ports", "items": [ { "name": "ports_http", "type": "str", "title": "HTTP Port", "required": false, "default": 3000, "config": { "placeholder": "3000" } } ] }, { "title": "Traefik", "name": "traefik", "toggle": "traefik_enabled", "items": [ { "name": "traefik_enabled", "type": "bool", "title": "Traefik", "required": false, "default": false }, { "name": "traefik_host", "type": "str", "title": "Host", "required": true, "config": { "placeholder": "semaphoreui" } }, { "name": "traefik_domain", "type": "str", "title": "Domain", "required": true, "config": { "placeholder": "home.arpa" } }, { "name": "traefik_entrypoint", "type": "str", "title": "Entrypoint", "required": true, "default": "web", "config": { "placeholder": "web" } }, { "name": "traefik_network", "type": "str", "title": "Network", "required": true, "default": "traefik", "config": { "placeholder": "traefik" } }, { "name": "traefik_tls_enabled", "type": "bool", "title": "TLS", "required": false, "default": false }, { "name": "traefik_tls_entrypoint", "type": "str", "title": "TLS Entrypoint", "required": true, "default": "websecure", "config": { "placeholder": "websecure" }, "needs": [ "traefik_tls_enabled=true" ] }, { "name": "traefik_tls_certresolver", "type": "str", "title": "Cert Resolver", "required": true, "default": "cloudflare", "config": { "placeholder": "cloudflare" }, "needs": [ "traefik_tls_enabled=true" ] } ] }, { "title": "Database", "name": "database", "items": [ { "name": "database_type", "type": "enum", "title": "Database Type", "required": false, "default": "sqlite", "config": { "options": [ "sqlite", "postgres", "mysql" ] } }, { "name": "database_path", "type": "str", "title": "Database Path", "required": false, "default": "/etc/semaphore/semaphore.sqlite", "needs": [ "database_type=sqlite" ], "config": { "placeholder": "/etc/semaphore/semaphore.sqlite" }, "description": "Path to the SQLite database file." }, { "name": "database_name", "type": "str", "title": "Database Name", "required": false, "default": "semaphore", "needs": [ "database_type=postgres,mysql" ], "config": { "placeholder": "semaphore" } }, { "name": "database_user", "type": "str", "title": "Database User", "required": false, "default": "semaphore", "needs": [ "database_type=postgres,mysql" ], "config": { "placeholder": "semaphore" } }, { "name": "database_host", "type": "str", "title": "Database Host", "required": true, "default": "postgres", "needs": [ "database_type=postgres,mysql", "database_external=true" ], "config": { "placeholder": "postgres" } }, { "name": "database_password", "type": "secret", "title": "Database Password", "required": true, "needs": [ "database_type=postgres,mysql" ], "config": { "autogenerated": { "length": 32 } } }, { "name": "database_external", "type": "bool", "title": "External Database", "required": false, "default": false, "needs": [ "database_type=postgres,mysql" ] } ] } ] }