17 Commits
Author SHA1 Message Date
westfarn 7e48c22e3e Deploy SearxNG on ai-server-4080 for chat_backend grounded search (#10) (#11)
Sync runner checkout / sync (push) Successful in 7s
## Summary
- Closes [#10](#10).
- Deploys **SearxNG** on **ai-server-4080** (`10.0.0.128`) for [chat_backend#62](ai_ml_operations/chat_backend#62) / [PR #65](ai_ml_operations/chat_backend#65) grounded search.
- New `roles/searxng/` (compose + JSON-enabled `settings.yml`), gated by `searxng_stack: true`, wired into `site.yml`.
- **Host port 8088** (not 8080 — that is `dta_webapp` on this host). UFW allows `10.0.0.0/24` → `8088/tcp` only.

## Ops after merge

```bash
./scripts/provision.sh ai-server-4080
# or targeted:
ansible-playbook playbooks/site.yml --limit ai-server-4080 --tags never  # full site play includes searxng when searxng_stack
```

Then set in `chat_backend_prod.env` / `chat_backend_beta.env`:

```text
SEARCH_PROVIDER=searxng
SEARCH_FAILOVER_PROVIDER=ddgs
SEARXNG_BASE_URL=http://10.0.0.128:8088
```

Smoke test from any app host:

```bash
curl -sG 'http://10.0.0.128:8088/search' --data-urlencode 'q=test' -d 'format=json' | head
```

## Test plan
- [ ] Provision ai-server-4080; confirm `docker ps` shows `searxng`
- [ ] Confirm `:8088` responds with JSON; `:8080` still serves dta_webapp
- [ ] Confirm UFW rule is LAN-only
- [ ] From adama/roslin container network, curl SearxNG succeeds
- [ ] Update chat_backend secrets to `:8088` and redeploy betaReviewed-on: #11
2026-08-02 11:33:38 -07:00
westfarn 92afbc6e00 Enable beta deploys for chat_backend + chat_web_app (#7) (#8)
Sync runner checkout / sync (push) Successful in 7s
## Summary

Implements [#7](#7): register **beta** workloads for `chat_backend` and `chat_web_app`, matching the existing `dta_service` / `dta_webapp` pattern.

- Enable `host_apps` beta entries on **adama**, **roslin**, and **ai-server-4080** (`chat_backend` **8013**, `chat_web_app` **8083**)
- Update `IMPLEMENTATION.md` apps / ports / NPM / roadmap tables for chat beta + prod
- Prod chat entries unchanged

## Ops follow-ups (outside this PR)

- Create Postgres DB `chat_backend_beta` + grant `westfarn`
- Add `~/Documents/secrets/chat_backend/chat_backend_beta.env` (mode 600)
- NPM: `beta.chat.aimloperations.com` → `*:8083`; `beta.chatbackend.aimloperations.com` → `*:8013`
- Smoke: `./scripts/deploy.sh --app chat_backend --env beta --ref <sha>` and same for `chat_web_app`

Companion app tickets: [chat_backend#26](ai_ml_operations/chat_backend#26), [chat_web_app#35](ai_ml_operations/chat_web_app#35)

## Test plan

- [ ] Confirm beta rows present in all three `host_vars`
- [ ] After merge + ops setup: deploy beta for both apps succeeds
- [ ] Prod chat deploys still work on 8003 / 8082
- [ ] NPM beta domains route to 8013 / 8083Reviewed-on: #8
2026-07-27 08:32:36 -07:00
westfarn d49c6bfe2d Fail loud when deploy --app matches nothing (#6)
Sync runner checkout / sync (push) Successful in 6s
## Summary

- Fail when `--app` / `--env` match no `host_apps` row (was silent no-op)
- Fail when `--app` missing from `app_catalog`

Prevents "deploy succeeded" that only refreshed web-static nginx while skipping Django — what happened on [chat_backend run 205](https://git.aimloperations.com/ai_ml_operations/chat_backend/actions/runs/205) before `chat_backend` was registered on master.

## Test plan

- [ ] `./scripts/deploy.sh --app does_not_exist --env prod` should fail with catalog message
- [ ] `./scripts/deploy.sh --app chat_backend --env prod` should proceed with Django once catalog/host_apps presentReviewed-on: #6
2026-07-27 08:27:29 -07:00
westfarn ed68275fa6 Register chat_backend for django deploy (#6 Part B)
Sync runner checkout / sync (push) Successful in 7s
2026-07-25 05:34:28 -07:00
westfarnandCursor 39b0a9f475 Register chat_backend for django deploy (chat_backend#6 Part B).
Sync runner checkout / sync (pull_request) Successful in 7s
Add app_catalog entry, host_apps on adama/roslin/ai-server-4080 (prod
:8003), and document ports/NPM/Postgres/Ollama for active/active.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-25 07:03:36 -05:00
westfarn 71d96839dc Register chat_web_app for node-static deploy (chat_web_app#13 Part B). (#4)
Sync runner checkout / sync (push) Successful in 6s
Add app_catalog entry, host_apps on adama/roslin/ai-server-4080 (prod :8082),
and document ports/NPM backends for the CRA static frontend.Reviewed-on: #4
2026-07-25 04:28:26 -07:00
westfarn 04ccbecbd7 Register scha for deploy on all webservers (scha#19 Part B) (#3)
Sync runner checkout / sync (push) Successful in 6s
## Summary
- Register `scha` in `app_catalog` and `host_apps` on adama, roslin, and ai-server-4080 (prod port **8002**; beta **8012** reserved).
- Update `IMPLEMENTATION.md` ports, apps, Postgres, and NPM tables so every app lists beta + prod.
- Include `scha` in `deploy.sh` help.

Part A (dockerize / CI in the `scha` repo) is tracked separately in [scha#19](ai_ml_operations/scha#19).

## Test plan
- [ ] Confirm inventory YAML loads: `ansible-inventory --list` shows `scha` under each host
- [ ] After Part A merges + `~/Documents/secrets/scha/scha_prod.env` exists: dry-run `./scripts/deploy.sh --app scha --env prod --check`
- [ ] Create DB `scha` on shared Postgres (`10.0.0.230`) and point NPM at `adama:8002` + `roslin:8002` (+ optional `ai-server-4080:8002`)

Reviewed-on: #3
2026-07-14 03:06:46 -07:00
westfarn d9d2dc246a Add Gitea workflow to sync runner checkout on master changes (#2)
Sync runner checkout / sync (push) Successful in 7s
## Summary

Implements #1: Gitea Act workflow that fast-forward pulls `~/Documents/repos/server-infra` on the self-hosted runner whenever `master` changes.

- Adds `.gitea/workflows/sync-checkout.yml`
- Triggers on direct push to `master` and on merged PRs targeting `master`
- Refuses to pull if the working tree is dirty
- Documents the workflow in `IMPLEMENTATION.md`

## Test plan

- [ ] Merge PR → workflow runs on self-hosted runner
- [ ] Runner checkout at `/home/westfarn/Documents/repos/server-infra` advances to latest `master` commit
- [ ] Dirty working tree on runner causes workflow to fail (no silent overwrite)
- [ ] Direct push to `master` also triggers sync

Closes #1

Reviewed-on: #2
2026-07-11 09:58:14 -07:00
westfarn 974e848d91 updating to remove company_site beta 2026-07-10 12:31:32 -05:00
westfarn f37ec41530 Updates for grafana stack 2026-07-10 06:50:52 -05:00
westfarn 728a0c60f2 doc plan update 2026-07-09 17:11:14 -05:00
westfarnandCursor b1b9b3bafe Stop legacy dta_service systemd units before Docker deploy (#52).
ai-server-4080 runs dta_service active/active with adama and roslin.
Disable beta_dta_wsgi/prod_dta_wsgi so port 8001/8011 are free for compose.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-09 11:45:03 -05:00
westfarn a7417345a3 Update inventory/host_vars/ai-server-4080.yml 2026-07-09 08:31:59 -07:00
westfarn c53112bfd7 more updates 2026-07-08 13:30:33 -05:00
westfarn 1ba3d10e3f pushing updates 2026-07-08 13:16:59 -05:00
westfarn 589462e6d0 updates 2026-07-08 05:59:11 -05:00
westfarn f848420d8f Initial server-infra setup 2026-07-06 15:34:49 -05:00