Why self-host an Ansible dashboard?
The command line is the most direct tool for Ansible, but it isolates. When several people share a control node, there is no shared journal, no fine-grained access control, no built-in scheduling. You end up running playbooks over SSH on the control server — without a safety net.
Semaphore UI provides that safety net: every execution is tracked, every team member logs in with their own account, and secrets stay in an encrypted Key Store rather than in a .env file sitting on disk. For an agency managing ten clients or a DevOps team maintaining a heterogeneous fleet, this is the difference between 'it works' and 'we know what happened'.
What Semaphore UI brings to a ServOrbit VPS
- Full web interface — launch, schedule and track Ansible Playbooks, Terraform plans and Bash scripts from a browser, no SSH to the control node.
- Embedded SQLite — no external service (PostgreSQL, Redis): all state lives in a file mounted in a Docker volume.
- Git-backed projects — point to your Ansible or Terraform repository; Semaphore pulls the code at each execution, faithful to the commit in your branch.
- Encrypted Key Store — SSH keys, passwords and API tokens stored as named secrets, injected at execution time, never in YAML.
- Role-based access control — Viewer, Task Runner or Admin per project: define precisely who can view logs and who can trigger a deployment.
- Scheduled tasks — built-in cron for nightly patches, weekly backups or certificate renewals.
- Real-time log streaming — follow playbook output during execution with colour coding and searchable history.
Access without a domain: SSH tunnel or ServOrbit subdomain
Semaphore UI listens on port 3000 and does not require a domain name. For local access from your workstation:
ssh -L 3000:127.0.0.1:3000 root@<vps-ip>Then open http://localhost:3000 in your browser. For permanent team-wide access, attach a domain from your ServOrbit dashboard — nginx will terminate TLS and proxy to the container — or enable the free {app}.{slug}.servorbit-dns.com subdomain included with every VPS.
Getting started with Semaphore UI on ServOrbit
Deploy from the marketplace
In your ServOrbit dashboard, go to Marketplace → Deployment → Semaphore UI and click Deploy. The VPS is provisioned on Ubuntu 24.04 with Docker pre-installed; the container starts automatically.
Retrieve your credentials
ServOrbit generates an admin password at provisioning time and stores it in your credential vault. Log in as admin with that password. Change it immediately from Profile → Change Password.
Create a project and connect your repository
Under Projects → New Project, give your project a name and add the URL of your Ansible or Terraform repository. If the repository is private, add an SSH key or access token to the Key Store first, then reference it in the project settings.
Set up an inventory and run your first task
Under Inventory, create an entry listing your target hosts (static list or dynamic script). In Task Templates, define a task referencing a playbook and the inventory you just created, then click Run.
Schedule recurring tasks
From the Schedule tab of a template, define a cron expression for automatic executions — nightly patches, backups, certificate renewals. The full execution history is available from the dashboard.
Managing secrets: the Key Store
The weak point of many Ansible setups is secret management: SSH keys lying in files, passwords in plain-text variables. Semaphore UI solves this with an encrypted Key Store. Create an entry of type 'SSH Key', 'Login with password' or 'None' (for environment variables), give it a name, and reference it in your templates.
Secrets are never written to YAML files or logs. The encryption key (SEMAPHORE_ACCESS_KEY_ENCRYPTION) is generated by ServOrbit at provisioning and stored in your credential vault — it never transits in plain text.