Mountabo helps you deploy your app to your own server.
You run it locally, connect GitHub, add a VPS, and configure a repo once. After that, pushes to your chosen branch deploy through GitHub Actions straight to your server.
Mountabo deploys any repository with a Dockerfile or a Docker Compose setup, whatever the stack. Pick one in the picker, choose a server, and deploy.
- Go
- Node.js and npm
- a Linux VPS you can SSH into as
root - a repo with either a
Dockerfileor a Docker Compose setup
If you want custom domains:
- DNS pointing at your server
- ports
80and443open
make depscp .env.example .envFill in:
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
MOUNTABO_BACKEND=http://localhost:7778
MOUNTABO_HTTP_ADDR=127.0.0.1:7778
# Bring your own AI key for the terminal page's AI helper. Without it the
# terminal still works, but the helper shows a hint to set the key. Grab one
# at https://console.anthropic.com.
ANTHROPIC_API_KEY=...Mountabo is local first and bring your own key: the AI helper calls Anthropic directly from your backend, so the key never leaves your machine and you pay for your own usage.
make mountaboThen open http://localhost:4321.
Make sure your GitHub connection settings are present in .env, then connect your account from the app.
Mountabo asks for:
repoworkflow
Open the app and connect your GitHub account.
Enter:
- server name
- IP address
- SSH port
- timezone
- root password
- optional personal SSH public key
Mountabo prepares the box for deploys by creating the mountabo user, installing SSH keys, and installing Docker.
You can also turn on optional extras like firewall rules, fail2ban, monitoring tools, and SSH hardening.
Pick:
- repository
- branch
- server
- deploy strategy
- deploy directory
- root directory if the app is inside a subfolder
- environment variables
- port mappings
Mountabo previews what it will set up, then writes the deploy workflow and required secrets to GitHub.
Push to the configured branch and GitHub Actions will deploy it to your server.
Mountabo does not need to stay open for deploys to run.
Use the monitor screen to see configured deployments, recent GitHub Actions runs, and basic server metrics.
For a ready server, Mountabo can configure nginx and Let's Encrypt for a custom domain pointing at one of your app ports.
Open /terminal to get a web shell on any of your set up servers.
- Pick a server from the dropdown; the prompt becomes
mountabo@<server> <cwd> %. - Type a shell command and run it. The command runs as the
mountabouser over SSH, with the working directory carried between commands socdand relative paths feel persistent. - By default each command goes through a confirm step. Flip
express modeon to run commands immediately without the per command confirm.
Below the terminal there is an AI helper. Describe what you want in plain English (say, "I want to know if there are any containers running") and it suggests a shell command with a short explanation. Click use this command to fill the terminal above with the suggestion, then review and run it yourself. The helper only suggests; nothing it returns is ever executed automatically.
To enable the helper, set ANTHROPIC_API_KEY in your .env to a key from the Anthropic console and restart the backend. Without it, the terminal still works and the helper shows a hint to set the key.
- Mountabo runs locally.
- The backend listens on
127.0.0.1:7778. - The frontend runs on
http://localhost:4321. - The current setup flow is aimed at fresh Ubuntu-style servers.

