Skip to content

Repository files navigation

FrostDeploy — self-hosted Vercel alternative

English Русский 简体中文 Español

Your own Vercel, on your own server.

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.

Latest release Downloads Install time License

Debian / Ubuntu Any VPS No Docker required Auto HTTPS AI-agent friendly


⚡ Install

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 bash

Then follow Quick start — five steps, about ten minutes, from an empty server to your first site live on HTTPS.


🤖 Or let your AI agent do it

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.


🧊 What you get

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.


🚀 Quick start

Step 1 — Get a server

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.

Step 2 — Point a domain at it

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 IP

Step 3 — Run the installer

ssh root@<server IP>
curl -fsSL https://raw.githubusercontent.com/ARTFROST1/FrostDeploy/main/install.sh | sudo bash

Two to five minutes. It installs everything needed and starts the panel.

Step 4 — Open the panel through an SSH tunnel

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.

Step 5 — Finish the setup wizard

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.


✨ Features

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.


🛠 How it works

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
Loading

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"]
Loading

⌨️ Command line

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)

🧯 Troubleshooting

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.


❓ FAQ

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.


🧱 Under the hood

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.


📄 License

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

About

Self-hosted deploy platform for your own VPS — a Vercel, Netlify and Render alternative. Deploy Next.js, Astro, Nuxt & static sites with automatic HTTPS, custom domains and one-click rollback. No Docker.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages