Coolify deployment
The pulsar project runs on Igris in Coolify's production environment. Use ssh igris for host access through Tailscale.
| Resource | Name | Coolify UUID |
|---|---|---|
| Backend | pulsar-api | stra9bisvotxtjfwp5nxt0gj |
| MongoDB 7 | pulsar-mongodb | 55ezbgu6cruuardfum11fuhl |
| Redis 7 | pulsar-redis | vwiq4p1yukffrluipcqlip9w |
The databases have private Docker network access and persistent volumes. Get credentials from the owner's secret inventory. Set runtime variables in Coolify; see environment variables.
Build and release
- Use
woosal1337/pulsar, branchmain, with the read-only Coolify deploy key. - Select Dockerfile, base directory
/backend, file/Dockerfile, and port8000. - Install the committed
pdm.lock. Keep FastAPI below0.137until the rate limiter supports the new nested-router representation. - Set the domain to
http://api.pulsar.investments. Cloudflare terminates public TLS. - Require HTTP 200 from
GET /api/health: interval 10 seconds, timeout 5 seconds, five retries, and a 60-second start period.
GitHub webhook 675951987 sends push events to https://deploy.chele.bi/webhooks/source/github/events/manual. Coolify auto-deploy is enabled for every push to main. Keep watch paths empty; Coolify then triggers a deployment for any changed file. The webhook secret is stored in GitHub and Coolify.
GitHub Actions runs backend regression tests and frontend type/build checks. These checks run alongside the native Coolify deployment. The container health check controls promotion. Vercel builds the frontend from the same repository.
Verify a release
Check the GitHub webhook delivery, Actions results, and Coolify build commit. Then check public sign-in, saved data, charts, and WebSockets through https://pulsar.investments. A successful build alone does not verify the public route.
The recovery record contains the first completed push-to-production check and its deployment identifiers.
