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

5.3 KiB

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:

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

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:

# 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

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

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

🔄 Comandos Útiles

# 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