3.4 KiB
LibreTime - Instalación Docker sencilla
Objetivo
Proveer un conjunto mínimo de ficheros para que un usuario final pueda levantar LibreTime con Docker Compose sin tocar demasiadas cosas.
Archivos añadidos
docker-compose.simple.yml- Compose reducido y comentado..env.example- Ejemplo de variables de entorno.scripts/generate-config.sh- Generaconfig.local.ymldesde variables de entorno.start.sh- Flujo recomendado: cargar .env, generar config, iniciar infra y aplicar migraciones.
Cómo usar
-
Copiar
.env.examplea.envy editar las contraseñas si lo desea. -
Generar
config.local.yml(opcional —start.shlo hace):
cp .env.example .env
sh ./scripts/generate-config.sh ./config.local.yml
- Ejecutar el flujo automático:
sh ./start.sh
Esto levantará Postgres y RabbitMQ, aplicará las migraciones (necesario la primera vez) y luego arrancará el resto de servicios. El sitio estará disponible en http://localhost:8080 por defecto.
Notas y recomendaciones
- Para producción cambie todas las contraseñas por valores fuertes en
.env. - Si ya existe un volumen de Postgres creado con otra contraseña, borre el volumen antes de usar las nuevas credenciales:
docker compose -f docker-compose.simple.yml down -v. - Puede ejecutar migraciones manualmente con:
docker compose -f docker-compose.simple.yml run --rm migrate
Corregir desajuste de contraseña (opción A)
Si al hacer peticiones la API devuelve 500 por errores de conexión a la base de datos, normalmente significa que la contraseña de Postgres en .env y la que está escrita en config.local.yml no coinciden. Para arreglarlo manualmente:
-
Edita
.envy establecePOSTGRES_PASSWORDcon la contraseña que quieras usar para Postgres (ejemplo seguro). -
Regenera
config.local.ymla partir de.env(esto sincroniza la contraseña usada por la app con la de Postgres):
cp .env.example .env # si aún no tienes .env
sh ./scripts/generate-config.sh ./config.local.yml
- Reinicia el servicio API para que recargue el archivo de configuración montado:
docker compose -f docker-compose.simple.yml restart api
- Prueba internamente en el contenedor API y desde Nginx:
docker exec -it $(docker compose -f docker-compose.simple.yml ps -q api) \
curl -sS http://127.0.0.1:9001/api/v2/info
curl -sS http://localhost:8080/api/v2/info
Si ambas llamadas devuelven HTTP 200 con JSON (por ejemplo {"station_name":"LibreTime"}) entonces el desajuste está resuelto.
Si persiste el problema, considera eliminar el volumen de Postgres (perderás datos de desarrollo) y volver a inicializar:
docker compose -f docker-compose.simple.yml down -v
sh ./start.sh
Nota sobre start.sh
start.sh genera config.local.yml desde las variables de entorno y, si detecta que POSTGRES_PASSWORD está definido en .env, actualizará automáticamente la entrada database.password dentro de config.local.yml para que coincida. Esto evita desajustes entre la contraseña usada por el contenedor Postgres y la que usa la aplicación. Si prefieres no sobrescribir config.local.yml, edita manualmente .env y/o config.local.yml antes de ejecutar start.sh.
Antes de sobrescribir config.local.yml, start.sh crea una copia de seguridad con prefijo config.local.yml.bak.YYYYMMDDHHMMSS en la raíz del proyecto.