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): ```sh cp .env.example .env sh ./scripts/generate-config.sh ./config.local.yml ``` 3) Ejecutar el flujo automático: ```sh 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: ```sh 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): ```sh cp .env.example .env # si aún no tienes .env sh ./scripts/generate-config.sh ./config.local.yml ``` 3. Reinicia el servicio API para que recargue el archivo de configuración montado: ```sh docker compose -f docker-compose.simple.yml restart api ``` 4. Prueba internamente en el contenedor API y desde Nginx: ```sh 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: ```sh 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.