Saltar al contenido principal

Día a día (VPS)

En instalaciones de cliente el layout es el bundle: /opt/sis. El env real es /opt/sis/.env. /opt/sis/infra/.env no es el env file — son comentarios.

La única forma de levantar o recrear

# En el VPS, desde /opt/sis:
tools/ops/prod-up.sh <servicio> [servicio...]
# equivale a:
containers compose --env-file .env \
-f infra/containers-compose.yml -f infra/containers-compose.prod.yml \
up -d --force-recreate <servicio>

Los nombres son service-keys del compose (agents-host-operaciones, society-graph-ui), no siempre el container_name (society-agents-host-operaciones). Búscalos con:

grep -nB6 'container_name: <nombre>' infra/containers-compose.yml

Nunca

  • containers start <container> sobre uno caído: revive sin red orquestador de contenedores (Networks={}) → no resuelve pg, no publica puertos (502 público), y puede quedar «Up (healthy)» por dentro. Verificado 2026-07-13.
  • containers compose up sin --env-file .env o sin el overlay prod → password por defecto → InvalidPasswordError contra el pg-data real.
  • Config de canales en infra/ (se pierde en el próximo deploy). Va en el .env del profile.

El overlay prod hace pg_PASSWORD obligatoria (${pg_PASSWORD:?}). Sin él, manda el default del compose base.

Bind: SOCIETY_BIND_IP=0.0.0.0 + firewall containers-USER (sis-firewall.sh). Acceso legítimo: malla privada o proxy de entrada en el host. Un puerto SIS nuevo sin re-ejecutar el firewall queda abierto a internet. El patrón del firewall cubre ^(society|copilot|sis-).

proxy de entradafile: bind mount por inodo. mv / sed -i dejan al container pegado al fichero viejo y edge-proxy reload dice config is unchanged sin error. Escribir con truncado (cat nuevo > edge-proxyfile) o recrear. edge-proxy validate antes de instalar.

canal de mensajería (solo cliente de referencia): no recrear agents-host-operaciones a la ligera; la sesión no se reproduce. Skill actualiza-legaldesign y runbook 23 § canal de mensajería.

Health: tools/ops/prod-healthcheck.sh cada 5 min en ambos VPS.