240 lines
6.9 KiB
Markdown
240 lines
6.9 KiB
Markdown
README - EasyPanel / Git repo setup
|
|
|
|
Este archivo describe cómo usar `docker-compose.easypanel.yml` desde EasyPanel.
|
|
|
|
Principio: No almacenar secretos en el repositorio. EasyPanel debe inyectar los valores
|
|
mediante variables de entorno o secrets en el formulario del panel.
|
|
|
|
Variables (mínimas recomendadas)
|
|
- POSTGRES_HOST (por defecto: postgres)
|
|
- POSTGRES_PORT (por defecto: 5432)
|
|
- POSTGRES_DB (por defecto: libretime)
|
|
- POSTGRES_USER (por defecto: libretime)
|
|
- POSTGRES_PASSWORD (REQUIRED)
|
|
- RABBITMQ_HOST (por defecto: rabbitmq)
|
|
- RABBITMQ_PORT (por defecto: 5672)
|
|
- RABBITMQ_DEFAULT_VHOST (por defecto: /libretime)
|
|
- RABBITMQ_DEFAULT_USER (por defecto: libretime)
|
|
- RABBITMQ_DEFAULT_PASS (REQUIRED)
|
|
- ICECAST_SOURCE_PASSWORD (opcional)
|
|
- ICECAST_ADMIN_PASSWORD (opcional)
|
|
- LIBRETIME_GENERAL_PUBLIC_URL (opcional)
|
|
- LIBRETIME_API_KEY (opcional)
|
|
|
|
Cómo funciona
|
|
- Al crear la aplicación en EasyPanel, configure estas variables como "Environment Variables" o "Secrets".
|
|
- El servicio `config-generator` ejecuta `tools/easypanel-config-generator.sh` y escribe
|
|
la configuración final en el volumen `libretime_config` en `/config/config.yml`.
|
|
- Los contenedores `api`, `legacy`, `playout`, `worker` y `analyzer` montan ese volumen
|
|
en `/etc/libretime` y leen la configuración desde `/etc/libretime/config.yml`.
|
|
|
|
Notas
|
|
- Asegúrese de que las variables sensibles (POSTGRES_PASSWORD, RABBITMQ_DEFAULT_PASS) se guarden
|
|
como secretos en EasyPanel y no como variables visibles en el repo.
|
|
- Si desea personalizar más opciones, modifique `tools/easypanel-config-generator.sh`.
|
|
# LibreTime para EasyPanel
|
|
|
|
Esta guía te ayudará a desplegar LibreTime en EasyPanel usando Docker Compose.
|
|
|
|
## 🚀 Instalación Rápida
|
|
|
|
### 1. Preparar archivos
|
|
|
|
1. Copia `docker-compose.easypanel.yml` a tu proyecto en EasyPanel
|
|
2. Copia `.env.easypanel.example` como `.env` y configura las variables
|
|
3. Copia `config.local.easypanel.yml` como `config.local.yml` y ajusta la configuración
|
|
|
|
### 2. Configurar variables de entorno
|
|
|
|
Edita el archivo `.env` con tus valores:
|
|
|
|
```bash
|
|
# URL pública (REQUERIDO)
|
|
LIBRETIME_GENERAL_PUBLIC_URL=https://tu-dominio.com
|
|
|
|
# Contraseñas (CAMBIA ESTOS VALORES)
|
|
POSTGRES_PASSWORD=tu_password_muy_seguro
|
|
RABBITMQ_DEFAULT_PASS=otra_password_segura
|
|
ICECAST_SOURCE_PASSWORD=password_para_fuentes
|
|
ICECAST_ADMIN_PASSWORD=password_admin_icecast
|
|
|
|
# Configuración de dominio
|
|
ICECAST_HOSTNAME=tu-dominio.com
|
|
```
|
|
|
|
### 3. Configurar LibreTime
|
|
|
|
Edita `config.local.yml`:
|
|
|
|
```yaml
|
|
general:
|
|
public_url: https://tu-dominio.com
|
|
api_key: "genera-una-clave-api-segura-de-al-menos-64-caracteres"
|
|
secret_key: "genera-una-clave-secreta-django-de-al-menos-50-caracteres"
|
|
|
|
database:
|
|
password: tu_password_muy_seguro # Debe coincidir con .env
|
|
|
|
rabbitmq:
|
|
password: otra_password_segura # Debe coincidir con .env
|
|
```
|
|
|
|
### 4. Generar claves seguras
|
|
|
|
Puedes generar claves seguras usando:
|
|
|
|
```bash
|
|
# Para API key (64 caracteres)
|
|
openssl rand -hex 32
|
|
|
|
# Para Django secret key (50 caracteres)
|
|
openssl rand -base64 50
|
|
```
|
|
|
|
## 📋 Configuración en EasyPanel
|
|
|
|
### Servicios y Puertos
|
|
|
|
| Servicio | Puerto | Descripción |
|
|
|----------|--------|-------------|
|
|
| nginx | 8080 | Interfaz web principal |
|
|
| icecast | 8000 | Servidor de streaming |
|
|
| liquidsoap | 8001 | Input de audio (Harbor) |
|
|
| liquidsoap | 8002 | Control Telnet |
|
|
|
|
### Volúmenes Persistentes
|
|
|
|
Los siguientes volúmenes necesitan ser persistentes:
|
|
|
|
- `postgres_data`: Datos de la base de datos PostgreSQL
|
|
- `libretime_storage`: Archivos de audio y configuración
|
|
- `libretime_playout`: Cache y archivos temporales de playout
|
|
|
|
### Configuración de Red
|
|
|
|
En EasyPanel, asegúrate de:
|
|
|
|
1. **Exponer puertos**: 8080 (web) y 8000 (streaming)
|
|
2. **Configurar dominio**: Apuntar tu dominio al puerto 8080
|
|
3. **SSL/TLS**: Activar HTTPS en EasyPanel para el puerto 8080
|
|
|
|
## 🔧 Configuración Avanzada
|
|
|
|
### Variables de Entorno Opcionales
|
|
|
|
```bash
|
|
# Versión específica de LibreTime
|
|
LIBRETIME_VERSION=3.0.2
|
|
|
|
# Configuración de Nginx
|
|
NGINX_WORKER_PROCESSES=2
|
|
|
|
# Modo debug (solo para desarrollo)
|
|
LIBRETIME_DEBUG=true
|
|
```
|
|
|
|
### Healthchecks
|
|
|
|
El docker-compose incluye healthchecks para:
|
|
- PostgreSQL: Verifica conexión a la base de datos
|
|
- RabbitMQ: Verifica conectividad del puerto
|
|
- Dependencias: Los servicios esperan a que las dependencias estén saludables
|
|
|
|
### Configuración de Streaming
|
|
|
|
Para configurar streams adicionales, edita `config.local.yml`:
|
|
|
|
```yaml
|
|
stream:
|
|
outputs:
|
|
icecast:
|
|
- enabled: true
|
|
host: icecast
|
|
port: 8000
|
|
mount: main
|
|
source_password: tu_source_password_aqui
|
|
audio:
|
|
format: mp3
|
|
bitrate: 128
|
|
- enabled: true
|
|
host: icecast
|
|
port: 8000
|
|
mount: hq
|
|
source_password: tu_source_password_aqui
|
|
audio:
|
|
format: mp3
|
|
bitrate: 320
|
|
```
|
|
|
|
## 🔐 Seguridad
|
|
|
|
### Contraseñas Seguras
|
|
|
|
- Usa contraseñas únicas de al menos 16 caracteres
|
|
- Combina letras, números y símbolos
|
|
- Nunca uses las contraseñas por defecto en producción
|
|
|
|
### Firewall
|
|
|
|
- Solo expón los puertos necesarios (8080, 8000)
|
|
- Considera usar un firewall adicional
|
|
- Configura rate limiting si es posible
|
|
|
|
### Actualizaciones
|
|
|
|
- Mantén LibreTime actualizado: `LIBRETIME_VERSION=latest`
|
|
- Revisa regularmente las actualizaciones de seguridad
|
|
- Haz backups regulares de los volúmenes
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Servicios no inician
|
|
|
|
1. Verifica las variables de entorno en `.env`
|
|
2. Comprueba los logs: `docker-compose logs [servicio]`
|
|
3. Verifica que los volúmenes tengan permisos correctos
|
|
|
|
### No se puede acceder a la interfaz web
|
|
|
|
1. Verifica que el puerto 8080 esté expuesto
|
|
2. Comprueba la configuración de dominio en EasyPanel
|
|
3. Verifica `LIBRETIME_GENERAL_PUBLIC_URL` en `.env`
|
|
|
|
### Problemas de streaming
|
|
|
|
1. Verifica las contraseñas de Icecast
|
|
2. Comprueba que el puerto 8000 esté accesible
|
|
3. Verifica la configuración de `stream.outputs` en `config.local.yml`
|
|
|
|
### Base de datos no conecta
|
|
|
|
1. Verifica `POSTGRES_PASSWORD` en `.env`
|
|
2. Comprueba que coincida con `database.password` en `config.local.yml`
|
|
3. Verifica que el volumen `postgres_data` tenga permisos correctos
|
|
|
|
## 📚 Enlaces Útiles
|
|
|
|
- [Documentación oficial de LibreTime](https://libretime.org/docs/)
|
|
- [Configuración avanzada](https://libretime.org/docs/admin-manual/setup/configuration/)
|
|
- [GitHub de LibreTime](https://github.com/libretime/libretime)
|
|
- [Documentación de EasyPanel](https://easypanel.io/docs)
|
|
|
|
## 🔄 Comandos Útiles
|
|
|
|
```bash
|
|
# Ver logs de todos los servicios
|
|
docker-compose -f docker-compose.easypanel.yml logs
|
|
|
|
# Ver logs de un servicio específico
|
|
docker-compose -f docker-compose.easypanel.yml logs nginx
|
|
|
|
# Reiniciar un servicio
|
|
docker-compose -f docker-compose.easypanel.yml restart api
|
|
|
|
# Actualizar servicios
|
|
docker-compose -f docker-compose.easypanel.yml pull
|
|
docker-compose -f docker-compose.easypanel.yml up -d
|
|
|
|
# Backup de la base de datos
|
|
docker-compose -f docker-compose.easypanel.yml exec postgres pg_dump -U libretime libretime > backup.sql
|
|
``` |