selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

haloy logo

Self-host haloy

v0.1.0-beta.63

CLI-first deployment platform for your own VPS

BetaOpen SourceMIT
Updated4 months ago
LanguageGo
Setup difficultyModerate
Stars
398
Ports
80 (HTTP (redirects to HTTPS)), 443 (HTTPS (TLS termination))
Requires
Docker
Install with Go

What is haloy?

Haloy is a lightweight deployment platform for developers and teams who want to run applications on their own servers without the complexity of Kubernetes or heavy PaaS control planes. It consists of a CLI (haloy) that runs locally or in CI/CD, and two server daemons (haloyd for orchestration and haloy-proxy for TLS termination and routing) that you install on a Linux VPS. You define deployments in a haloy.yaml file pointing to a Dockerfile, then run 'haloy deploy' to build, upload, and launch your app with automatic HTTPS certificates, health checks, and zero-downtime rolling updates. It supports multi-target deployments (staging/production), horizontal scaling via replicas, secret management via 1Password or SOPS, deployment hooks, and database/service presets for stateful workloads. The project is in beta (v0.1.0-beta.x) with MIT license, no paid tiers, and no vendor lock-in — your servers, containers, and data stay yours.

Should you self-host haloy?

haloy scores 48/100 on selfhost.directory (how scoring works) and ranks #7 of 11 in Deployment. It has 398 GitHub stars.

There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is dokploy (80/100, 38 090 stars). It scores higher overall, so compare the two before you pick. See haloy vs dokploy side by side.

Features

  • Automatic HTTPS
  • CLI-first workflow
  • Database/Service presets
  • Deployment hooks
  • Health checks & auto-recovery
  • Horizontal Scaling
  • Instant Rollbacks
  • Multi-server deployments
  • No vendor lock-in
  • Preview environments
  • Protected targets
  • Secret Management
  • Zero-Downtime Deployments

haloy README

How to install haloy

Install haloy with Go

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

Requires Go toolchain

How to configure haloy

  • api_tokenAPI token value source using value, from.env, or from.secret

    API token value source using value, from.env, or from.secret

  • deployment_strategyrolling when domains are set, replace otherwiseDeployment strategy: rolling or replace

    Deployment strategy: rolling or replace

    values: rolling, replace

  • domainsDomain routing configuration

    Domain routing configuration

  • envEnvironment variables with value source support

    Environment variables with value source support

  • global_post_deployCommands to run once after all deployments finish

    Commands to run once after all deployments finish

  • global_pre_deployCommands to run once before any deployment starts

    Commands to run once before any deployment starts

  • health_check_path/Health check endpoint

    Health check endpoint

  • imageDocker image configuration (repository, tag, pull policy, etc.)

    Docker image configuration (repository, tag, pull policy, etc.)

  • min_ready_seconds0Minimum stabilization time after a container becomes healthy before it is considered ready

    Minimum stabilization time after a container becomes healthy before it is considered ready

    values: 0 to 600

  • nameApplication name (required for single-target configs)

    Application name (required for single-target configs)

  • naming_strategydynamicContainer naming strategy

    Container naming strategy

    values: dynamic, static

  • networkhaloyDocker network for the container

    Docker network for the container

  • port8080Container port to expose

    Container port to expose

  • post_deployCommands to run after deploy (per target)

    Commands to run after deploy (per target)

  • pre_deployCommands to run before deploy (per target)

    Commands to run before deploy (per target)

  • presetApply preset configuration

    Apply preset configuration

    values: database, service

  • protectedfalseExclude from --all deployments

    Exclude from --all deployments

    values: true, false

  • replicas1Number of container instances

    Number of container instances

  • secret_providersConfigure secret providers (1Password, SOPS)

    Configure secret providers (1Password, SOPS)

  • serverHaloy server API URL

    Haloy server API URL

  • targetsDefine multiple deployment targets

    Define multiple deployment targets

  • volumesVolume mounts

    Volume mounts

More in Deployment

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…