Add host_apps prod :8007 / beta :8019 on adama, roslin, starbuck, apollo, and ai-server-4080.
dj-queue worker singleton on adama only (compose_profiles: [worker]); other hosts web-only.
Document ports, NPM hosts, Postgres DBs, secrets, Nominatim (10.0.0.128:8089), and the app-repo companion (print_forge#1).
Update scripts/deploy.sh--app help.
Move unused abc_be prod port reserve 8007 → 8009 so it does not collide with print_forge.
Test plan
Confirm print_forge appears in app_catalog and --app print_forge is listed in deploy.sh --help
Confirm beta host_apps on all five hosts (port 8019); adama has compose_profiles: [worker]
Confirm prod port 8007 reserved on those hosts (no NPM until launch)
After merge (ops, not this PR): create Postgres DBs print_forge_beta + print_forge on 10.0.0.230, grant westfarn
After merge (ops): write ~/Documents/secrets/print_forge/print_forge_{beta,prod}.env from app .env.prod.example; add print_forge:<token> to SHORTENER_API_TOKENS (beta first)
After merge (ops): NPM print-forge-preview.aimloperations.com → :8019 active/active; do not NPM-route printforgeprints.com until launch
After secrets + DBs: ~/Documents/repos/server-infra/scripts/deploy.sh --app print_forge --env beta --ref master and hit /healthz/
## Summary
- Closes [#27](https://git.aimloperations.com/ai_ml_operations/server-infra/issues/27).
- Register `print_forge` in `app_catalog` (`type: django`, repo `ai_ml_operations/print_forge`, default branch `master`).
- Add `host_apps` prod `:8007` / beta `:8019` on **adama**, **roslin**, **starbuck**, **apollo**, and **ai-server-4080**.
- dj-queue **worker singleton on adama** only (`compose_profiles: [worker]`); other hosts web-only.
- Document ports, NPM hosts, Postgres DBs, secrets, Nominatim (`10.0.0.128:8089`), and the app-repo companion ([print_forge#1](https://git.aimloperations.com/ai_ml_operations/print_forge/issues/1)).
- Update `scripts/deploy.sh` `--app` help.
- Move unused `abc_be` prod port reserve **8007 → 8009** so it does not collide with `print_forge`.
## Test plan
- [ ] Confirm `print_forge` appears in `app_catalog` and `--app print_forge` is listed in `deploy.sh --help`
- [ ] Confirm beta `host_apps` on all five hosts (port **8019**); adama has `compose_profiles: [worker]`
- [ ] Confirm prod port **8007** reserved on those hosts (no NPM until launch)
- [ ] After merge (ops, not this PR): create Postgres DBs `print_forge_beta` + `print_forge` on `10.0.0.230`, grant `westfarn`
- [ ] After merge (ops): write `~/Documents/secrets/print_forge/print_forge_{beta,prod}.env` from app `.env.prod.example`; add `print_forge:<token>` to `SHORTENER_API_TOKENS` (beta first)
- [ ] After merge (ops): NPM `print-forge-preview.aimloperations.com` → `:8019` active/active; do **not** NPM-route `printforgeprints.com` until launch
- [ ] After secrets + DBs: `~/Documents/repos/server-infra/scripts/deploy.sh --app print_forge --env beta --ref master` and hit `/healthz/`
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
print_forgeinapp_catalog(type: django, repoai_ml_operations/print_forge, default branchmaster).host_appsprod:8007/ beta:8019on adama, roslin, starbuck, apollo, and ai-server-4080.compose_profiles: [worker]); other hosts web-only.10.0.0.128:8089), and the app-repo companion (print_forge#1).scripts/deploy.sh--apphelp.abc_beprod port reserve 8007 → 8009 so it does not collide withprint_forge.Test plan
print_forgeappears inapp_catalogand--app print_forgeis listed indeploy.sh --helphost_appson all five hosts (port 8019); adama hascompose_profiles: [worker]print_forge_beta+print_forgeon10.0.0.230, grantwestfarn~/Documents/secrets/print_forge/print_forge_{beta,prod}.envfrom app.env.prod.example; addprint_forge:<token>toSHORTENER_API_TOKENS(beta first)print-forge-preview.aimloperations.com→:8019active/active; do not NPM-routeprintforgeprints.comuntil launch~/Documents/repos/server-infra/scripts/deploy.sh --app print_forge --env beta --ref masterand hit/healthz/