libretime/README_SIMPLE.md

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 - Genera config.local.yml desde variables de entorno.
  • start.sh - Flujo recomendado: cargar .env, generar config, iniciar infra y aplicar migraciones.

Cómo usar

  1. Copiar .env.example a .env y editar las contraseñas si lo desea.

  2. Generar config.local.yml (opcional — start.sh lo hace):

cp .env.example .env
sh ./scripts/generate-config.sh ./config.local.yml
  1. 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:

  1. Edita .env y establece POSTGRES_PASSWORD con la contraseña que quieras usar para Postgres (ejemplo seguro).

  2. Regenera config.local.yml a 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
  1. Reinicia el servicio API para que recargue el archivo de configuración montado:
docker compose -f docker-compose.simple.yml restart api
  1. 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.