Self-Hosted Deployment¶
RaiSE's server component (raise-server) can run entirely on infrastructure
you control — no data leaves your network. This is the on-premises path for
organizations with data-residency or procurement requirements (e.g.
regulated financial-sector deployments) that a SaaS-only offering can't
satisfy.
This directory documents the Docker Compose deployment path — the same
container image RaiSE runs in its own dev/staging/production environments
(docker-compose.yml at the repo root, server build target). There is no
separate "self-hosted edition" — it is the identical image, configured with
your own PostgreSQL credentials and (optionally) your own Stripe/OAuth
secrets disabled.
What's in this directory¶
| Document | Covers |
|---|---|
| installation.md | Prerequisites, environment variables, first-run setup |
| docker-compose.md | Field-by-field guide to the compose file (no rewrite — this documents what exists) |
| backup-restore.md | PostgreSQL dump/restore procedures |
| troubleshooting.md | Common errors, log locations, data reset |
| export-api-usage.md | curl examples for the bulk CSV/JSON export API (RAISE-16696) |
Prerequisites¶
- Docker Engine 24.x+ and Docker Compose v2 (the
docker composesubcommand, not the standalonedocker-composev1 binary) - ~2 GB free disk for the server image + ONNX model layer, plus PostgreSQL data volume growth over time
- No external network access required after image build — the server's
local-search embedding model ships baked into the image (offline-only,
HF_HUB_OFFLINE=1)
Quick start¶
git clone https://github.com/humansys/raise-commons.git
cd raise-commons
docker compose up -d --build
This builds the server target from the repo's Dockerfile, starts
PostgreSQL (pgvector/pgvector:pg17) and the server, waits for PostgreSQL's
healthcheck, then runs database migrations automatically before the server
starts listening (see entrypoint.sh — migrations run at boot for
docker-compose deployments; Fly/Cloud Run use a separate release step that
does not apply here).
Verify it came up:
{"status": "ok", "database": "connected", "version": "3.1.0", "git_sha": "...", "build_date": "..."}
Seed a development org, admin member, and API key:
This creates API key rsk_dev_test_key_12345 with an active team-plan
license (seeded, no Stripe involved) — no billing configuration required. See
installation.md for producing your own key instead of
the shared dev fixture, and export-api-usage.md to
confirm the export endpoints respond.
What self-hosted does NOT include¶
- Stripe billing (endpoints return 503 when
RAI_STRIPE_SECRET_KEYis unset — "graceful disable", not an error) - Multi-region/HA topology (single PostgreSQL instance, single server container — add your own load balancer / replica strategy on top)
- Kubernetes/Helm manifests (out of scope for this story; Docker Compose only)