FrostDeploy is a self-hosted deploy platform for your VPS/VDS —
a Vercel, Netlify and Render alternative you fully own.
Connect a Git repo, press Deploy: build, HTTPS, domain and rollback are handled for you.
One command on a fresh Debian 12+ / Ubuntu 22.04+ server, as root:
curl -fsSL https://raw.githubusercontent.com/ARTFROST1/FrostDeploy/main/install.sh | sudo bashThen follow Quick start — five steps, about ten minutes, from an empty server to your first site live on HTTPS.
Never touched a server? Hand the whole thing to Claude Code, Cursor, Codex or any coding agent — this repository is written to be read by them.
Send your agent this link:
https://github.com/ARTFROST1/FrostDeploy
…or paste this prompt:
Install FrostDeploy on my server and set it up end to end.
Read https://github.com/ARTFROST1/FrostDeploy — the README and AGENTS.md there are
the instructions. Follow them step by step.
My server: root@<SERVER-IP>
My domain: <example.com>
Ask me for anything you need (DNS access, GitHub token, passwords), tell me exactly
what to click, and stop when the panel is open in my browser on my own domain.
The agent will check your DNS, run the installer, open the SSH tunnel, walk you through the setup wizard and hand you a working panel. Machine-readable instructions live in AGENTS.md.
A deploy platform that behaves like Vercel or Netlify — but the server, the domains, the data and the bill are yours.
- Unlimited projects and sites on one box — no per-seat pricing, no build-minute limits.
- Your own domains, HTTPS certificates issued and renewed automatically.
- Push-button deploys from your GitHub repositories, private ones included.
- Instant rollback to any previous version, roughly a second.
- Runs anywhere — any VPS, VDS, dedicated box or home server with Debian or Ubuntu. 1 GB RAM is enough to start.
- No Docker, no Kubernetes, no vendor account. Nothing calls home.
Good fit for freelancers and studios hosting client sites, for side projects that outgrew a free tier, and for anyone who wants a self-hosted PaaS instead of a monthly SaaS invoice.
Any VPS or VDS with Debian 12+ or Ubuntu 22.04+ (x86_64), from 1 vCPU / 1 GB RAM / 10 GB
disk. When ordering, fill in both:
- SSH key — paste your
~/.ssh/id_ed25519.pub. This is your everyday login. - root password — save it in a password manager. It is the emergency way in through the hosting provider's VNC console.
You need one domain for everything. In your DNS provider, create two A records pointing at the server IP:
A @ → <server IP> ; the domain itself
A * → <server IP> ; wildcard — required
The wildcard is what gives every future project an address like myshop.example.com without you
touching DNS again. Check it before installing — any made-up name must resolve:
dig +short A anything.example.com @1.1.1.1 # must return your server IPssh root@<server IP>
curl -fsSL https://raw.githubusercontent.com/ARTFROST1/FrostDeploy/main/install.sh | sudo bashTwo to five minutes. It installs everything needed and starts the panel.
The panel is not exposed to the internet until it has your domain and a certificate, so the first login goes through an SSH tunnel.
Important
Run this on your own computer, not on the server. If your prompt says root@server:~#,
open a new terminal window first.
ssh -L 9000:127.0.0.1:9000 root@<server IP>Leave that window open and go to http://127.0.0.1:9000 in your browser.
| Field | What to enter |
|---|---|
| Admin password | At least 14 characters. Save it in your password manager |
| GitHub token | A fine-grained personal access token with Contents: Read for the repositories you want to deploy — create one here |
| Your domain | Just the domain, e.g. example.com — no https://, no subdomain |
Done. The panel moves to https://frostdeploy.example.com with a certificate of its own, and
you can close the tunnel. From here everything happens in the UI: add a project, pick a repository,
press Deploy.
Warning
Save two things in your password manager: the admin password and the ENCRYPTION_KEY line from
/opt/frostdeploy/.env. That key protects everything stored in the panel — lose the server
together with the key and a backup will not help you.
| Feature | What it means for you | |
|---|---|---|
| 🔍 | Framework autodetection | Next.js, Astro, Nuxt, SvelteKit, Remix, Python, plain static — recognized automatically, no config to write |
| 🚀 | One-click deploy | Pick a repo and a branch, press Deploy. Builds are cached, so repeat deploys are fast |
| 📡 | Live build logs | Watch every step in the dashboard, cancel a build mid-run |
| 🔄 | Instant rollback | One click back to any previous version |
| 🌐 | Domains & free HTTPS | Custom domains and automatic subdomains, certificates issued and renewed for you |
| 🔐 | Encrypted secrets | Environment variables and tokens stored encrypted, changes trigger a rebuild |
| 👥 | Isolated sites | Every site runs under its own system user — one project cannot read another |
| 🖥 | Multiple servers | One panel, many servers: keep clients on separate machines |
| 📊 | Monitoring | CPU, RAM and disk in real time, plus per-site status |
| 🔒 | Serious access control | Two-factor authentication, optional client certificates, signed and verified updates |
| 💾 | Backups | Scheduled backups, locally or to any S3-compatible storage |
| 📝 | Client CMS portal | Optional companion app where your clients edit their own site content without touching code |
Coming next: automatic deploys on every push (Git webhooks), so a git push ships the site.
flowchart LR
G["Your Git repository"] -->|Deploy| P["FrostDeploy panel<br/>on your server"]
P -->|builds and runs| S1["shop.example.com"]
P -->|builds and runs| S2["client-site.com"]
S1 -->|HTTPS| V["Visitors"]
S2 -->|HTTPS| V
Every deploy follows the same safe path — and if the new version does not come up, the old one keeps serving traffic:
flowchart LR
A["Press Deploy"] --> B["Build"] --> C["New version"] --> D{"Health check"}
D -->|ok| E["Live on your domain"]
D -->|failed| F["Automatic rollback<br/>previous version stays live"]
Everything is done from the panel UI. These commands exist for the rare moment you need the server itself:
| Command | What it does |
|---|---|
frostdeploy status |
Is the panel running? |
frostdeploy logs |
Live panel logs |
frostdeploy restart |
Restart the panel |
frostdeploy update |
Update to the latest version — rolls back by itself if anything is wrong |
frostdeploy rollback |
Go back to the previous version |
frostdeploy reset-password |
Set a new admin password if you are locked out |
frostdeploy uninstall |
Remove FrostDeploy (add --purge to delete data and sites too) |
The browser will not open http://127.0.0.1:9000
Almost always the ssh -L … command was run on the server instead of your own computer. Check the
prompt: you@your-laptop ~ % is yours, root@server:~# is the server. Then, on the server, run
frostdeploy status to confirm the panel is running.
The installer says Unsupported OS
FrostDeploy needs Debian 12+ or Ubuntu 22.04+ on x86_64. AlmaLinux, CentOS, Rocky, Fedora, Arch
and arm64 are not supported. Reinstall the server with a supported image.
The domain does not open, or has no certificate
Check both DNS records, wildcard included: dig +short A anything.example.com @1.1.1.1 must return
your server IP. Certificates are only issued once the domain points at the server and ports 80 and
443 are reachable. DNS changes can take up to a few hours to propagate.
A deploy fails
Open the build log in the dashboard — it shows the exact failing step. The usual causes are a missing environment variable, a build command that needs more memory, or a private repository the GitHub token cannot read. The previously deployed version keeps running the whole time.
Something broke after an update
frostdeploy rollback returns you to the previous version.
How is this different from Vercel, Netlify or Render?
Same workflow, different economics and control. Your sites run on hardware you rent or own, so there are no build-minute limits, no bandwidth surprises, no per-seat pricing, and no third party holding your production. You pay for the server and nothing else.
Do I need to know Linux?
For the install, you need to copy and paste two commands. Everything after that happens in the web panel. If even that feels like a lot, hand the agent prompt to an AI assistant and it will do the setup with you.
How many sites fit on one server?
Static sites cost almost nothing — dozens fit comfortably. Server-rendered apps (Next.js, Nuxt) use real memory: budget roughly 150–300 MB each, so a 2 GB box handles several of them plus the panel.
Does it work with private repositories?
Yes. That is what the GitHub token in the setup wizard is for; it is stored encrypted.
Do I need Docker?
No. Nothing to build, push or pull — sites run directly on the server, which is why 1 GB of RAM is enough to start.
Can I move to another server later?
Yes — install FrostDeploy on the new server and restore a backup.
Is the source code open?
No. This repository distributes the installer and the ready-to-run builds; the application source is private. Updates are signed and verified automatically before they are installed.
For the curious: Node.js 22, SQLite, Caddy for automatic HTTPS, and systemd for processes. No containers, no orchestrator, no background daemons phoning home — which is exactly why it runs happily on the cheapest VPS you can rent.
Proprietary — see LICENSE. The installer is public so it can be read before it runs; the application source code is not distributed.
⚡ Install now · Releases · Agent instructions · Ask a question
English · Русский · 简体中文 · Español
FrostDeploy — self-hosted deploy platform and a Vercel, Netlify, Render and Heroku alternative for your own VPS. Deploy Next.js, Astro, Nuxt, SvelteKit, Remix and static sites to your own server with automatic HTTPS, custom domains and one-click rollback. A self-hosted PaaS in the spirit of Coolify, Dokku and CapRover — without Docker.
© 2026 ARTFROST1