Quickstart
Goal: a working OpenBitum instance with one paid product, end-to-end, in under 10 minutes.
1. Prerequisites
- A Linux or macOS host with Docker 24+ and Docker Compose v2.
- At least 4 GB RAM free and ports 80, 443, 3000, 3001, 4000 available (or
remappable in
.env). - A domain pointing at the host's public IP (for Let's Encrypt). For local testing,
openbitum.localin/etc/hostsis fine.
2. Install in one line
curl -fsSL install.openbitum.pw | bash
The installer:
- Checks Linux/macOS + Docker + Compose + ports + RAM.
- Clones the repo into
/opt/openbitum(root) or~/openbitum(non-root). - Generates random secrets (
POSTGRES_PASSWORD, JWT, webhook HMAC, cookie). - Prompts for domain, admin email, Bitcart password, optional GitHub PAT and Discord bot token.
- Runs
docker compose pullthendocker compose up -d. - Polls the glue
/healthzendpoint until ready.
Pass -y to skip prompts (reads everything from env):
OPENBITUM_DOMAIN=pay.example.com OPENBITUM_ADMIN_EMAIL=you@example.com \
curl -fsSL install.openbitum.pw | bash -s -- -y
3. Finish onboarding
Open https://<your-domain>/setup. The wizard walks you through:
- Creating the admin user (signs into Logto under the hood).
- Pasting your xPub per chain (xpub for BTC, ypub/zpub also accepted).
- Naming your store.
When the wizard says Done, you're live.
4. Create your first product
In the dashboard → Products → New product:
- Name:
Example Repo Access - Price:
49 USDC - Entitlement:
GitHub invite → org/repo with pull permission
Save and copy the public Checkout URL.
5. Buy it yourself
Open the checkout URL in an incognito window:
- Sign in with GitHub (or email).
- Pick a currency, scan the address or pay from your wallet.
- Wait for the confirmation banner — it polls the glue
/api/orders/:idendpoint every two seconds. - Bitcart fires
invoice.completed→ glue queues the entitlement job → within ~30 seconds you receive the repo invite by email.
6. Next steps
- Add more entitlement types: Discord role, file download, generic webhook.
- Configure more chains in chains reference.
- Run
scripts/backup.shon a cron — your data lives in Postgres + MinIO.