IvyLabs Wiki
Idioma: Español

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

echo "$GITHUB_TOKEN" | docker login ghcr.io -u <tu usuario de GitHub> --password-stdin

Arrancar BostonIvy

  1. Crea tu configuración a partir del ejemplo:

    cd deploy
    cp .env.example .env
    
  2. Genera el secreto del servidor y pégalo en .env como BOSTONIVY_AUTH_SECRET:

    docker compose run --rm --no-deps bostonivy keygen
    
  3. Arranca todo:

    docker compose up -d
    
  4. Abre 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_registration y 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 .env de ejemplo pone BOSTONIVY_COOKIE_SECURE=false, que solo funciona en http://localhost. Antes de que otras personas usen el servidor, configura HTTPS (más abajo) y cámbialo a true.

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:

Copias de seguridad y actualizaciones

Haz copia de tres cosas:

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