Commit Graph

74 Commits

Author SHA1 Message Date
Will Anderson 193bea7f3f fix(neuron): add ephemeral-storage limits to prevent eviction cascade 2026-04-17 09:59:21 -05:00
Will Anderson 1b8ea63541 feat(neuron): add stage and prod k8s manifests + Argo CD apps
Completes the three-env setup (dev was added previously). Each env has
deployments, services, ingress, PVC, ConfigMap, and ExternalSecret pulling
from Vault. Prod has larger resource limits and 10Gi PVC. Vault secret at
secret/neuron-technologies/prod seeded separately.
2026-04-17 09:43:23 -05:00
Will Anderson 912e129e0d feat(neuron-dev): add k8s manifests and Argo CD app for neuron-technologies dev environment 2026-04-17 08:46:47 -05:00
Will Anderson ad2a1db3e2 Remove conflicting fornax-worker Argo CD apps — media app is sole owner
The fornax-worker-tx253 and fornax-worker-tx34 Argo CD apps were fighting
the media app (which also manages the same Deployments, Services, PVCs,
and ExternalSecrets via fornax-workers.yaml). This caused 73+ rolling
restarts per 2 hours. Since neither app had a cascade-delete finalizer,
removing these Application CRDs leaves existing resources intact and
transfers ownership to the media app.
2026-04-14 22:25:25 -05:00
Will Anderson 4f406e13c9 add fornax-ui Argo CD application
Deploys fornax/ui:latest (nginx serving React SPA) to the media
namespace. Image is now pushed by the fornax CI pipeline.
2026-04-14 12:48:42 -05:00
Will Anderson bdba692db2 Fornax: COORDINATOR_URL env, port-lease webhook, Grafana dashboard
- Worker deployment: add COORDINATOR_URL and WORKER_ID env vars to
  portforward-helper; webhook calls coordinator /api/v2/workers/:id/port-lease
  after each NAT-PMP renewal so coordinator tracks current forwarded port
- Worker overlays: patch WORKER_ID env var to actual worker ID (tx253/tx34)
- Grafana: fornax-grafana Argo CD app pointing to k8s/fornax/grafana/
  ConfigMap with grafana_dashboard=1 label for auto-discovery by sidecar;
  7 panels covering bandwidth, active torrents, worker health, request rate,
  and error rate
2026-04-14 05:30:01 +00:00
Will Anderson 180fb91c95 add fornax coordinator and worker k8s manifests 2026-04-13 23:57:22 +00:00
Gitea CI 0aa1f4333c chore(neuron): deploy e102af6f86599361b911a2e7e5aa0ec737b54527 2026-04-12 19:58:46 +00:00
Gitea CI e1c15205e3 chore(neuron): deploy 61e9d262595be44c6d7956e41f8a9f275c482678 2026-04-12 16:27:34 +00:00
Gitea CI f91a25fd83 chore(neuron): deploy 0091ebfaa13ef4c58d3a88b3bb3be144ea0a2d9c 2026-04-12 16:18:28 +00:00
Will Anderson 6a9da6d900 Fix media app: use internal Gitea URL for Argo CD 2026-04-10 22:50:51 -05:00
Will Anderson ba99111753 Add media stack: Plex, Radarr, Sonarr, Prowlarr, qBittorrent, Bazarr, Overseerr
- Namespace: media (created via Terraform)
- Storage: hostPath PV at /media on Legion (movies, tv/shows, tv/anime, downloads)
- VPN: gluetun sidecar with ProtonVPN WireGuard (US-TX#253), all torrent traffic tunneled
- Radarr: movie automation with /media/movies root
- Sonarr: TV/anime automation with /media/tv/{shows,anime} roots
- Prowlarr: indexer aggregator (YTS, 1337x, Nyaa for anime)
- qBittorrent: torrent client, network namespaced behind gluetun VPN
- Bazarr: automatic subtitle downloads (connects to Radarr + Sonarr)
- Overseerr: family request portal at watch.nook.family
- Plex: media server at plex.nook.family
2026-04-10 22:50:13 -05:00
Will Anderson 78c1c9750f Add Memos journaling app at journal.neuralplatform.ai 2026-04-08 15:46:10 -05:00
Gitea CI 54b2abf767 chore(neuron): deploy d97b23808e953dccf35d784c47ca003d74bcda61 2026-04-06 14:01:48 +00:00
Gitea CI 937e138f7d chore(neuron): deploy d3d72a5adbdddfd6c18ae674c921469d410dc7da 2026-04-06 13:44:50 +00:00
Gitea CI 55f4eab6ae chore(neuron): deploy bf185a6b19bfce25a3c67d4d13fa4e39b6fc6685 2026-04-06 13:38:05 +00:00
Will Anderson 3ba1bf5c08 fix: neuron probes — use tcpSocket, /mcp returns 406 on plain GET 2026-04-06 04:17:11 -05:00
Will Anderson c138982fcf fix: neuron health probes — /health 404, use /mcp endpoint 2026-04-06 04:14:51 -05:00
Gitea CI 49b5604860 chore(neuron): deploy 2476e1167826cf320375143c09e94852b4330114 2026-04-06 07:54:36 +00:00
Will Anderson bf40bd7f15 feat: add Listmonk newsletter platform on Legion k3s
- Namespace, ExternalSecrets (Vault), DB init job, deployment, service, PVC, ingress
- Routes newsletter.harmonic-framework.com via existing Cloudflare tunnel
- Uses shared platform postgres with dedicated listmonk DB/user
- Credentials stored at secret/data/listmonk in Vault
2026-04-04 18:43:44 -05:00
Will Anderson 6b546b6168 ci: bump runner pod to pick up valid_volumes config change 2026-04-04 10:27:06 -05:00
Will Anderson f3898d4c8e ci: allow /var/run/docker.sock as valid volume for Docker builds 2026-04-04 10:24:37 -05:00
Will Anderson 82ed0eb10b feat: add Redpanda and wp-deploy-coordinator to Legion
- Redpanda single-node StatefulSet in platform namespace
- wp-coordinator deployment consuming wp.deploy topic
- RBAC for coordinator to exec into harmonic-wordpress pods
- R2 credentials via ExternalSecret (no SSH key needed on coordinator)
- Sites config as ConfigMap — add new WP sites without code changes
2026-04-04 10:18:09 -05:00
Will Anderson 6a9db2094e feat: add harmonic-wordpress dev environment on Legion
- Add harmonic-wordpress namespace
- WordPress + MySQL deployment with PVCs and ExternalSecrets
- Ingress for dev.harmonic-framework.com via Traefik + cert-manager
- Argo CD Application watching k8s/harmonic-wordpress/
- Add public Gitea repo credential for git.neuralplatform.ai
2026-04-04 09:47:41 -05:00
Gitea CI b23dc7a5c5 chore(neuron): deploy 3527a5c04037f8f2d24b67c9eab2c507e97b873c 2026-03-30 01:11:02 +00:00
Gitea CI e4d209ac03 chore(neuron): deploy 56718f795b875bfecf263d5f3a6c36beee665b6b 2026-03-30 00:58:15 +00:00
Gitea CI 4515fd7fba chore(neuron): deploy 9c86e158a5c45c5006da23a7bb7d826d0bbca8b3 2026-03-30 00:19:18 +00:00
Will Anderson 1cf47477d3 Add MUDCraft Minecraft server infrastructure
- Purpur 1.21.4 server via itzg/docker-minecraft-server (java21)
- StatefulSet with 3 PVCs: worlds (20Gi), plugins (5Gi), logs (5Gi)
- Aikar G1GC JVM flags, 6GB heap (sized for Legion's 15GB RAM)
- Postgres: mudcraft database + user in existing platform/postgres
- RCON secret + DB password via ExternalSecret → Vault
- Traefik TCP entrypoint on port 25565 for mudcraft.nook.family
- mudcraft namespace via Terraform
- Argo CD app watching k8s/mudcraft/
2026-03-29 18:17:48 -05:00
Gitea CI 9161ab0104 chore(neuron): deploy bc7035d932d72112ebd5bb7c0c20f7ff8b7c9a04 2026-03-27 16:31:42 +00:00
Gitea CI fda9a9d9fb chore(neuron): deploy 2e06323389bd37eaabb5c0fa3bae72fa6a3459d0 2026-03-27 16:15:57 +00:00
Gitea CI e510207857 chore(neuron): deploy 56e092b61e9eb1b92ba753c0ba17914212ad58af 2026-03-27 16:05:11 +00:00
Gitea CI 58448a445f chore(neuron): deploy 87b0bad5c66abf7218dd51319d23eea3d1bfbd29 2026-03-27 16:00:05 +00:00
Gitea CI ff2b9238fd chore(neuron): deploy 8e87d7057235151e430bbc78015732f463d6d323 2026-03-27 15:51:49 +00:00
Gitea CI f78b9b0d75 chore(neuron): deploy c8eeba5783de3f388ed0266d850fc0b26db219fd 2026-03-27 15:39:40 +00:00
Will Anderson 485e09532e scale down github-runner — no longer needed 2026-03-27 10:38:33 -05:00
Gitea CI 7a53d14cf0 chore(neuron): deploy d69b7bf14a8b641c5685adc3171e7acf9b3b7112 2026-03-27 14:36:29 +00:00
Will Anderson 076b3562f0 ci: map runner labels to ci-base image via docker:// scheme 2026-03-26 13:39:25 -05:00
Will Anderson aff34f061f ci: set default_image to ci-base so all jobs get full tooling 2026-03-26 13:17:19 -05:00
Will Anderson a40897fd5d ci: add ubuntu-latest, ubuntu-24.04 labels to runner 2026-03-26 12:48:38 -05:00
Will Anderson db08c5a208 ci: set runner default_image to ubuntu:24.04
Replace pantheon-ci:latest (custom, potentially stale) with ubuntu:24.04
as the fallback container for jobs that don't specify container:.
2026-03-26 11:41:55 -05:00
Will Anderson 9595a18f3a refactor: rebase CI runner on Ubuntu 24.04, rename to ci-base
Replace Alpine-based legion-runner with a minimal Ubuntu 24.04 image.
The act_runner binary is copied from the official image via multi-stage
build. Job-specific tooling (Ruby, Node, Python, etc.) belongs in
per-job container images specified via container: in workflows, not
in the base runner image.

Rename: legion-runner → ci-base
2026-03-26 11:32:52 -05:00
Will Anderson 206873e83b fix: set DEFAULT_ACTIONS_URL to Forgejo action mirrors
code.forgejo.org maintains up-to-date mirrors of common GitHub Actions
(checkout, upload-artifact, etc.) and is the recommended source for
Gitea Actions runners.
2026-03-26 11:06:43 -05:00
Will Anderson 8425f0988c fix: set Gitea DEFAULT_ACTIONS_URL to self
https://gitea.com is no longer a valid value in Gitea 1.25 — causes
startup crash. Use 'self' to point action references at this instance.
2026-03-26 10:41:54 -05:00
Will Anderson d8f2c822f8 fix: DEFAULT_ACTIONS_URL must be a full URL, not 'gitea' 2026-03-26 10:36:31 -05:00
Will Anderson f3477ac102 ci: fix gitea runner URL and set DEFAULT_ACTIONS_URL
- external-secrets.yaml: GITEA_INSTANCE_URL changed from cluster-internal
  URL to https://git.neuralplatform.ai so runner can register externally
- gitea.yaml: add GITEA__actions__DEFAULT_ACTIONS_URL=gitea so all
  actions/* references resolve from gitea.com, not github.com
- Dockerfile: track runner image (Python 3.12 + build deps) in repo
2026-03-26 10:35:13 -05:00
Will Anderson 737fb27a5c gitea-runner: use lean legion-runner base image 2026-03-26 08:01:41 -05:00
Will Anderson 5f984e1fc2 gitea-runner: revert to pantheon-runner (container: directive unsupported in host mode) 2026-03-26 07:53:48 -05:00
Will Anderson 4e9d3287d4 gitea-runner: use lean legion-runner base image 2026-03-26 07:51:21 -05:00
Will Anderson f409c06e65 gitea-runner: use pantheon-runner image (act_runner + all CI tools) 2026-03-25 20:39:32 -05:00
Will Anderson 08d4ab1d72 gitea-runner: set default_image in container config to use pantheon-ci for all jobs 2026-03-25 20:37:17 -05:00