Skip to content

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 compose subcommand, not the standalone docker-compose v1 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:

curl http://localhost:8080/health
{"status": "ok", "database": "connected", "version": "3.1.0", "git_sha": "...", "build_date": "..."}

Seed a development org, admin member, and API key:

docker compose exec -T postgres psql -U rai -d rai \
  < packages/raise-server/scripts/seed_dev.sql

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_KEY is 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)