[{"data":1,"prerenderedAt":137},["ShallowReactive",2],{"seo-verification":3,"blog-self-host-semaphore-ui-on-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-self-host-semaphore-ui-on-vps-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":77,"ctaBody":78,"ctaButton":79,"ctaUrl":80,"relatedPosts":81},361,"self-host-semaphore-ui-on-vps",{"fr":12,"en":10,"ar":13,"es":14},"self-host-semaphore-ui-vps","كيفية-استضافة-semaphore-ui-على-خادم-vps","como-alojar-semaphore-ui-en-un-vps","Self-host Semaphore UI on a VPS: Ansible Web Dashboard","Deploy Semaphore UI on a VPS: open-source web UI for Ansible, Terraform and OpenTofu — no CLI, embedded SQLite, no external database.",4,0,false,"2026-09-18T00:00:00+00:00","2026-09-19T02:00:43+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Deployment","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-semaphore-ui-vps-poster.svg",{"categorySlug":33,"appSlug":34},"application-deployment-devops","semaphore","Managing a server fleet with Ansible from the terminal works well at small scale. As the team grows or playbooks multiply, you lose visibility: who ran what, when, with what outcome? Semaphore UI solves this with a lightweight web interface — a single Docker container, an embedded SQLite database, no external services required. Every team member can trigger tasks, review logs and schedule recurring runs from their browser.",[37,41,52,55,74],{"title":38,"type":39,"body":40},"Why self-host an Ansible dashboard?","h2","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.\n\nSemaphore 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'.",{"title":42,"type":43,"items":44},"What Semaphore UI brings to a ServOrbit VPS","ul",[45,46,47,48,49,50,51],"**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.",{"title":53,"type":39,"body":54},"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:\n\n```\nssh -L 3000:127.0.0.1:3000 root@\u003Cvps-ip>\n```\n\nThen open `http:\u002F\u002Flocalhost: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.",{"title":56,"type":57,"steps":58},"Getting started with Semaphore UI on ServOrbit","steps",[59,62,65,68,71],{"title":60,"body":61},"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.",{"title":63,"body":64},"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.",{"title":66,"body":67},"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.",{"title":69,"body":70},"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.",{"title":72,"body":73},"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.",{"title":75,"type":39,"body":76},"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.\n\nSecrets 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.","A fleet to drive from a browser?","ServOrbit deploys Semaphore UI in one click on Ubuntu 24.04 — credentials generated, port bound to loopback, ready in minutes.","Deploy Semaphore UI","\u002Fmarketplace\u002Fapplication-deployment-devops\u002Fsemaphore",[82,103,120],{"id":83,"slug":84,"slugs":85,"title":89,"excerpt":90,"readTime":91,"views":92,"isPinned":19,"publishedAt":93,"updatedAt":94,"category":95,"categories":100,"featuredImage":29,"bgImage":30,"posterImage":102,"relatedSolution":29},236,"automating-vps-server-management-with-ansible",{"fr":86,"en":84,"ar":87,"es":88},"ansible-automatiser-serveurs-vps","أتمتة-إدارة-خوادم-vps-باستخدام-ansible","automatizar-servidores-vps-con-ansible","Automating VPS Server Management with Ansible","Learn how to automate VPS fleet management with Ansible: inventory, playbooks, roles and Vault for a reproducible, auditable infrastructure.",10,1,"2026-08-08T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":96,"name":97,"slug":98,"color":99,"icon":98},2,"Automation","automatisation","bg-brand-action\u002F10 text-brand-action",[101],{"id":96,"name":97,"slug":98,"color":99,"icon":98},"\u002Fblog\u002Fcovers\u002Fansible-automatiser-serveurs-vps-poster.svg",{"id":104,"slug":105,"slugs":106,"title":110,"excerpt":111,"readTime":112,"views":92,"isPinned":19,"publishedAt":113,"updatedAt":94,"category":114,"categories":115,"featuredImage":29,"bgImage":30,"posterImage":117,"relatedSolution":118},41,"deploy-your-applications-with-coolify-on-a-vps",{"fr":107,"en":105,"ar":108,"es":109},"deployer-avec-coolify","نشر-تطبيقاتك-باستخدام-coolify-على-vps","desplegar-aplicaciones-con-coolify-en-un-vps","Deploy Your Applications with Coolify on a VPS","Deploy Coolify on a VPS: installation, HTTPS configuration, Git connection, deploying your first application, databases, backups, and troubleshooting.",9,"2026-05-10T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[116],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-coolify-poster.svg",{"categorySlug":33,"appSlug":119},"coolify",{"id":121,"slug":122,"slugs":123,"title":127,"excerpt":128,"readTime":23,"views":18,"isPinned":19,"publishedAt":129,"updatedAt":94,"category":130,"categories":131,"featuredImage":29,"bgImage":30,"posterImage":133,"relatedSolution":134},27,"installing-windmill-on-a-vps-self-hosted-automation",{"fr":124,"en":122,"ar":125,"es":126},"installer-windmill-vps","تثبيت-windmill-على-خادم-vps-أتمتة-ذاتية-الاستضافة","instalar-windmill-en-un-vps","Installing Windmill on a VPS: self-hosted automation","Install Windmill on your VPS: turn your Python, TypeScript and Bash scripts into internal workflows and UIs, self-hosted via Docker.","2026-05-24T00:00:00+00:00",{"id":96,"name":97,"slug":98,"color":99,"icon":98},[132],{"id":96,"name":97,"slug":98,"color":99,"icon":98},"\u002Fblog\u002Fcovers\u002Finstaller-windmill-vps-poster.svg",{"categorySlug":135,"appSlug":136},"automation-workflows","windmill",1789783577553]