libretime/README.easypanel.md
Cesar Jhoanny Mendivil Rubio 62961f0db4
Some checks are pending
Container / meta (analyzer) (push) Waiting to run
Container / meta (api) (push) Waiting to run
Container / meta (legacy) (push) Waiting to run
Container / meta (nginx) (push) Waiting to run
Container / meta (playout) (push) Waiting to run
Container / meta (worker) (push) Waiting to run
Container / build (push) Blocked by required conditions
Project / pre-commit (push) Waiting to run
Project / test-tools (push) Waiting to run
Release-Please / release-please (push) Waiting to run
feat(easypanel): agregar configuración inicial para LibreTime en EasyPanel
2025-09-30 18:22:03 -07:00

206 lines
5.3 KiB
Markdown

# 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
```