Commit Graph

70 Commits

Author SHA1 Message Date
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
root d337f82d1c fix: hardcode OO domain in Traefik label; Coolify does not expand vars in labels
- nextcloud/docker-compose.yml: X-Forwarded-Host=onlyoffice.sherlockhomeless.net
  (was ${OO_DOMAIN} which Coolify leaves unexpanded → OnlyOffice loads assets
  from https://${oo_domain}/ and editor breaks entirely)
- nextcloud/stack.env: update placeholder domains to real ones
- COOLIFY-TEMPLATE.md: add Gotcha 6 about label variable expansion

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:27:38 +00:00
root 2c7b7eb356 docs: add gotcha 5 - all host data lives under /opt/<stack>/
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:10:59 +00:00
root 15341785b2 fix: adguard and authentik use /opt bind mounts (original Portainer paths)
Data was in /opt/adguard/{work,conf} and /opt/authentik/{postgres,redis}
all along. Previous commit used named volumes which would ignore this data.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:10:39 +00:00
root 786c55bc01 fix: replace variable bind mounts with hardcoded paths/named volumes
Coolify converts ${VAR}:/path bind mounts to named Docker volumes when
the variable is not resolved. Fixed per stack:

- adguard: -> named volumes (data already in Coolify-created volumes)
- authentik: -> named volumes (data already in Coolify-created volumes)
- gitea: -> /opt/gitea/{postgres,data,runner}
- mail-relay: -> /opt/mail-relay/{queue,opendkim,secrets/...}
- media-server: COMMON_PATH -> /opt/media (hardcoded)
- trilium: -> /opt/trilium/data
- wireguard: -> /opt/wg-easy + /lib/modules

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:09:08 +00:00
root 01699a132c docs: add operational gotchas to Coolify template
- Gotcha 1: dynamic config dir is /opt/traefik/dynamic, NOT /data/coolify/proxy/dynamic
- Gotcha 2: entrypoints are http/https (not web/websecure); coolify.yaml fix location
- Gotcha 3: env vars in bind mount paths become named volumes in Coolify
- Gotcha 4: SSH MaxSessions must be >= 10 for parallel deploy sessions

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 02:02:16 +00:00
root 57eb7248ec fix: n8n use hardcoded bind mounts to preserve Portainer data
- n8n app data: /opt/n8n/data → /home/node/.n8n
- postgres data: /opt/n8n/postgres → /var/lib/postgresql/data
  (was using ${N8N_DB_DATA_PATH} which Coolify converts to a named volume)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 01:54:07 +00:00
root eb6715ccc0 feat: migrate all stacks to Coolify (proxy network, clean labels, pull_policy)
- Remove traefik.enable, traefik.docker.network, traefik.http.routers.* from all services
- Keep traefik.http.services.<name>.loadbalancer.server.port labels
- Keep all middleware definitions (forwardauth, headers, redirects)
- Add pull_policy: always to main/frontend services
- Add proxy network + label to gitea and karakeep (previously missing)
- Add COOLIFY-TEMPLATE.md reference guide

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 01:51:55 +00:00
root c938c02742 fix: add proxy network to n8n so Coolify Traefik can reach it 2026-03-23 01:42:58 +00:00
root 8f55ddd1c8 refactor: replace dockerfile_inline with pull_policy: always 2026-03-23 01:38:02 +00:00
root 5191a4d211 fix: add Traefik port label 5678 to n8n service 2026-03-23 01:36:34 +00:00
root 0025270491 fix: n8n use SERVICE_FQDN_N8N for N8N_HOST and WEBHOOK_URL 2026-03-23 01:27:47 +00:00
root e062983a1d fix: adapt n8n compose for Coolify (remove Traefik/proxy/mail_internal, add dockerfile_inline) 2026-03-23 01:16:09 +00:00
root 7b67adbf2b fix: adapt gitea and karakeep compose for Coolify (remove Traefik, add dockerfile_inline) 2026-03-23 00:58:01 +00:00
Eduardo David Paredes Vara f5aa4b2674 karakeep 2026-03-23 00:55:48 +00:00
Eduardo David Paredes Vara f24284a27f karakeep 2026-03-23 00:49:02 +00:00
Eduardo David Paredes Vara 9f4ff93a29 coolify 2026-03-23 00:46:03 +00:00
Eduardo David Paredes Vara 0f8111ccdc coolify gitea 2026-03-23 00:34:56 +00:00
Eduardo David Paredes Vara 3c254b68ce mail server n8n 2026-03-20 23:39:52 +00:00
Eduardo David Paredes Vara 0e4225ae66 mail server paperless 2026-03-20 23:30:44 +00:00