libretime/README.easypanel.md

6.9 KiB

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:

# 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