Desplegar con Docker Compose
Una sola máquina ejecuta todo BostonIvy: PostgreSQL, el servidor y BostonIvy Web, descritos en deploy/compose.yaml del repositorio bostonivy-os. Es la forma más rápida de empezar y basta para una familia o un equipo pequeño.
Antes de empezar
- Docker con Compose v2 (
docker compose versionmuestra v2.x). - Los archivos de despliegue: la carpeta
deployde bostonivy-os, concompose.yaml,https.yamly.env.example. - Acceso a las imágenes. Son paquetes privados en GitHub Container Registry. Inicia sesión una vez con un token de GitHub que tenga el permiso
read:packages:
echo "$GITHUB_TOKEN" | docker login ghcr.io -u <tu usuario de GitHub> --password-stdin
Arrancar BostonIvy
Crea tu configuración a partir del ejemplo:
cd deploy cp .env.example .envGenera el secreto del servidor y pégalo en
.envcomoBOSTONIVY_AUTH_SECRET:docker compose run --rm --no-deps bostonivy keygenArranca todo:
docker compose up -dAbre http://localhost:8080 y crea una cuenta. En una base de datos nueva, la primera cuenta pasa a ser la de administrador. Que otras personas puedan registrarse después depende de
auth.open_registrationy del ajuste del panel de administración.
docker compose ps debería mostrar los tres servicios como healthy. El servidor migra la base de datos cada vez que arranca, así que no hay que ejecutar nada más.
El
.envde ejemplo poneBOSTONIVY_COOKIE_SECURE=false, que solo funciona enhttp://localhost. Antes de que otras personas usen el servidor, configura HTTPS (más abajo) y cámbialo atrue.
Configuración
Toda la configuración está en deploy/.env:
| Variable | Significado |
|---|---|
BOSTONIVY_AUTH_SECRET |
Obligatoria. Todas las claves de firma y cifrado se derivan de ella. Si la pierdes, todo el mundo tendrá que volver a iniciar sesión, y los secretos TOTP y de webhooks guardados cifrados ya no se podrán descifrar. Haz una copia de seguridad |
BOSTONIVY_URL |
La dirección que abren las personas. La usan los enlaces de los correos y los enlaces compartidos |
BOSTONIVY_PORT |
El puerto en esta máquina; 8080 por defecto |
BOSTONIVY_COOKIE_SECURE |
true en producción, lo que requiere HTTPS. false solo para probar en http://localhost; si no, la sesión se pierde al recargar la página |
BOSTONIVY_SMTP_URL, BOSTONIVY_MAIL_FROM |
Correo. Por ejemplo smtps://user:password@smtp.example.com y BostonIvy <noreply@example.com>. Vacío no envía correo; log escribe los correos en el registro del servidor, útil para una prueba |
POSTGRES_PASSWORD |
La contraseña de la base de datos |
BOSTONIVY_VERSION |
La etiqueta de la imagen; latest sigue la versión más reciente |
BOSTONIVY_SITE |
La dirección del sitio de Caddy; ver HTTPS más abajo |
Cualquier otro ajuste del servidor (límites de peticiones, Redis, webhooks, almacenamiento de objetos, el plazo de gracia para borrar una cuenta, etc.) se puede definir con una variable de entorno llamada BOSTONIVY_<SECCIÓN>__<CLAVE>, por ejemplo BOSTONIVY_STORAGE__KIND=s3. Añádela en bostonivy.environment dentro de compose.yaml. bostonivy.example.toml en bostonivy-os las enumera todas.
HTTPS
Elige una opción:
Deja que Caddy obtenga un certificado. Apunta tu dominio a esta máquina y pon esto en
.env:BOSTONIVY_SITE=tasks.example.com BOSTONIVY_URL=https://tasks.example.com BOSTONIVY_COOKIE_SECURE=truey arranca con el archivo adicional de HTTPS, que abre los puertos 80 y 443:
docker compose -f compose.yaml -f https.yaml up -dCaddy solicita y renueva el certificado por su cuenta y lo guarda en el volumen
caddy.Detrás de un proxy inverso que ya tengas. Deja
BOSTONIVY_SITE=:80, apunta el proxy aBOSTONIVY_PORTy asegúrate de que reenvía las conexiones WebSocket de/api/v1/realtime, que llevan las actualizaciones en tiempo real.
Copias de seguridad y actualizaciones
Haz copia de tres cosas:
La base de datos:
docker compose exec postgres pg_dump -U bostonivy bostonivy > backup.sqlAdjuntos y avatares: el volumen
files(o tu bucket, si los pasaste a S3).El secreto:
BOSTONIVY_AUTH_SECRETen.env.
Para actualizar, descarga las imágenes nuevas y reinicia:
docker compose pull && docker compose up -d
La nueva versión migra la base de datos al arrancar. Las migraciones solo añaden y nunca eliminan, así que con una copia de seguridad puedes volver a la versión anterior.
Línea de comandos
docker compose exec bostonivy bostonivy admin promote <usuario> # hacer administrador a alguien
echo "nueva contraseña" | docker compose exec -T bostonivy bostonivy admin set-password <usuario>
docker compose exec bostonivy bostonivy health # comprobación de estado
Construir las imágenes tú mismo
Clona bostonivy-web junto a bostonivy-os, o indica su ruta con BOSTONIVY_WEB_SOURCE en .env. La aplicación web usa el paquete de diseño privado de BostonIvy, así que la compilación necesita un token que pueda leer los repositorios privados de IvyLabsApp. Solo se usa como secreto de compilación y nunca acaba dentro de la imagen:
cd deploy
GITHUB_TOKEN=$(gh auth token) docker compose build
docker compose up -d