Commit Graph

89 Commits

Author SHA1 Message Date
Eduardo David Paredes Vara a568d49aa4 fix(freshrss): expose mobile api without sso 2026-07-25 13:34:05 +00:00
Eduardo David Paredes Vara 1911fba582 feat(freshrss): add personal rss reader 2026-07-25 13:25:13 +00:00
Eduardo David Paredes Vara 95a5f11870 fix(ops): protect sablier services from unsafe prune 2026-07-25 13:00:52 +00:00
Eduardo David Paredes Vara 05444afc54 chore(security): remove committed basic auth examples 2026-07-25 12:16:22 +00:00
Eduardo David Paredes Vara 878009b519 fix(observability): accept restricted on-demand endpoints 2026-07-25 11:29:45 +00:00
Eduardo David Paredes Vara b9291b9c99 feat(observability): consolidate ops reports in python 2026-07-25 11:22:37 +00:00
Eduardo David Paredes Vara 10d2a301e0 fix(opencode): retire legacy host route 2026-07-25 11:22:13 +00:00
Eduardo David Paredes Vara aaf50e5af7 feat(ai): update n8n and paperless model stack 2026-07-25 11:21:57 +00:00
Eduardo David Paredes Vara 393a716d57 feat(litellm): add gpt-5.6-sol model 2026-07-25 11:21:40 +00:00
Eduardo David Paredes Vara 6e6971da59 feat: add utility service stacks 2026-07-25 11:21:23 +00:00
Eduardo David Paredes Vara 4536b3a36a refactor(compose): protect services and centralize routing 2026-07-25 11:21:08 +00:00
Eduardo David Paredes Vara 29988f3149 chore(kasm): move stack to deprecated area 2026-07-25 11:20:46 +00:00
Eduardo David Paredes Vara 3b7f2a2fa1 docs: document direct compose workflow 2026-07-25 11:20:27 +00:00
Eduardo David Paredes Vara d64191865b feat(litellm): renombrar modelos DeepSeek a alias thsllm
Cambia los model_name públicos de deepseek-chat/reasoner a thsllm-chat/reasoner
para que las trazas de red hacia el VPS no revelen el proveedor subyacente.
El enrutamiento interno a deepseek/deepseek-* no cambia.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 06:03:52 +00:00
Eduardo David Paredes Vara c954faa827 fix(openwebui): deshabilitar Ollama y corregir variable de entorno
- ENABLE_OLLAMA_API=false: desactiva Ollama explícitamente (OLLAMA_BASE_URL=""
  no era suficiente para que OpenWebUI dejara de intentar conectar)
- Actualizado stack.env con la nueva variable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 06:00:06 +00:00
Eduardo David Paredes Vara f5a87901d5 docs(openwebui): aclarar que OPENAI_API_KEY es la LITELLM_MASTER_KEY
El nombre del campo es heredado de OpenWebUI; no es una key de OpenAI.
LiteLLM gestiona el auth de Codex internamente vía OAuth tokens.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:54:33 +00:00
Eduardo David Paredes Vara 11f24ff64d feat(openwebui): añadir stack.env con configuración de LiteLLM y Authentik SSO
- OPENAI_API_BASE_URL apunta a http://litellm:4000/v1 (red proxy compartida)
- Modelos descubiertos automáticamente desde /v1/models de LiteLLM
- Login sin formulario: Authentik inyecta email/nombre vía trusted headers
- ENABLE_SIGNUP y ENABLE_LOGIN_FORM desactivados (acceso solo vía SSO)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:53:02 +00:00
Eduardo David Paredes Vara f390ac8828 feat(privatebin): añadir stack de pastebin cifrado end-to-end
PrivateBin como pastebin autohospedado con cifrado en el cliente,
protegido con Authentik SSO.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:55 +00:00
Eduardo David Paredes Vara 66bec9992d feat(openwebui): añadir stack de interfaz web para modelos de IA
Open WebUI conectado al gateway LiteLLM, con autenticación delegada
a Authentik mediante trusted headers (X-Authentik-Email/Name).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:54 +00:00
Eduardo David Paredes Vara da4baf44ab feat(opengist): añadir stack de gists autohospedados con SSO
OpenGist como alternativa autoalojada a GitHub Gists con autenticación
OIDC delegada a Authentik.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:54 +00:00
Eduardo David Paredes Vara d771ea9dd5 feat(opencode): añadir stack del agente de código OpenCode
OpenCode como agente de desarrollo con acceso al filesystem del host,
expuesto vía Traefik con autenticación forward auth de Authentik.
Incluye configuración de systemd para modo web y ejemplos de .env.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:44 +00:00
Eduardo David Paredes Vara c484e502c2 feat(onetimesecret): añadir stack de compartición segura de secretos
OneTimeSecret para compartir contraseñas y datos sensibles mediante
enlaces de un solo uso, con integración OIDC a Authentik.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:44 +00:00
Eduardo David Paredes Vara 975554892a feat(litellm): añadir gateway de IA con proveedor Codex personalizado
Proxy LiteLLM que enruta peticiones a DeepSeek y a los modelos Codex
de OpenAI (gpt-5.5, gpt-5.4, gpt-5.3-codex, gpt-5.4-mini, gpt-5.2)
usando los tokens OAuth del CLI de Codex en lugar de la API estándar.

- codex_provider.py: proveedor CustomLLM que llama a
  chatgpt.com/backend-api/codex/responses con renovación automática
  de tokens JWT
- config.yaml: model_list con prefijo cx- para evitar interceptación
  por litellm.open_ai_chat_completion_models
- docker-compose.yml y stack.env: configuración del stack

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:34 +00:00
Eduardo David Paredes Vara 7b4ed3e05e feat(kasm): añadir stack de workspaces aislados en navegador
Kasm Workspaces para ejecutar aplicaciones de escritorio en contenedores
accesibles desde el navegador, protegido con Authentik SSO.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:12 +00:00
Eduardo David Paredes Vara 26898ac1fe feat(homepage): añadir stack de dashboard del homelab
Dashboard centralizado con widgets de estado de servicios, integración
con Docker para mostrar contenedores y acceso SSO vía Authentik.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:12 +00:00
Eduardo David Paredes Vara 49a4cfd510 feat(guacamole): añadir stack de escritorio remoto vía navegador
Apache Guacamole para acceso RDP/SSH/VNC desde el navegador, protegido
con Authentik SSO. Incluye script de inicialización de base de datos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:05 +00:00
Eduardo David Paredes Vara 8b16744da8 feat(dozzle): añadir stack de visualización de logs de contenedores
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:49:04 +00:00
Eduardo David Paredes Vara 49a7e16da1 feat(crowdsec): añadir stack de detección de intrusiones con Grafana
- docker-compose.yml: CrowdSec + bouncer de Traefik + Postgres + Grafana
- setup.sh: configuración inicial de colecciones, bouncers y whitelist
- metrics-export.sh: exportación de métricas al endpoint de Prometheus
- traefik-crowdsec-bouncer.yml: config dinámica de Traefik para el bouncer
- stack.env: plantilla con API keys y configuración

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:58 +00:00
Eduardo David Paredes Vara 38587699f9 feat(cloudflared): añadir stack de Cloudflare Tunnel + gestión DNS
- docker-compose.yml: tunnel de Cloudflare para exponer servicios sin
  abrir puertos en el router
- add-domain.sh: script para añadir subdominios al tunnel y crear
  registros DNS en Cloudflare vía API
- stack.env: plantilla con tokens y configuración del tunnel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:58 +00:00
Eduardo David Paredes Vara 6dd699fcfe feat(bookstack): añadir stack de wiki con integración Authentik SSO
Wiki basada en BookStack con autenticación delegada a Authentik via OIDC.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:47 +00:00
Eduardo David Paredes Vara 2ea6457b8a feat(beszel): añadir stack de monitorización de servidores
Stack ligero para monitorizar recursos del host y contenedores Docker.
Incluye agente local y servidor con interfaz web protegida por Authentik.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:47 +00:00
Eduardo David Paredes Vara 616b20f285 feat(backups): añadir stack de backups cifrados con Kopia + Cloudflare R2
- init-r2-repository.sh: inicializa repositorio Kopia en R2
- run-backup.sh: ejecuta backup de rutas definidas en backup-paths.txt
- pre-backup-dumps.sh: vuelca bases de datos (Postgres, MariaDB) antes del backup
- kopia-common.sh: funciones compartidas de autenticación y configuración
- restore-smoke-test.sh: test de restauración para verificar integridad
- backup-paths.txt / excludes.txt: rutas y exclusiones del backup
- systemd/: unidades kopia-server, kopia-docker-backup (service + timer)
- traefik-kopia.yml: exposición del servidor Kopia vía Traefik
- env.example: plantilla de variables (credenciales R2, contraseña repo)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:38 +00:00
Eduardo David Paredes Vara 6ba696ff2b fix(wireguard): actualizar stack VPN y documentación
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:28 +00:00
Eduardo David Paredes Vara 4644da06c4 feat(karakeep): añadir stack de archivo de enlaces con OCR e IA
- stack.env: plantilla con configuración de modelos de inferencia
  (text, embedding) y parámetros de OCR multilingüe (eng, spa)
- docker-compose.yml: ajustes del stack

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:28 +00:00
Eduardo David Paredes Vara c158569a04 fix(media-server): actualizar documentación del stack multimedia
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:28 +00:00
Eduardo David Paredes Vara e9f35d7154 fix(trilium, vikunja): actualizar stacks de notas y tareas
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:27 +00:00
Eduardo David Paredes Vara faaffc2a3b feat(memos): añadir proxy de reescritura de rutas para Authentik SSO
- proxy/server.js: proxy Node.js que reescribe la ruta del callback OAuth
  de Authentik (/auth/callback → /api/v1/auth/oauth/authentik/callback)
  resolviendo la incompatibilidad entre la URL que Authentik envía y la
  que espera Memos
- docker-compose.yml y stack.env: actualizados para incluir el proxy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:15 +00:00
Eduardo David Paredes Vara 46d7a28210 feat(n8n-observability): añadir stack de observabilidad con agente IA
Stack de scripts y plantillas para generar reportes diarios del homelab
usando n8n como orquestador y un modelo de IA como redactor:

- scripts/server-summary.sh: métricas del sistema (CPU, RAM, disco)
- scripts/log-digest.sh: resumen de logs de Traefik y contenedores
- scripts/health-results.sh: estado de servicios y checks
- scripts/codex-reauth.sh: reautenticación OAuth del proveedor Codex
- templates/ai-daily-report-prompt.md: prompt para el informe diario
- workflows/workflow-design.md: diseño del workflow de n8n
- config/services.example.json: ejemplo de configuración de servicios

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:07 +00:00
Eduardo David Paredes Vara 6b641981dd fix(n8n): actualizar stack de automatización de workflows
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:48:07 +00:00
Eduardo David Paredes Vara 1db61640d2 fix(nextcloud, paperless): actualizar stacks de gestión documental
- Nextcloud: ajustes en docker-compose.yml y stack.env
- Paperless-ngx: ajustes en docker-compose.yml y stack.env
  (ambos stacks comparten integración via WebDAV para sincronizar bandeja)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:47:52 +00:00
Eduardo David Paredes Vara c1f7e90b58 fix(gitea): actualizar stack y documentación
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:47:39 +00:00
Eduardo David Paredes Vara 82d09276c6 fix(mail-relay): actualizar configuración del relay SMTP
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:47:39 +00:00
Eduardo David Paredes Vara 61134d7834 feat(authentik): añadir script de creación de aplicaciones OAuth
- create-auth-app.sh: script interactivo para crear providers y
  aplicaciones en Authentik vía API, automatizando la integración SSO
- docker-compose.yml y stack.env: ajustes del stack
- README.md: documentación actualizada

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:47:33 +00:00
Eduardo David Paredes Vara 174d282fd9 feat(adguard): añadir sincronización automática de certificados
- adguard-cert-sync.service / .timer: unidades systemd para renovar
  automáticamente el certificado TLS de AdGuard cuando Traefik lo renueva
- sync-adguard-cert.sh: script que copia cert desde /opt/traefik/certs
  y reinicia AdGuard vía API
- docker-compose.yml y stack.env: ajustes menores
- README.md: documentación actualizada con instrucciones de instalación

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:47:26 +00:00
Eduardo David Paredes Vara 97512178db feat(traefik): actualizar stack y añadir dashboard dinámico
- docker-compose.yml y stack.env: ajustes generales del stack
- traefik-dashboard.yml: nueva config dinámica para exponer el dashboard
  vía Traefik con autenticación Authentik
- README.md: documentación actualizada

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:47:19 +00:00
Eduardo David Paredes Vara 5e220591e7 chore: actualizar meta del repo y configuración base
- .gitignore: añadir reglas para .env, *.live.yaml, .codex, .vscode, certs
- README.md y COOLIFY-TEMPLATE.md: actualizados con nuevos stacks
- NUEVA-APP.md: guía para añadir nuevas apps al homelab
- PROMPT-SSO-ISSUE.md: contexto de debugging SSO/Authentik
- .github/copilot-instructions.md: instrucciones de arquitectura para Copilot
- docker-compose.yml raíz: ajustes al stack de Portainer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 05:47:11 +00:00
Eduardo David Paredes Vara 5e69ad1024 wireguard torrent 2026-04-05 23:54:10 +00:00
root 6781b90b25 feat: add vikunja stack (Coolify-ready)
- pull_policy: always on vikunja service
- hardcoded bind mounts: /opt/vikunja/{postgres,files}
- port hardcoded in label: 3456 (Gotcha 6)
- removed Portainer Traefik router labels
- vikunja_internal: driver bridge (no fixed name)
- proxy: external: true

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:57:15 +00:00
root 43c80867c0 feat: add memos stack (Coolify-ready)
- pull_policy: always on memos service
- hardcoded bind mounts: /opt/memos/{postgres,data}
- port hardcoded in label: 5230 (Gotcha 6)
- removed Portainer Traefik router labels (Coolify manages routing)
- removed traefik.enable / traefik.docker.network
- memos_internal: driver bridge (not fixed name)
- proxy: external: true

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:52:18 +00:00
root 7dce4a06cb fix: hardcode Traefik port labels (Gotcha 6 - vars not expanded in labels)
Coolify does not expand ${VAR} in label values. All loadbalancer port
labels must use hardcoded values:
- trilium:   ${TRILIUM_HTTP_PORT}  → 8080
- adguard:   ${ADGUARD_HTTP_PORT}  → 80
- authentik: ${AUTHENTIK_HTTP_PORT} → 9000
- gitea:     ${GITEA_HTTP_PORT}    → 3000
- wireguard: ${WG_UI_PORT}         → 51821

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:44:58 +00:00