Self-host Halo
updated Sep 2026prices checked · Jul 2026
We earn commissions when you shop through the links below. Full disclosure →
A Java-based website and blog builder with a plugin and theme system, run from a Docker image with PostgreSQL or MySQL.
Key facts
CategoryCMS & blogging
LicenseGPL-3.0
StackJava, Spring Boot, Vue
Min RAM1024 MB
Official imageyes
Difficulty
Websitehalo.run (opens in new tab)
What you need
- Any VPS with at least 1024 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- Under an hour if you've used Docker before
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + USKamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + AsiaDigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + AsiaPaid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Halo 2 community edition (halohub/halo) with PostgreSQL, per the docs' Docker Compose guide (the docs' example uses the halo-pro image)
mkdir -p halo && cd halo
echo "DB_PASS=$(openssl rand -hex 16)" > .env
cat > docker-compose.yml <<'EOF'
services:
halo:
image: halohub/halo:2.26
restart: on-failure:3
depends_on:
halodb: { condition: service_healthy }
ports: ["8090:8090"]
volumes: ["./halo2:/root/.halo2"]
environment:
- JVM_OPTS=-Xmx256m -Xms256m
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
- --spring.r2dbc.username=halo
- --spring.r2dbc.password=${DB_PASS}
- --spring.sql.init.platform=postgresql
- --halo.external-url=http://SERVER_IP:8090/
halodb:
image: postgres:15.4
restart: on-failure:3
volumes: ["./db:/var/lib/postgresql/data"]
healthcheck:
test: ["CMD", "pg_isready"]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=${DB_PASS}
- POSTGRES_USER=halo
- POSTGRES_DB=halo
- PGUSER=halo
EOF
docker compose up -d # → http://SERVER_IP:8090/system/setup (first visit: site title + admin account)More in CMS & blogging
CMS & blogging
Drupal
PHPSymfony
easyRead guide →
CMS & blogging
Ghost
Node.jsMySQL
easyRead guide →
CMS & blogging
Joomla
PHPMySQL
easyRead guide →
CMS & blogging
WordPress
PHPMySQL
easyRead guide →