Commit Graph
74 Commits
Author SHA1 Message Date
chemavx 97d7bcef60 fix: disable service env injection to avoid TRILIUM_PORT conflict
K8s injects TRILIUM_PORT=tcp://... from the service, but Trilium
expects an integer. enableServiceLinks: false prevents the collision.
2026-05-22 09:58:49 +00:00
chemavx 0d3da9856a feat: add Trilium Notes deployment
namespace, deployment, PVC (2Gi local-path), service, Traefik ingress
with letsencrypt-prod TLS at trilium.chemavx.xyz, ArgoCD Application.
2026-05-22 09:56:57 +00:00
chemavxandClaude Sonnet 4.6 177d9e0f9a fix: retry loop up to 60s in n8n smoke test healthz check
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 14:14:43 +00:00
chemavxandClaude Sonnet 4.6 f63051c0f5 chore: migrate renovate config from config.js to renovate.json
Eliminates JS migration warning; update RENOVATE_CONFIG_FILE accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 14:01:32 +00:00
chemavxandClaude Sonnet 4.6 e2d0173e43 chore: LOG_LEVEL info in renovate, document secret management in README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:58:58 +00:00
chemavxandClaude Sonnet 4.6 71437e8932 chore: ignore renovate-token secret diff in ArgoCD
Prevents ArgoCD from overwriting the real token with the placeholder.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:54:47 +00:00
chemavxandClaude Sonnet 4.6 1369b9b407 chore: set gitAuthor for renovate commits
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:51:52 +00:00
chemavx 0d6bd4dae2 fix: remove renovate secret from repo, managed manually 2026-05-20 13:46:51 +00:00
chemavxandClaude Sonnet 4.6 1a4f673115 chore: pin renovate image to 38.0.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:41:03 +00:00
chemavxandClaude Sonnet 4.6 b27b08c40a fix: trailing slash on endpoint, drop explicit token from config.js
Renovate reads RENOVATE_TOKEN from env automatically.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:37:25 +00:00
chemavxandClaude Sonnet 4.6 f477f8a6d4 fix: revert renovate endpoint to base URL (Renovate appends API path internally)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:26:08 +00:00
chemavxandClaude Sonnet 4.6 e105a570aa chore: set LOG_LEVEL=debug in renovate CronJob
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:21:55 +00:00
chemavxandClaude Sonnet 4.6 b74252a451 fix: use full Gitea API URL in renovate endpoint
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:19:46 +00:00
chemavxandClaude Sonnet 4.6 26b0472ec1 fix: explicit token from env and valid schedule syntax in renovate config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:14:54 +00:00
chemavxandClaude Sonnet 4.6 17741225ab feat: deploy Renovate Bot via CronJob for automatic dependency updates
- CronJob every 6h, concurrencyPolicy: Forbid
- Platform gitea at git.chemavx.xyz, repos: researchowl, polymarket-bot, n8n
- packageRules: major=PR only, patch=automerge, private registry disabled
- Secret placeholder for Gitea token (fill in before applying ArgoCD app)
- ArgoCD Application with automated sync

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:04:48 +00:00
chemavxandClaude Sonnet 4.6 ed01a0f95a fix: robust readiness check in researchowl smoke test
- Extract readyReplicas OR availableReplicas (k8s omits readyReplicas when 0)
- Also accept MinimumReplicasAvailable condition as ready signal

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 13:01:38 +00:00
chemavxandClaude Sonnet 4.6 268de202c4 fix: replace sleep 15 with 60s retry loop in researchowl smoke test
Polls readyReplicas every 5s up to 12 attempts instead of a fixed wait.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 12:57:42 +00:00
chemavxandClaude Sonnet 4.6 ec3a8c3d55 fix: sleep 15 before k8s API check in researchowl smoke test
Pod takes a few seconds to become ready after PostSync fires.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 12:47:43 +00:00
chemavxandClaude Sonnet 4.6 eb46543150 feat: add Telegram notifications to PostSync smoke tests + new tests for researchowl/openclaw
- Create telegram-notify secret in n8n, portfolio, polymarket-bot, researchowl, openclaw
  namespaces (values mirrored from monitoring/grafana-telegram)
- Update existing smoke tests (n8n, portfolio, polymarket-bot) to send [OK]/[FAIL]
  Telegram notifications on success/failure
- Add postsync-smoke-test for openclaw (curl GET / on port 18789)
- Add postsync-smoke-test for researchowl (no HTTP port; checks readyReplicas via
  k8s API using a smoke-test-reader ServiceAccount + Role + RoleBinding)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 12:40:23 +00:00
chemavx 4e6703a721 docs: argocd post-install patches 2026-05-20 12:27:14 +00:00
chemavx acb2b869b0 fix: argocd-redis nodeSelector chemavx-k8 + resource limits 2026-05-20 12:26:42 +00:00
chemavxandClaude Sonnet 4.6 673e1c3388 feat: añadir Ghost EN (theexclusionzone.com) a ResearchOwl
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-18 16:40:02 +00:00
chemavx 9508ddffee feat(portfolio): add ze manual page at /ze
- Add ze-manual-html ConfigMap serving ze-manual.html at /ze/index.html
- Mount ze-manual-html in nginx at /usr/share/nginx/html/ze
- Add Projects section in portfolio index with ze card linking to /ze
2026-05-16 11:21:44 +00:00
chemavxandClaude Sonnet 4.6 530177cd6e feat: add Umami analytics deployment
Deploys Umami with PostgreSQL backend, Traefik ingress, cert-manager
TLS, and ArgoCD GitOps pattern matching existing services.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 07:48:53 +00:00
chemavxandClaude Sonnet 4.6 09da22ea7b fix: eliminar Secret de deployment.yaml para gestión manual
ArgoCD sobreescribía zona-exclusion-secrets con REPLACE_ME.
El secret se gestiona manualmente con annotation Prune=false.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 17:48:20 +00:00
chemavxandClaude Sonnet 4.6 8ad6672c2f fix: ArgoCD no sobreescribe zona-exclusion-secrets
Añade ignoreDifferences para /data del Secret y
RespectIgnoreDifferences=true para que el sync no aplique
el recurso cuando la única diferencia es en los datos del secret.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-09 17:46:25 +00:00
chemavxandClaude Sonnet 4.6 6ac858858f feat: add Ghost CMS integration to ResearchOwl deployment
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 10:13:21 +00:00
chemavxandClaude Sonnet 4.6 99a0dd0c23 feat: añadir zonadeexclusion.com a cloudflare-ddns DOMAINS
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 21:04:32 +00:00
chemavxandClaude Sonnet 4.6 7ac9e637a5 fix: forzar SQLite en Ghost para evitar intento de conexión a MySQL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 20:49:35 +00:00
chemavxandClaude Sonnet 4.6 444fb1058e feat: add Ghost CMS deployment for Zona de Exclusión blog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 20:47:17 +00:00
chemavx cb5977862e fix: repoURL de vuelta a git.chemavx.xyz 2026-05-06 11:47:24 +00:00
chemavx df7b8dfcca fix: repoURL a ClusterIP interno de Gitea 2026-05-06 11:44:19 +00:00
chemavx 5c9b63938e fix: actualizar repoURL a gitea.chemavx.xyz en argocd-app.yaml 2026-05-06 09:07:25 +00:00
chemavx 06929c3008 test: webhook 2026-05-06 08:10:01 +00:00
chemavx 00c5bc2d37 fix: DinD memory request 1Gi→2Gi, limit 2Gi→4Gi 2026-05-05 09:15:14 +00:00
chemavx db0391d23f fix: searxng habilitar formato JSON, forward_url false, authentication desactivada 2026-05-04 19:57:24 +00:00
chemavx 73da4044be fix: searxng http_protocol_version 1.1 y botdetection desactivado 2026-05-04 19:52:55 +00:00
chemavx ca8ddb669f fix: searxng securityContext uid 977, env vars puerto, service renombrado a searxng-svc 2026-05-04 19:47:59 +00:00
chemavx 42251bf17c feat: deploy SearXNG en namespace researchowl 2026-05-04 19:44:21 +00:00
chemavxandClaude Sonnet 4.6 46bc4d0b28 feat(researchowl): add ANTHROPIC_API_KEY, fix OLLAMA_URL, remove Secret template
- Add ANTHROPIC_API_KEY from secret for Claude Haiku relevance scoring
- Fix OLLAMA_URL to internal k8s DNS (ollama.ollama.svc.cluster.local)
- Remove Secret resource (was causing ArgoCD to overwrite with REPLACE_ME)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 08:08:22 +00:00
chemavx 4e6569ab6c fix: use internal Ollama service URL 2026-04-27 20:22:05 +00:00
chemavx fa01987420 chore: remove Secret from manifest (managed imperatively outside ArgoCD) 2026-04-27 19:59:28 +00:00
chemavx 65f93b745d feat: add researchowl 2026-04-27 13:53:42 +00:00
chemavxandClaude Sonnet 4.6 859bed930f chore: remove Open WebUI and unused OpenClaw k8s resources
- Deleted open-webui namespace, deployment, service, ingress, and PVC
  from cluster (replaced by OpenClaw using Claude API)
- Removed openclaw PVC and RBAC manifests no longer needed
- Removed Uptime Kuma monitor for chat.chemavx.xyz

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 13:13:38 +00:00
chemavxandClaude Sonnet 4.6 4897ca3334 feat(grafana): custom emoji message templates per alert + resolve format
Each alert rule's summary annotation now renders a formatted Telegram
message with emoji and multiline context. The contact point passes the
pre-rendered summary through, adding " Resuelto" on resolution.
Also restores the == 1 filter on Pod Failed/Unknown lost in prior rebase.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 07:26:01 +00:00
chemavxandClaude Sonnet 4.6 48a1ce80f6 backup: add k3s SQLite backup to daily CronJob
- Add hostPath volume for /var/lib/rancher/k3s/server/db (readOnly)
- Script copies state.db + WAL files → k3s-db_<date>.tar.gz in /data/backups/backups/
- Rotation: keeps last 7 copies (same policy as other services)
- rclone-mega-backup picks it up automatically (syncs full /data/backups/backups/)
- Also tracks the CronJob manifest in git (was previously untracked)

Note: k3s uses SQLite/kine (not embedded etcd). etcd-snapshot is disabled.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 10:23:18 +00:00
chemavxandClaude Sonnet 4.6 cc8140760f argocd: configure Telegram notifications and add Application manifests
- Configure argocd-notifications-cm with Telegram service, templates and triggers
  for sync-succeeded, sync-failed, and app-degraded events
- Add application-polymarket-bot.yaml and application-n8n.yaml with notification
  subscription annotations (chat_id: 5138407666)

Note: requires kubectl patch of argocd-notifications-secret with telegram-token

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 09:56:35 +00:00
chemavxandClaude Sonnet 4.6 8bab07201a ollama: elimina GPU, fija imagen 0.20.7, reduce a qwen2.5:3b
- Imagen: ollama/ollama:latest → ollama/ollama:0.20.7
- Elimina NVIDIA_VISIBLE_DEVICES, NVIDIA_DRIVER_CAPABILITIES
- Elimina nvidia.com/gpu: "1" de resources limits
- Reduce memory: 8/20Gi → 4/8Gi (solo CPU, modelo 3b)
- Startup: auto-pull cambiado a qwen2.5:3b

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 15:34:37 +00:00
chemavxandClaude Sonnet 4.6 792b53dee7 openclaw: añade kubectl-ro via initContainer setup-kubectl
- initContainer bitnami/kubectl copia kubectl y crea wrapper kubectl-ro en emptyDir /opt/kube
- kubectl-ro deniega verbos destructivos (delete/apply/patch/edit/exec/scale/rollout/drain/...)
- Main container monta /opt/kube; SA token automontado para in-cluster auth
- Sin kubeconfig manual: kubectl detecta KUBERNETES_SERVICE_HOST/PORT automáticamente

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 14:33:17 +00:00
chemavxandClaude Sonnet 4.6 e176bb9810 openclaw: actualiza imagen a 2026.4.22
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 14:15:49 +00:00
chemavxandClaude Sonnet 4.6 74b9a31352 openclaw: corrige mountPath a /home/node/.openclaw
El config dir de OpenClaw es /home/node/.openclaw, no /data.
Monta el PVC en la ruta correcta para que openclaw.json persista.
Elimina OPENCLAW_DATA_DIR (no era el config dir).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 10:45:56 +00:00
chemavxandClaude Sonnet 4.6 f465f190d8 openclaw: reinstall limpio con Claude API y ArgoCD
- Manifiestos limpios: namespace, rbac, pvc (5Gi local-path), deployment, service, ingress
- nodeSelector chemavx-k8 en deployment para fijar PVC en el nodo correcto
- Imagen fijada a ghcr.io/openclaw/openclaw:2026.4.12
- Sin initContainers ni secrets en el deployment (config post-arranque via exec)
- Elimina artefactos: configmap-kube-root-ca.crt.yaml, serviceaccount-default.yaml, pvc-openclaw-pvc.yaml, rbac-openclaw-agent.yaml
- Añade argocd/application-openclaw.yaml para gestión GitOps

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 10:40:08 +00:00
chemavx 8a8f33704c fix: smoke test grep to match compact JSON (no space after colon) 2026-04-23 09:22:53 +00:00
chemavx d3c03d5462 argocd: add PostSync smoke test hooks for polymarket-bot, n8n, portfolio 2026-04-23 09:14:12 +00:00
chemavx 62abb6134b registry-cache: switch upstream to mirror.gcr.io (bypass Cloudflare R2 block) 2026-04-22 20:29:11 +00:00
chemavxandClaude Sonnet 4.6 0bf2e746dd feat(registry-cache): add Docker Hub pull-through cache + dind mirror config
Deploy registry:2 as Docker Hub pull-through cache on chemavx-k8 (hostPort 5000,
ClusterIP 10.43.163.56:5000). Configures dind runner to use local mirror via
daemon.json to eliminate Docker Hub rate limit failures in CI/CD.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 11:35:43 +00:00
chemavxandClaude Sonnet 4.6 a5aac4dd83 chore(openclaw): golden config snapshot + RBAC manifest in git
- Add openclaw/golden/ with stable copies of openclaw.json, SOUL.md,
  TOOLS.md, HOMELAB.md, kubectl-ro
- Fix HOMELAB.md model roles (qwen3-es:14b=primary, llama3.1-es:8b=fallback)
- Add rbac-openclaw-agent.yaml (ClusterRole read-only + binding + SA)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 09:18:39 +00:00
chemavxandClaude Sonnet 4.6 8592a09bc7 fix(ollama): use Recreate strategy to avoid RWO PVC conflict
RollingUpdate caused rollout deadlocks because the PVC (ReadWriteOnce)
cannot be mounted by two pods simultaneously.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 09:03:47 +00:00
chemavxandClaude Sonnet 4.6 8b7d3c0659 feat(ollama): migrate GPU from AMD ROCm to NVIDIA CUDA (RTX 3060 via OCuLink)
Switch from ollama/ollama:rocm + amd.com/gpu to standard CUDA image + nvidia.com/gpu.
RTX 3060 (GA106, 12GB) now used via NVIDIA GPU Operator on chemavx-k8.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 17:13:07 +00:00
chemavx 72be7ebac8 feat(portfolio): add ChemaVX portfolio with Polymarket live metrics 2026-04-16 10:00:16 +00:00
chemavx a0d208db63 feat(grafana): add ChemaVX Homelab Overview dashboard as ConfigMap 2026-04-16 09:54:19 +00:00
chemavxandClaude Sonnet 4.6 0927658f58 chore: pin ollama and cloudflare-ddns to exact running versions
- ollama/ollama:latest → 0.20.7
- favonia/cloudflare-ddns:latest → 1.16.2

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 08:13:13 +00:00
chemavxandClaude Sonnet 4.6 22ae5d7d4b chore: pin all floating image tags to exact running versions
- vaultwarden/server:latest → 1.35.4
- redis:alpine → 8.6.2-alpine (authentik)
- homarr-labs/homarr:latest → 1.0.0
- gitea/gitea:latest → 1.25.5
- uptime-kuma:1 → 1.23.17

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 08:11:22 +00:00
chemavxandClaude Sonnet 4.6 c1e57613ed chore(openclaw): update to 2026.4.12
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 07:58:37 +00:00
chemavx 0841d6bbe6 fix: add CreateOnly sync option to n8n-secret to prevent ArgoCD from overwriting encryption key 2026-04-14 20:30:36 +00:00
chemavx 7397c1d939 refactor: rewrite n8n manifests as clean GitOps specs, remove server-exported fields 2026-04-14 20:25:16 +00:00
chemavx 192a0bfa7a fix: delete secret-n8n-tls.yaml — kubernetes.io/tls type requires data fields, cert-manager manages this secret directly 2026-04-14 20:06:32 +00:00
chemavx f42cdee585 security: remove all REDACTED secrets from repo, add pre-commit guard
- Delete 26 secret manifests containing REDACTED placeholder values
  (15 cert-manager TLS + 11 app secrets across 8 namespaces)
- REDACTED is valid base64 that decodes to non-UTF-8 bytes — ArgoCD
  applying these manifests corrupts live secrets in the cluster
- Add .githooks/pre-commit that rejects any .yaml with REDACTED
- Add README.md documenting secret management policy and manual
  creation commands for each service
- n8n secret manifests already fixed in previous commits (618b1e8, db04fd2)
2026-04-14 20:02:51 +00:00
chemavx db04fd2cbc fix: remove REDACTED data from n8n-tls secret manifest, prevent ArgoCD from corrupting cert-manager TLS 2026-04-14 19:58:44 +00:00
chemavx 618b1e8d11 fix: remove sensitive data from secret manifest, prevent ArgoCD from overwriting encryption key 2026-04-14 19:09:41 +00:00
chemavxandClaude Sonnet 4.6 c9d4877742 fix(polymarket-bot): remove cert-manager managed TLS secret from repo
ArgoCD was overwriting the polymarket-tls secret with REDACTED values,
corrupting the TLS cert. This secret is managed by cert-manager and
must not be tracked in git.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 20:33:36 +00:00
chemavxandClaude Sonnet 4.6 e59da6b3a9 chore(polymarket-bot): clean up manifests, remove stale kubectl annotations
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 20:28:27 +00:00
chemavxandClaude Sonnet 4.6 45c4dde929 fix(polymarket-bot): fix corrupted secret and migrate to Gitea registry images
- Fix bot-secrets: replace corrupted REDACTED base64 values with correct ones
- Update deployment-api and deployment-bot to use git.chemavx.xyz registry images
- Add imagePullSecrets (gitea-registry) to api and bot deployments
- Add secret-gitea-registry.yaml manifest for ArgoCD to manage

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 20:27:23 +00:00
chemavx ff2e6cc985 feat: export all K8 Plus cluster manifests
Namespaces: argocd, authentik, backup-system, cloudflare-ddns,
gitea, homarr, monitoring, n8n, openclaw, polymarket-bot, vaultwarden
Cluster-wide: clusterissuers, namespaces
Secrets: redacted (structure only, data=REDACTED)
2026-04-10 08:57:02 +00:00