Installation
The canonical install walkthrough is in the main repo at deploy/INSTALL.md. Every command is verified against a real Contabo VPS.
Quick summary
- DNS — point
app.yourdomain.comA record at your VPS IP (Cloudflare DNS-only / grey cloud for initial cert issuance) - SSH in, install Docker:
Terminal window curl -fsSL https://get.docker.com | shsystemctl enable --now docker - Clone the repo (with a GitHub deploy key if you forked privately):
Terminal window git clone https://github.com/mezzanine-cloud/mezzanine.git /opt/mezzanine - Issue the Let’s Encrypt cert on the host before bringing up nginx:
Terminal window apt install -y certbotcertbot certonly --standalone -d app.yourdomain.com -m you@yourdomain.com --agree-tos -nsystemctl enable --now certbot.timer - Configure + start the stack:
Terminal window cd /opt/mezzanine/deploy/dockercp .env.example .env$EDITOR .env # set DOMAIN=app.yourdomain.comdocker compose --env-file .env builddocker compose --env-file .env up -ddocker compose ps # all 3 services should be Up/healthy - Open
https://app.yourdomain.com→ create the first admin → you’re in.
What you’ll have
- A Mezzanine panel at
https://app.yourdomain.com - An SQLite-backed DB on a named Docker volume that survives container recreates
- Three running containers (
backend,frontend,nginx) bound to host:80/:443 - TLS auto-renewing via certbot’s systemd timer
- A repo-cloned
/opt/mezzaninethat you cangit pullto update
Beyond Phase 1
The walkthrough continues to:
- Phase 7 — wire CI/CD so Mezzanine deploys itself on
git push - Phase 8 — deploy a landing site (e.g.
yourdomain.com) through Mezzanine itself - Phase 9 — security hardening (ufw, key-only SSH, Cloudflare proxied, DB backups)
See the full INSTALL.md for every command + troubleshooting for every error we hit during the verified install.
Local dev
If you’re hacking on Mezzanine itself (not deploying it):
git clone https://github.com/mezzanine-cloud/mezzanine.gitcd mezzaninenpm installnpm run devOpen http://localhost:3000. First-load wizard creates the admin. SQLite lives at backend/data/mezzanine.db (gitignored).