DESPLIEGUE
Autoalojamiento
Despliega tu propia instancia en un VPS con Docker + Caddy.
El modo hospedado añade multi-tenant real, SSO (Ory Kratos/Hydra) y el catálogo completo de 59 herramientas conectadas del stack Docker — todo autoalojado, sin servicios de terceros de por medio.
Elegir proveedor
| Proveedor | Precio aprox./mes | Notas |
|---|---|---|
| Hetzner Cloud (CX22) | ~4,5 € | Mejor relación calidad/precio, datacenters en Alemania/Finlandia — recomendación por defecto. |
| Contabo | ~4-5 € | Más RAM/disco por el precio, rendimiento algo más variable. |
| DigitalOcean | ~6 $ | Muy bien documentado, buena opción si es tu primer VPS. |
| Oracle Cloud «Always Free» | Gratis | 4 núcleos ARM + 24GB RAM gratis para siempre, pero el alta de cuenta es errática. |
Para el uso de esta app (un solo backend Flask + SQLite, tráfico bajo) sobra la oferta más pequeña de cualquiera: 1 vCPU / 1-2GB RAM, Ubuntu 22.04 o 24.04 LTS.
Piezas del stack
| Pieza | Rol |
|---|---|
docker-compose.yml | Todos los servicios conectados — una imagen oficial por herramienta, sin forks propios. |
| Caddy | Único punto de entrada real desde internet, HTTPS automático (Let's Encrypt), proxy inverso a cada servicio por subdominio. |
| Ory Kratos / Hydra | Identidad (login/registro) y proveedor OAuth2 para el SSO de las herramientas que lo soportan, y para el conector MCP remoto. |
| Ollama | Modelo de embeddings local, usado por la búsqueda semántica (buscar_semantico) — ver Búsqueda semántica (RAG). |
serve.py | El proceso de Guilda Work en sí, fuera de Docker, en el mismo host — gestionado por systemd para que arranque solo y se reinicie si muere. |
Acceso y hardening básico
Usuario propio sin privilegios de root para el día a día (con sudo cuando haga falta), cortafuegos limitado a SSH/HTTP/HTTPS, y login SSH solo por clave (nunca por contraseña) una vez confirmado que tu clave ya está copiada al servidor.
adduser guilda
usermod -aG sudo guilda
ufw allow OpenSSH && ufw allow 80 && ufw allow 443 && ufw enable
# Copia tu clave ANTES de desactivar el login por contraseña:
ssh-copy-id -i ~/.ssh/id_ed25519.pub guilda@TU_IP
Hostname sin dominio propio
Sin comprar un dominio todavía, sslip.io da un hostname que resuelve automáticamente a la IP de tu servidor (203.0.113.10 → 203-0-113-10.sslip.io), suficiente para que Caddy pida un certificado real. Cuando compres un dominio, migrar es cuestión de apuntar sus registros DNS a la misma IP y actualizar los orígenes públicos (*_PUBLIC_ORIGIN) en tu .env — el resto del stack no cambia.
Guía completa de despliegue
El paso a paso detallado de cada pieza — variables de entorno completas, orden de arranque, registro de clientes OAuth2, backups, y una sección por cada una de las herramientas conectadas con su modelo de aislamiento documentado (y, cuando aplica, verificado en vivo contra un contenedor real antes de darlo por bueno) — vive en HOSTING.md, en la raíz del repositorio.
El modo hospedado también es lo que activa la búsqueda semántica y las notificaciones salientes — ninguna de las dos depende de un servicio nuevo que desplegar aparte:
Búsqueda semántica (RAG)
Encuentra por significado, no por texto exacto — necesita Ollama, ya listado arriba.
Webhooks
Notifica a una URL externa en tiempo real cuando pasa algo, firmado con HMAC.
Explorador de API interactivo
Endpoints filtrables generados en el navegador desde el OpenAPI real, sin configuración adicional.