docs/quick-start.md

Inicio rápido: instalación mínima de Welley

El camino más corto para tener una instancia de Welley en marcha en un solo host Linux, en cualquier nube o en tu propio hardware. Usa solo las opciones que la CLI realmente exige; todo lo demás se queda con su valor por defecto.

Lo que obtienes: la plataforma, el pipeline RAG, Nginx, Redis y un contenedor de PostgreSQL incluido, con un certificado de Let's Encrypt emitido durante la instalación. No incluye base de datos administrada, CDN, telemetría ni integración con Slack. Para eso, consulta las guías de AWS EC2 y DigitalOcean.

1. Requisitos previos

Un host Linux

  • Ubuntu 24.04 LTS (o una distribución actual comparable).
  • 2 vCPU, 4 GB de RAM y 60 GB de disco como punto de partida.
  • Una dirección IPv4 pública que no cambie.
  • Los puertos TCP de entrada 80 y 443 abiertos a internet, y el 22 abierto para ti. El puerto 80 hace falta durante la instalación para el desafío del certificado y después para la renovación semanal.
  • Un usuario que no sea root, con sudo. La guía ejecuta todo con ese usuario, al que más abajo llamamos <user>.

DNS

Dos registros, ambos apuntando a la IP pública del host:

Registro Finalidad
<domain> el sitio en sí
storage.<domain> archivos subidos y archivos estáticos, porque esta configuración no tiene CDN

Créalos antes de empezar: la CLI comprueba que ambos nombres apunten a este host y se detiene si no es así.

Registros DNS de correo

El dominio de tu dirección --smtp-from necesita registros de autenticación de correo. Sin ellos, Gmail, Outlook y otros proveedores grandes suelen descartar el correo dirigido a destinatarios que nunca han recibido nada de ti. Eso afecta a todas las invitaciones y confirmaciones de registro, y el correo ni siquiera llega a spam, aunque tu proveedor de SMTP lo marque como enviado.

Registro Tipo Valor
<mail-domain> TXT SPF, por ejemplo v=spf1 include:<provider> ~all. Toma el valor exacto de tu proveedor de SMTP
_dmarc.<mail-domain> TXT DMARC, por ejemplo v=DMARC1; p=none; rua=mailto:dmarc@<mail-domain>
<selector>._domainkey.<mail-domain> TXT o CNAME DKIM, que genera tu proveedor de SMTP cuando verificas el dominio

Un dominio solo puede tener un registro SPF. Si ya tiene uno, añade tu proveedor a ese en lugar de crear un segundo. create avisa si falta SPF o DMARC, pero no se detiene. No puede comprobar DKIM, porque el nombre del selector es propio de cada proveedor.

No te saltes DKIM. Muchos proveedores, entre ellos Amazon SES, envían por defecto con su propio dominio como remitente del sobre. Entonces SPF comprueba el dominio del proveedor y no el tuyo, así que no cuenta para DMARC, y solo DKIM puede hacer que DMARC se cumpla. Revisa el estado de DKIM en la consola de tu proveedor. En Amazon SES está en Verified identities, dentro de <mail-domain>, en la sección DKIM, y debe decir Successful. SES Easy DKIM publica tres registros CNAME con el nombre <token>._domainkey.<mail-domain>.

Credenciales SMTP

Host, usuario, contraseña y una dirección de remitente, de cualquier proveedor. La plataforma las necesita para la confirmación por correo y la recuperación de contraseña, y la CLI se niega a instalar sin ellas. Los valores por defecto suponen envío por STARTTLS en el puerto 587.

Una dirección de correo de administrador para el primer inicio de sesión y la recuperación de contraseña.

2. Instalar Docker

Sigue las instrucciones oficiales para tu distribución: Install Docker Engine. Después, permite que tu usuario se comunique con el daemon:

sudo usermod -aG docker <user>

Cierra sesión y vuelve a entrar, y luego comprueba que las dos partes estén listas:

docker ps
docker compose version

3. Descargar la CLI

Elige el valor de platform que corresponda a tu host:

linux/amd64

curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=linux/amd64" -o wlycli
chmod +x wlycli
./wlycli -v
  
linux/arm64

curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=linux/arm64" -o wlycli
chmod +x wlycli
./wlycli -v
  
darwin/arm64

curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=darwin/arm64" -o wlycli
chmod +x wlycli
./wlycli -v
  
darwin/amd64

curl -fL "https://appstore.allroads.social/v1/social.wellesley.wlycli/latest?channel=stable&platform=darwin/amd64" -o wlycli
chmod +x wlycli
./wlycli -v
  

4. Desplegar

./wlycli deploy create \
-d example.com \
-e admin@example.com \
--smtp-host smtp.example.com \
--smtp-user "$MAIL_USER" \
--smtp-password "$MAIL_PASSWORD" \
--smtp-from noreply@example.com

Estas seis opciones son todas las obligatorias. El comando comprueba el DNS, escribe los archivos del despliegue, emite el certificado con Certbot e inicia los contenedores; puede tardar varios minutos.

Valores por defecto que aceptas aquí:

Ajuste Valor por defecto
Directorio de instalación ~/.welley/<project>, donde <project> es el dominio con cada carácter no alfanumérico reemplazado por _ (así, example.com pasa a ser example_com)
Base de datos contenedor de PostgreSQL incluido, con los datos dentro del directorio de instalación
Certificados Let's Encrypt mediante Certbot, renovados automáticamente una vez por semana
Archivos subidos y archivos estáticos servidos desde https://storage.<domain>
Actualizaciones canal stable, con comprobación diaria, aplicadas sin tiempo de inactividad cuando es posible

5. Primer inicio de sesión

La contraseña de administrador generada se imprime en el registro de la plataforma:

docker logs example_com-platform-blue-1 | grep "Auto-init complete"

Abre https://<domain>, inicia sesión con el correo de administrador que pasaste con -e y cambia la contraseña enseguida. Trata el registro como un secreto hasta que lo hayas hecho.

6. Comprobar el resultado

docker ps

Deberías ver un contenedor para cada uno de estos: nginx, platform-blue, rag-pipeline-blue, postgres, redis, autoheal y snoopy, todos con el nombre <project>-<service>-1.

Si algo salió mal

create no se ejecutará por segunda vez mientras existan el directorio del proyecto o sus contenedores. Si los archivos están bien y solo algunos contenedores no se iniciaron, vuelve a crearlos sin perder nada:

./wlycli deploy restart -d example.com

Si hay que rehacer el despliegue en sí, elimínalo y empieza de nuevo. Esto borra la base de datos incluida junto con todo lo demás:

./wlycli deploy delete -d example.com --yes-please-delete-all-the-data

Otros documentos