El día 3 (ventana operativa del 26 al 27 de mayo de 2026, ~12 h en el VPS Debian) consolida dos frentes que conviven en el mismo host: OpenCloud pasa a tener un repositorio Git propio con despliegue versionado y plan de corte a cloud.km0digital.com, y la web corporativa migra de km0.amvara.de a km0digital.com con mejoras de producto (FAQ, versión en pie, modal «próximamente», menú móvil y selector de idioma sin perder contexto). En ambos repos se introduce el mismo bucle autoagents (GitHub Issues → tareas → cursor-agent) y, en OpenCloud, notas de cierre automáticas en Redmine al archivar tareas.

Resumen ejecutivo

ÁreaHitos del día
OpenCloudPrimer commit Git de activos KM0 (km0-opencloud); alineación de plantillas a cloud.km0digital.com; bucle autoagents; redmine_sync.py al archivar CLOSED-*.
Web corporativaMigración a km0digital.com; slugs de blog day-*; FAQ multidioma; pie con semver; modal email «coming soon»; hamburguesa móvil; switchLocaleHref; versión 1.1.4.
CompartidoReglas Cursor (direct-user-prompts, security-untrusted-input, autoagents-workflow), autoagents/SKILL.md, scripts/git-sync-main.sh, docs/agent-loop.md.

Coexistencia en un solo host (estado tras el día)

Internet :443
    ├── km0digital.com          → nginx km0       → 127.0.0.1:9180  (km0-web Docker)
    └── cloud.km0digital.com    → nginx opencloud → 127.0.0.1:9200  (OpenCloud external-proxy)
                                      └── /dex/*  → 127.0.0.1:5556  (Dex OIDC)
ServicioURLRuta en servidor
Marketinghttps://km0digital.com/opt/km0-web
OpenCloudhttps://cloud.km0digital.com/opt/opencloud
Redirección legadokm0.amvara.de → apexvhost nginx km0

Durante la ventana, el README de OpenCloud aún podía citar la web en el dominio anterior mientras km0-web ya apuntaba a km0digital.com — conviene alinear runbooks en el siguiente pase operativo.

OpenCloud — repositorio Git (km0-opencloud)

Commit inicial (f454889, 26-may 21:13 CEST): Initial KM0 OpenCloud deployment repository en git@github.com:AMVARA-CONSULTING/km0-opencloud.git, rama main.

Quedó versionado (63 ficheros), entre otros:

  • overrides/opencloud-compose/ — CSP, overlay external-proxy, parche OIDC, ejemplo .env.debian-core-external-proxy.example
  • dex/ — compose Dex, tema KM0 (web/themes/km0/), plantillas de login, setup-apple.sh
  • nginx/ — plantilla vhost para cloud.km0digital.com, conf.d/opencloud-map.conf
  • host-www/opencloud-auth/ — login híbrido (config-dex.json / config-local.json, login.html)
  • scripts/ — backups, apply-opencloud-compose-overrides.sh
  • docs/ — runbook, REPOSITORY.md, resumen Redmine

Fuera de Git (solo en servidor): clon upstream opencloud-compose/, .env vivos, secretos OAuth, volúmenes Docker y /etc/letsencrypt/. Higiene previa al push: secretos e IPs operativas retirados de docs; borrador README.red con histórico sensible → .gitignore.

OpenCloud — migración de dominio y autoagents

Commit 0b27952 (27-may 00:06 CEST): alineación de OC_DOMAIN, emisor Dex, server_name nginx y plantillas a cloud.km0digital.com (sustituye cloud.km0.amvara.de en ficheros versionados). Nuevo script scripts/issue-cloud-km0digital-cert.sh (comprobación DNS + Certbot webroot).

Se añade el bucle autoagents (versión 1.0.2 en autoagents/VERSION):

RutaRol
autoagents/001-gh-reviewer.mdPoll GitHub; crea tareas NEW-*
autoagents/002-coder/CODER.mdImplementa NEW-* / WIP-*
autoagents/010-feature-coder.mdImplementa FEAT-*
autoagents/020-test.mdAgente tester
autoagents/030-closing-reviewer.mdResumen de cierre + archivo
autoagents/040-committer.mdBump de versión + commit
autoagents/autoagents-loop.shOrquestador
autoagents/gh_issue_sync.pyComentarios / cierre / labels en GitHub
scripts/move-agent-task-to-done.shArchiva CLOSED-*done/YYYY/MM/DD/

Commit 7203b6f (00:37 CEST): autoagents/redmine_sync.py — al archivar tareas cerradas, publica en Redmine un resumen Textile (variables en autoagents/.env); copia opcional bajo /root/redminenotes/.

Historial Git OpenCloud en la ventana:

CommitHora (CEST)Resumen
f45488926-may 21:13Repositorio de despliegue inicial
0b2795227-may 00:06cloud.km0digital.com + autoagents
7203b6f27-may 00:37Notas Redmine al archivar CLOSED

Web corporativa (km0-web)

Contenido y rutas (26-may, tarde)

  • 4686465 — slugs de blog dia-*day-* en todos los locales (src/content/doc/{ca,de,en,es}/).
  • 0a395de — identificadores de desarrollo en inglés para navegación y anclas (#values, #services, enlaces del blog).

Migración de hostname (23:42 CEST)

Commit bdc9e2c: URLs principales https://km0digital.com (ES en /), /ca/, /en/, /de/, blog en /doc/. Nginx: server_name km0digital.com www.km0digital.com; redirección 301 desde km0.amvara.de. TLS objetivo: /etc/letsencrypt/live/km0digital.com/. Enlaces i18n y markdown actualizados; servicio OpenCloud enlazado a https://cloud.km0digital.com. Mismo patrón autoagents y reglas Cursor que en OpenCloud.

Funcionalidades de landing (00:06 CEST)

Commit 23ec0bf (camino hacia 1.1.3):

  • Faq.astro — FAQ multidioma (hosting / Hetzner seed); ancla #faq.
  • site-version.ts — pie con semver desde package.json.
  • ServiceComingSoonModal.astro + script — UX «próximamente» para el servicio de email.
  • Ajustes en Footer, Header, Services, Landing; helpers GitHub en autoagents/lib/.
  • Tarea cerrada: FAQ (GitHub #1).

Navegación móvil e idioma (00:39 CEST)

Commit e5cfa57 (1.1.3): menú hamburguesa en Header.astro (toggle, panel móvil, aria-*, bloqueo de scroll, Escape); switchLocaleHref / stripLocalePrefix en src/i18n/paths.ts para cambiar idioma sin perder entrada de blog ni hash en landing (issues #2 y #3). Helpers Redmine en el repo web.

Documentación y versión 1.1.4

67b62cc (01:03 CEST): README simplificado (autoagents fuera del README público); versión de sitio 1.1.4. Tarea de humo CLOSED-4-... validó el pipeline (loopback + producción HTTP 200).

Tareas autoagents cerradas (km0-web)

TareaGitHubEntregable
CLOSED-1-...-new-faq-section#1Sección FAQ, 4 locales
CLOSED-2-...-changing-the-language#2switchLocaleHref
CLOSED-3-...-burger-menu#3Navegación hamburguesa móvil
CLOSED-4-...-test-issue(test)Humo del bucle — PASS en :9180 y producción

Progresión de versión del sitio en la ventana: baseline Astro 5 en :9180 → 1.1.3 (FAQ, pie semver, modal, nav móvil, locale) → 1.1.4 (README/docs).

Historial Git web (extracto): 4686465, 0a395de, bdc9e2c, 23ec0bf, e5cfa57, 382cef3, 67b62cc.

Verificación (referencia operativa)

Web:

cd /opt/km0-web
docker compose build && docker compose up -d
curl -sI https://km0digital.com/
curl -sI http://127.0.0.1:9180/en/doc/day-0/

OpenCloud:

cd /opt/opencloud
docker compose -f opencloud-compose/docker-compose.yml ps
curl -sI https://cloud.km0digital.com/login.html
# Tras registro DNS A:
/opt/opencloud/scripts/issue-cloud-km0digital-cert.sh

Autoagents (cualquier repo):

./scripts/git-sync-main.sh
./scripts/setup-autoagents-gh.sh    # una vez por máquina
./autoagents/autoagents-loop.sh 001
./autoagents/autoagents-loop.sh

Documentación relacionada

  • /opt/opencloud/docs/km0-opencloud-resumen.red — resumen del stack OpenCloud
  • /opt/opencloud/docs/km0-opencloud-repo-bootstrap.red — bootstrap del repositorio Git
  • /opt/km0-web/docs/km0-web-resumen-proyecto.red — resumen del proyecto web
  • docs/agent-loop.md — runbook del bucle de agentes (ambos repos)

Los secretos (.env, claves Redmine/GitHub, OAuth) no forman parte de esta entrada; viven solo en el servidor y en la documentación operativa privada del equipo.