Deploy and manage modern applications.

Logo Semaphore UI

Semaphore UI

Self-hosted Ansible/Terraform web dashboard — no CLI, embedded SQLite.

256 MB RAM 1 vCPU Port 3000 In validation

In validation

Automatic installation for this solution is ready and currently going through our tests on a real server. Ordering will open as soon as validation is complete.

Tech stack

DockerGoSQLite
Minimum RAM256 MB
Minimum CPU1 vCPU
Default port3000
Compatible OSChoice of Linux distributions

Semaphore UI is an open-source web interface for Ansible, Terraform and OpenTofu that replaces the terminal for DevOps teams who want visibility and access control. It stores state in an embedded SQLite database — no PostgreSQL, no Redis, no separate process to maintain. Spin up the container, point it at your inventory, and every team member can trigger playbooks, inspect logs, and schedule recurring jobs from a browser.

Each project in Semaphore maps to a Git repository: playbooks and roles are pulled directly from source control at runtime. Environment variables and secret keys are stored as named key stores and injected at execution time, keeping credentials out of your YAML files. Role-based access control lets you decide who can view logs, trigger tasks or manage the project configuration.

On a ServOrbit VPS, Semaphore runs as a single Docker container on Ubuntu 24.04. The admin account and access-key encryption secret are generated by ServOrbit and shown in your credential vault — no manual database setup or post-install initialisation required.

Key features

Ansible, Terraform and OpenTofu support — manage multiple automation backends from one interface, each with its own environment and inventory.
Git-backed projects — playbooks and roles are pulled from your repository at run time; every execution reflects the commit in your branch.
Embedded SQLite — no external database required; all state lives in a single file mounted in a Docker volume.
Scheduled tasks — define cron-style schedules to run any task automatically, with full execution history and log retention.
Role-based access control — assign Viewer, Task Runner or Admin roles per project; restrict who can trigger deployments or view credentials.
Key store — store SSH private keys, passwords and tokens as named secrets injected at execution time, never written to YAML.
Real-time log streaming — watch playbook output as it runs, with colour-coded task results and a searchable log history.

When to use this solution?

1

Web dashboard for your Ansible fleet

Replace ad-hoc ansible-playbook commands with a shared dashboard. Every team member sees which playbook ran, what changed, and whether it succeeded — without SSH access to the control node.

2

Scheduled infrastructure automation

Define recurring tasks — nightly patches, weekly backups, daily certificate renewals — and let Semaphore run them on schedule. Failures surface immediately in the dashboard and can trigger notifications.

3

Terraform and OpenTofu state runner

Point Semaphore at a Terraform repository and use it as a lightweight CI for infrastructure changes. Plan and apply from the UI, review output before approving, and keep a full audit trail of who triggered each run.

Deploy Semaphore UI on your VPS

Guide optimized for ServOrbit Cloud VPS.

01

Order a ServOrbit VPS

A 1 GB RAM VPS on Ubuntu 24.04 is enough for Semaphore UI with a small fleet. Choose 2 GB if you manage more than 20 hosts concurrently or run long playbooks. The Semaphore UI template is available in the deployment category of the marketplace.

02

Access Semaphore UI

Semaphore UI does not require a domain name. Open an SSH tunnel from your local machine: ssh -L 3000:127.0.0.1:{{ expose_port }} root@<your-vps-ip> then open http://localhost:3000 in your browser. For permanent HTTPS access, attach a domain from your ServOrbit dashboard or use the free {app}.{dns_slug}.servorbit-dns.com subdomain included with every VPS.

03

Log in with your generated 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 after your first login from Profile → Change Password.

04

Create a project and connect your repository

Go to Projects → New Project, enter a name, and add a Git repository URL pointing to your Ansible or Terraform codebase. If the repository is private, add an SSH key or personal access token to the Key Store first, then reference it in the project settings.

05

Add an inventory and run your first task

Under Inventory, create an entry listing your target hosts (static list or dynamic script). Then go to Task Templates, define a task referencing a playbook and the inventory you just created, and click Run. Watch the execution log in real time.

Frequently asked questions

No. Semaphore UI runs on port 3000 without a domain. Open an SSH tunnel: ssh -L 3000:127.0.0.1:{{ expose_port }} root@<vps-ip> then visit http://localhost:3000. For permanent HTTPS access attach a domain from your ServOrbit dashboard or use the free {app}.{dns_slug}.servorbit-dns.com subdomain.

Deploy and manage modern applications.

Semaphore UI isn't orderable yet.

Automatic installation for this solution is ready and currently going through our tests on a real server. Ordering will open as soon as validation is complete.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab