Deployment & instance management
ReviewPhin ships as a single container image that serves the worker, the platform setup flow, and these docs from one runtime. This area covers running that image, exposing it to the internet, configuring it, and keeping its data safe.
Choose how to run it
Section titled “Choose how to run it”| Environment | Use it when | Guide |
|---|---|---|
| Local (from source) | Developing or evaluating on your machine | Run locally |
| Docker Compose | Single-host production or a quick trial | Run with Docker |
| Kubernetes (Helm) | Cluster deployments with ingress and persistence | Run on Kubernetes |
Then make the instance reachable so platforms can deliver webhooks — see exposing webhooks.
Configuration and data
Section titled “Configuration and data”- Environment variables — the full runtime reference.
- Storage & migration — SQLite, Flotiq, custom adapters, backups, and moving data.
What one container serves
Section titled “What one container serves”one image ├── /docs/* this documentation + local search ├── /healthz liveness probe ├── /setup/<platform>/* optional provider setup flow └── /webhooks/<platform> platform webhook receiverThe Fastify app serves public/ at /, then registers setup and webhook routes. Docs pages under /docs/* must not shadow /healthz, /setup/*, /webhooks/*, or /github/setup/*.
Public URL
Section titled “Public URL”Set PUBLIC_URL to the external HTTPS URL that GitLab or GitHub can reach:
PUBLIC_URL=https://reviewphin.example.comGitHub setup builds callback, webhook, and asset URLs from this value, and GitLab webhook instructions depend on it. See exposing webhooks for how to obtain a public URL for local, Docker, and Kubernetes instances.
Persistent paths
Section titled “Persistent paths”Persist these paths in production:
| Path | Purpose |
|---|---|
/app/data |
SQLite database and run logs by default. |
/app/tmp |
Hydrated review workspaces. |
Runtime routes
Section titled “Runtime routes”| Route | Purpose |
|---|---|
/docs/ |
Documentation hub. |
/healthz |
Health check, returns {"status":"ok"}. |
/robots.txt |
Crawler policy endpoint (default deny; optional allow for /docs/* only). |
/webhooks/gitlab |
GitLab webhook receiver. |
/webhooks/github |
GitHub webhook receiver. |
/setup/github/* |
GitHub setup flow. |
Bot indexing policy
Section titled “Bot indexing policy”By default, ReviewPhin sends X-Robots-Tag: noindex, nofollow, noarchive, nosnippet, noimageindex, notranslate and serves a restrictive robots.txt, so crawlers and common AI training bots should not index any route.
For official publication domains, enable docs indexing explicitly:
REVIEWPHIN_ALLOW_BOT_INDEXING=trueTo limit docs indexing to specific hosts, keep the global flag off and set:
REVIEWPHIN_BOT_INDEXING_ALLOWED_HOSTS=reviewphin.example.com,docs.reviewphin.example.com