libretime/README_SIMPLE.md

85 lines
3.4 KiB
Markdown

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.