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
206 lines
5.3 KiB
Markdown
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
|
|
``` |