Automatia BCN
ABS
setupsetup-guide

ABS: Guía de Instalación

De `git clone` a un ABS en ejecución en ~5 minutos.

Esta guía le acompaña en el despliegue de su propia instancia de ABS con Docker Compose. El repositorio en github.com/automatiabcn/abs es público, sin token de GHCR, sin archivos adjuntos. Su correo de bienvenida contiene su ABS_LICENSE_KEY; ése es el único secreto que necesita.

1. Prepare su servidor

ABS se ejecuta en cualquier servidor Linux capaz de correr Docker. Recomendamos Ubuntu 22.04+, 2 vCPU, 4 GB de RAM y 40 GB de disco, un Hetzner CX22 (€3,79/mes) encaja perfectamente. Apunte un registro DNS A (p.ej. abs.sudominio.com) a la IP pública del servidor, abra los puertos 22/80/443 e instale Docker. Caddy (incluido en nuestro compose) gestionará TLS automáticamente cuando el DNS resuelva.
# Any Linux host with Docker. Hetzner CX22 (€3.79/mo) works great.
# Point an A record at the server's public IP first.
sudo ufw allow 22/tcp && sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw enable
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER   # then: log out, log back in
docker run hello-world

2. Clone el repositorio público

ABS vive en un repositorio público de GitHub, por lo que obtener el código es un solo comando. Haga git clone en el directorio de su elección y copie la plantilla de variables de entorno. Todo lo necesario, docker-compose.yml, Caddyfile y .env.example, viene en el repositorio.
git clone https://github.com/automatiabcn/abs.git
cd abs
cp .env.example .env

3. Complete el archivo .env

Abra .env y establezca ABS_LICENSE_KEY (de su correo de bienvenida), ABS_PUBLIC_HOSTNAME (el dominio que apuntó al servidor) y ABS_ACME_EMAIL (lo usa Let's Encrypt). Las claves de API de proveedores son opcionales, pegue solo las que planee usar (Anthropic, OpenAI, Groq, Cohere). También puede dejarlas vacías y añadirlas más tarde desde el panel de administración.
nano .env
# Required:
#   ABS_LICENSE_KEY=...        (from your welcome email, sent within 24h)
#   ABS_PUBLIC_HOSTNAME=abs.yourdomain.com
#   ABS_ACME_EMAIL=you@yourdomain.com
# Optional provider keys (only the ones you plan to use):
#   ANTHROPIC_API_KEY=sk-ant-...
#   OPENAI_API_KEY=sk-...
#   GROQ_API_KEY=gsk_...
#   COHERE_API_KEY=...

4. Levante ABS

SetupGuide.section4Body
docker compose up -d
docker compose ps          # backend should be "healthy" in ~30s
curl https://abs.yourdomain.com/healthz   # → {"ok":true}

5. Asistente de configuración inicial

Abra https://abs.sudominio.com/setup en su navegador. El asistente le guía por correo + contraseña del administrador, una clave de bóveda opcional para cifrado en reposo, la confirmación de las claves de proveedor que puso en .env, y una validación final del JWT de licencia contra nuestro worker de activación. Listo, empiece a chatear con su ABS privado.
# Open in your browser:
# https://abs.yourdomain.com/setup
# Wizard:
#   1. Admin email + password
#   2. Optional vault key
#   3. Confirm provider keys (already in .env)
#   4. License JWT validation

Solución de problemas

La mayoría de los inconvenientes en la instalación se reducen a DNS, el firewall o un error tipográfico en su clave de licencia. Aquí están las soluciones más rápidas para los problemas más comunes.

Falla la activación de la licencia

Si docker compose logs backend muestra license invalid o license unreachable, revise ABS_LICENSE_KEY en .env (sin comillas, sin espacios) y confirme que el backend puede alcanzar nuestro worker de activación. Como el repo es público, un git pull reciente también recoge cualquier corrección del backend.
cd abs && git pull origin main
# License activation fails?
curl -I https://abs-license-activation.automatiaabs.workers.dev
docker compose logs backend | tail -50 | grep -i license

El desfase del reloj rechaza la licencia

La validación del JWT es estricta con el tiempo. Si el reloj del host tiene más de ~30 segundos de desfase, la activación fallará. Active NTP con sudo timedatectl set-ntp true y vuelva a ejecutar docker compose up -d.
sudo timedatectl set-ntp true
sudo timedatectl status        # ensure clock is in sync
curl -I https://abs-license-activation.automatiaabs.workers.dev

Caddy no obtiene certificado

Si https://abs.sudominio.com no carga, compruebe que su registro A de DNS apunta al servidor (dig +short abs.sudominio.com) y que los puertos 80 y 443 están abiertos en ufw. Los logs de Caddy (docker compose logs caddy) le dirán exactamente qué rechazó Let's Encrypt.
dig +short abs.yourdomain.com
sudo ufw status
docker compose logs caddy | tail -50

El backend se queda sin memoria

En un host de 2 GB puede llegar a OOM en el primer arranque cuando los modelos se calientan. Revise docker stats y free -h. La solución es subir el VPS a 4 GB (predeterminado del CX22) o reducir la lista de modelos locales en el panel de administración a los proveedores que use.
docker stats --no-stream
docker compose logs backend | grep -i 'oom\|memory'
# free -h to check host memory

La página de inicio no carga

Si la landing de marketing devuelve 502, la causa más común es una ABS_PUBLIC_URL ausente en .env (debe coincidir con https://abs.sudominio.com). Establézcala y luego ejecute docker compose restart landing.
docker compose logs landing | tail -50
# In .env, ensure:
# ABS_PUBLIC_URL=https://abs.yourdomain.com
docker compose restart landing

¿Atascado? Le ayudamos.

Responda a su correo de bienvenida o escriba a info@automatiabcn.com. El tiempo de respuesta habitual es inferior a 4 horas en horario laboral europeo.

ABS
Guía de instalación de ABS | Automatia BCN