Self-host Keila
updated Sep 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Sep 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
An open-source newsletter tool with a visual and Markdown campaign editor, sign-up forms, contact segments and campaign analytics. It sends through SMTP or providers such as Amazon SES, SendGrid, Mailgun and Postmark.
Key facts
CategoryNewsletter
LicenseAGPL-3.0
StackElixir, Phoenix, PostgreSQL
Min RAM512 MB
Official imageyes
Measured idle RAM291 MB
Difficulty
Websitekeila.io (opens in new tab)
What you need
- Any VPS with at least 512 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:
# Keila + Postgres — replace the MAILER_* values with your real SMTP account
cat > .env <<EOF
SECRET_KEY_BASE=$(openssl rand -hex 48)
POSTGRES_PASSWORD=$(openssl rand -hex 16)
EOF
cat > docker-compose.yml <<'EOF'
services:
keila:
image: pentacent/keila:0.30.3
restart: unless-stopped
ports: ["4000:4000"]
depends_on: [postgres]
environment:
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
DB_URL: postgres://postgres:${POSTGRES_PASSWORD}@postgres/postgres
URL_HOST: SERVER_IP
MAILER_SMTP_HOST: smtp.example.com
MAILER_SMTP_FROM_EMAIL: newsletter@example.com
MAILER_SMTP_PASSWORD: change-me
postgres:
image: postgres:17-alpine
restart: unless-stopped
environment: { POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" }
volumes: ["pgdata:/var/lib/postgresql/data"]
volumes: { pgdata: }
EOF
docker compose up -d
# open http://SERVER_IP:4000 — the root user's password is in: docker compose logs keilaHead-to-head
More self-hosted tools
Newsletter
listmonk
GoVuePostgreSQL
easyRead guide →
Wiki & docs
Wiki.js
Node.jsVuePostgreSQL
easyRead guide →
Backup
restic
Go
easyRead guide →
Code hosting
Soft Serve
Go
easyRead guide →