Commit Graph
222 Commits
Author SHA1 Message Date
chemavxandClaude Opus 4.8 9d2dd78542 Cut over researchowl deployment to Infisical-managed pull secret
imagePullSecrets: gitea-registry -> gitea-registry-infisical (the
InfisicalStaticSecret-managed dockerconfigjson). Old gitea-registry stays
as rollback net until decommission.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 06:17:38 +00:00
chemavxandClaude Opus 4.8 36296ad5ea Add researchowl InfisicalStaticSecret for gitea-registry pull secret
Reconstructs the dockerconfigjson pull secret from the discrete
GITEA_REGISTRY_USERNAME/GITEA_REGISTRY_TOKEN fields at homelab/prod /registry,
via the shared infisical-operator/infisical-auth. Targets parallel-name
gitea-registry-infisical; old gitea-registry stays live until cutover.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 06:11:41 +00:00
chemavxandClaude Opus 4.8 5a0fd04598 Add shared Infisical auth layer (InfisicalConnection + InfisicalAuth)
Phase 2: GitOps-managed shared auth layer in infisical-operator ns —
InfisicalConnection (https://infisical.chemavx.xyz) + InfisicalAuth
(kubernetes method, operator SA via TokenReview) + identity-ID Secret
(non-secret UUID; auth is via SA token, so safe in git). To be referenced
cross-namespace by per-app InfisicalStaticSecret CRs later. No real secret yet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 20:39:30 +00:00
chemavxandClaude Opus 4.8 5f6b491ed3 Add Infisical token-reviewer RBAC for Kubernetes Auth
Phase 2 Step 2: dedicated SA infisical-token-reviewer bound to
system:auth-delegator (TokenReview), explicit long-lived SA token Secret
(k8s 1.34 doesn't auto-create). ArgoCD ignores /data so selfHeal won't
strip the controller-populated token. Token value never committed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 16:05:59 +00:00
chemavxandClaude Opus 4.8 2c81ab03a7 Add Infisical Kubernetes operator (secrets-operator v0.11.1)
Phase 2 Step 1: controller-only, dedicated infisical-operator namespace,
hostAPI -> self-hosted instance, cluster-scoped, ServerSideApply for CRDs.
No InfisicalSecret CRs yet — operator sits idle until later UI config.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 15:42:14 +00:00
chemavxandClaude Opus 4.8 c459eb3930 fix(infisical): single-source Helm with inline values
The multi-source variant ($values git ref) caused the infisical app to
prune its own Application object on first sync (controller pruned
Application/argocd/infisical, orphaning the workloads). Switch to a
single-source Helm app with inline valuesObject (same chart 1.9.0, same
DB/Redis passwords) and drop the hand-written tracking-id annotation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 06:51:23 +00:00
chemavxandClaude Opus 4.8 e548a06ebc feat(infisical): add Infisical platform (Phase 1, chart-managed pg/redis)
Deploy infisical-standalone 1.9.0 (Infisical v0.158.0) in a dedicated
'infisical' namespace via a multi-source ArgoCD app (chart + values).
Bundled Postgres (dedicated local-path PVC, 8Gi) + Redis. Ingress via
Traefik + cert-manager (letsencrypt-prod) at infisical.chemavx.xyz.

Crown-jewel secrets (ENCRYPTION_KEY, AUTH_SECRET, SITE_URL) are injected
out-of-band via the 'infisical-secrets' Secret (kubectl, IgnoreExtraneous),
NOT in git. Postgres/Redis passwords guard ClusterIP-only in-cluster
services holding ciphertext; acceptable in values per design review.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 06:39:26 +00:00
chemavxandClaude Opus 4.8 6036b8d67b chore(polymarket-bot): remove gitea-registry secret from GitOps
The dockerconfigjson held the old account password (now rotated/revoked)
in plaintext. Manage this image-pull secret out-of-band via kubectl
(like researchowl), so no registry credential lives in git going forward.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:17:52 +00:00
chemavxandClaude Opus 4.8 6d30c0f3e0 fix(ghost-en): stage redirects via initContainer, not read-only mount
A ConfigMap volume is read-only at the FS level, so the Ghost entrypoint's
chown -R on content/ failed ("Read-only file system") and crash-looped.
Copy redirects.yaml onto the writable PVC with an initContainer instead;
still GitOps-sourced and refreshed on every pod start.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 10:40:07 +00:00
chemavxandClaude Opus 4.8 797471f744 feat(ghost-en): GitOps-managed redirect for old Pentagon slug
Recover ~454 GSC impressions stranded on a 404. Adds a ghost-en-redirects
ConfigMap (content/data/redirects.yaml) 301-redirecting the old slug
/pentagon-second-uap-declassification-may-2026-apollo-12-sandia/ to the
live /pentagon-uap-second-release-may-2026/. Mounted read-only via subPath
so it survives content PVC recreation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 10:35:33 +00:00
Gitea CI b1f30682d1 ci: update researchowl image to cd557a2d [skip ci] 2026-06-15 15:16:31 +00:00
Gitea CI ced8773c4b ci: update researchowl image to 2ffad8aa [skip ci] 2026-06-15 15:00:58 +00:00
Gitea CI be723f37c1 ci: update researchowl image to 972bd2f8 [skip ci] 2026-06-15 14:53:12 +00:00
ChemaVXandClaude Opus 4.8 f83503d296 feat(researchowl): usar nomic-embed-text para embeddings
OLLAMA_EMBED_MODEL=nomic-embed-text (antes embed() caía en qwen2.5:3b,
un modelo de chat). Modelo ya descargado en Ollama. Mejora la calidad
del RAG (vectores de embeddings reales de 768 dims).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 14:44:41 +00:00
Gitea CI 8b08b08d17 ci: update researchowl image to 94dc0316 [skip ci] 2026-06-15 14:40:22 +00:00
chemavxandClaude Fable 5 e42896a8c1 feat(ollama): enable prune, guarded by Prune=false on the models PVC
Last app without prune; now consistent with the rest of the cluster.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:58:50 +00:00
chemavxandClaude Fable 5 729e3ac4af fix: Prune=false guard on every PVC under a prune-enabled Application
Same protection already given to polymarket-bot postgres and n8n: without
it, removing a PVC manifest from git (rename, multi-doc refactor) would
make ArgoCD destroy the volume and its data.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:55:23 +00:00
chemavx b30d505e0e feat(filebrowser): writable images mount to manage imagefinder output 2026-06-12 15:50:21 +00:00
chemavxandClaude Fable 5 0619a5caf7 feat(n8n): enable prune, guarded by Prune=false on the workflows PVC
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:50:21 +00:00
chemavxandClaude Fable 5 2afbb9559c chore(argocd): drop non-authoritative researchowl Application dump
The real manifest is researchowl/argocd-app.yaml, self-managed inside the
app's own synced path; edits to this copy get silently reverted by selfHeal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:50:21 +00:00
chemavxandClaude Fable 5 0c061c1ee2 fix(researchowl): notification annotations in the self-managed Application manifest
researchowl/argocd-app.yaml lives inside the app's own synced path, so it is
the source of truth: annotations applied only to the live object (or to the
argocd/ dump copy) get reverted by selfHeal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:46:22 +00:00
chemavx 649c4ddd95 Revert "test: temporary invalid manifest to verify on-sync-failed Telegram trigger"
This reverts commit 44b76e3049.
2026-06-12 15:41:13 +00:00
chemavxandClaude Fable 5 44b76e3049 test: temporary invalid manifest to verify on-sync-failed Telegram trigger
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:35:22 +00:00
chemavxandClaude Fable 5 23abc484c7 feat(argocd): recover Telegram notifications (failed/degraded) and prune for polymarket-bot
- Notifications via generic webhook to the Telegram Bot API: the engine's
  native telegram service only supports channels and negative group IDs,
  so a positive private chat_id never worked ("chat not found").
- Only on-sync-failed and on-health-degraded triggers; on-sync-succeeded
  dropped (CI already reports successful deploys).
- Subscribe annotations on polymarket-bot, researchowl and n8n.
- prune: true on polymarket-bot, guarded by Prune=false on the postgres
  PVC so removing the manifest from git can never destroy the data.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 15:31:07 +00:00
ChemaVXandClaude Fable 5 b578637112 feat(polymarket-bot): daily retention CronJob for metrics_daily
The bot snapshots metrics every cycle (~1,300 rows/day, 74K rows in 57
days) but only the last snapshot of each past UTC day is ever read back.
Prune past days to their daily close at 00:10 UTC; today's rows are kept
intact for /api/summary.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 08:12:20 +00:00
Gitea CI 52e34275fd ci: update polymarket-bot images to 4928a3c1 [skip ci] 2026-06-12 08:07:58 +00:00
ChemaVXandClaude Fable 5 29d681431a fix(gitea): set ROOT_URL to https://git.chemavx.xyz matching the actual ingress
The old ROOT_URL (gitea.chemavx.xyz) is not routed by traefik, so every
URL Gitea generated from it was broken — including webhook payload repo
URLs, which is why ArgoCD ignored real push events (host mismatch) and
deploys waited for the ~3min polling cycle. Applied live on 2026-06-12.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 07:58:52 +00:00
ChemaVXandClaude Fable 5 d99729a1f7 chore(argocd): sync Application manifests with live cluster state
- Update the 5 Applications that still pointed at the internal Gitea URL
  (gitea.gitea.svc.cluster.local) to https://git.chemavx.xyz, matching the
  live patch that made the Gitea->ArgoCD webhook effective for them.
- Add the 9 Applications that existed only in the cluster (filebrowser,
  ghost-en, k8s-manifests, ollama, renovate, researchowl, trilium, umami,
  zona-exclusion) so a cluster rebuild can restore all 14 from git.

Files are verbatim dumps of the live spec. Note: the old
application-polymarket-bot.yaml and application-n8n.yaml in git carried
telegram notification annotations and prune:true that were NOT live; this
snapshot replaces them with what actually runs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 07:45:31 +00:00
Gitea CI b60c160b21 ci: update polymarket-bot images to 43d9577f [skip ci] 2026-06-12 07:13:07 +00:00
Gitea CI 117fdda36f ci: update polymarket-bot images to 1797b79f [skip ci] 2026-06-11 19:55:59 +00:00
Gitea CI c43ce9e150 ci: update polymarket-bot images to 060fc899 [skip ci] 2026-06-11 19:39:45 +00:00
Gitea CI 57a9818412 ci: update polymarket-bot images to c5ffc378 [skip ci] 2026-06-11 17:34:12 +00:00
Gitea CI cf445e1bd8 ci: update polymarket-bot images to 7ebb87ae [skip ci] 2026-06-11 17:21:40 +00:00
Gitea CI 20eb648c7f ci: update polymarket-bot images to 02cbfc0b [skip ci] 2026-06-11 17:12:14 +00:00
Gitea CI 45a3f7f5ff ci: update polymarket-bot images to 4867141c [skip ci] 2026-06-11 16:43:07 +00:00
Gitea CI 06bd52a126 ci: update polymarket-bot images to f5ac302a [skip ci] 2026-06-11 16:34:18 +00:00
Gitea CI de0801287d ci: update polymarket-bot images to 4002f03d [skip ci] 2026-06-11 15:41:51 +00:00
Gitea CI f84f3a1bd1 ci: update polymarket-bot images to 96f31acf [skip ci] 2026-06-11 14:33:01 +00:00
Gitea CI e942c18a51 ci: update polymarket-bot images to 5aa54eb4 [skip ci] 2026-06-11 14:15:14 +00:00
Gitea CI 8649f7bdf5 ci: update polymarket-bot images to e137116e [skip ci] 2026-06-11 13:49:29 +00:00
Gitea CI 23fc503c25 ci: update polymarket-bot images to 340c8523 [skip ci] 2026-06-11 12:24:27 +00:00
Gitea CI 431d4ca29a ci: update researchowl image to fd9aaa19 [skip ci] 2026-06-09 18:40:06 +00:00
Gitea CI 322837eeab ci: update researchowl image to ca0eb059 [skip ci] 2026-06-09 14:01:12 +00:00
Gitea CI 649ed8bc1d ci: update researchowl image to 41e4e3f5 [skip ci] 2026-06-09 13:56:01 +00:00
Gitea CI cd3315c0f7 ci: update polymarket-bot images to 3a353c7e [skip ci] 2026-06-08 15:58:10 +00:00
Gitea CI 3cad61d48a ci: update polymarket-bot images to 82391478 [skip ci] 2026-06-08 15:41:56 +00:00
Gitea CI 3bb5c57066 ci: update polymarket-bot images to 98abd96f [skip ci] 2026-06-08 12:19:44 +00:00
chemavxandClaude Opus 4.8 a3efd61e1e fix: remove duplicate home.chemavx.xyz from uptime-kuma ingress
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 10:13:50 +00:00
chemavxandClaude Opus 4.8 4a529fb0b9 feat(filebrowser): add Traefik basic-auth middleware
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 08:05:03 +00:00
chemavxandClaude Opus 4.8 da8a9293c8 feat: add filebrowser to browse and download imagefinder output
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 07:58:59 +00:00