Turn any VPS into a production-ready app platform in minutes.
Zero-downtime deploys, automatic HTTPS, and instant rollbacks, without complex setup or vendor lock-in.
Website ·
Docs
✨ Features
Haloy helps you deploy apps with:
Fast setup on a fresh VPS
Automatic HTTPS
Zero-downtime deploys
Simple rollbacks
Preview environments
No Kubernetes required
No vendor lock-in
🚀 Quickstart
Prerequisites
Server : Any modern Linux server
Local : Docker for building your app
Domain : A domain or subdomain pointing to your server for secure API access
1. Install haloy
Install script:
curl -fsSL https://sh.haloy.dev/install-haloy.sh | sh
Homebrew (macOS / Linux):
brew install haloydev/tap/haloy
npm/pnpm/bun
npm i -g haloy
pnpm add -g haloy
bun add -g haloy
2. Server Setup
SSH into your server and run the install script with your API domain:
curl -fsSL https://sh.haloy.dev/install-haloyd.sh | API_DOMAIN=haloy.yourserver.com sh
Note: If you're not logged in as root, use | sudo sh instead of | sh.
After installation completes, copy the API token from the output and add the server to your local machine:
haloy server add haloy.yourserver.com <token>
For detailed options, see the Server Installation guide.
3. Create haloy.yaml
Create a haloy.yaml file:
name: "my-app"
server: haloy.yourserver.com
domains:
- domain: "my-app.com"
aliases:
- "www.my-app.com" # Redirects to my-app.com
This will look for a Dockerfile in the same directory as your config file, build it and upload it to the server. This is the Haloy configuration in its simplest form.
Check out the examples repository for complete configurations showing how to deploy common web apps like Next.js, TanStack Start, static sites, and more.
4. Deploy
haloy deploy
# Check status
haloy status
That's it! Your application is now deployed and accessible at your configured domain.
Learn More
Development
Local builds can embed Git-derived version metadata:
make build
Releases are tag-driven. To cut a release:
./tools/create-release-tag.sh --next
# Or provide an explicit tag
./tools/create-release-tag.sh v0.1.0-beta.43