haloy

module
v0.1.0-beta.69 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 18, 2026 License: MIT

README

Haloy

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

Go:

go install github.com/haloydev/haloy/cmd/haloy@latest

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

See CONTRIBUTING.md for development setup and contribution guidelines.

Local builds can embed Git-derived version metadata:

task build

Releases are tag-driven. Cutting a release requires Task:

./tools/create-release-tag.sh --next

# Or provide an explicit tag
./tools/create-release-tag.sh v0.1.0-beta.43

Directories

Path Synopsis
cmd
haloy command
haloy-proxy command
haloyd command
internal
api
haloyproxy
Package haloyproxy wires up the standalone haloy-proxy daemon: the reverse proxy data plane (ports 80/443) plus a control API on a unix domain socket that haloyd pushes routing snapshots to.
Package haloyproxy wires up the standalone haloy-proxy daemon: the reverse proxy data plane (ports 80/443) plus a control API on a unix domain socket that haloyd pushes routing snapshots to.
proxyclient
Package proxyclient is haloyd's client for the haloy-proxy control API.
Package proxyclient is haloyd's client for the haloy-proxy control API.
proxywire
Package proxywire defines the wire format exchanged between haloyd (the control plane) and haloy-proxy (the data plane): a JSON routing snapshot pushed over the proxy control socket and persisted as an atomic snapshot file so the proxy can boot with last-known-good routes while haloyd is down.
Package proxywire defines the wire format exchanged between haloyd (the control plane) and haloy-proxy (the data plane): a JSON routing snapshot pushed over the proxy control socket and persisted as an atomic snapshot file so the proxy can boot with last-known-good routes while haloyd is down.
ui
tools
vulncheck command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL