feat(easypanel): agregar configuración inicial para LibreTime en EasyPanel
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
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
This commit is contained in:
parent
643504edc9
commit
62961f0db4
86
.env.easypanel.example
Normal file
86
.env.easypanel.example
Normal file
@ -0,0 +1,86 @@
|
||||
# Variables de entorno para LibreTime en EasyPanel
|
||||
# Copia este archivo como .env y ajusta los valores según tu configuración
|
||||
|
||||
# ======================
|
||||
# CONFIGURACIÓN GENERAL
|
||||
# ======================
|
||||
|
||||
# Versión de LibreTime a usar (latest para la más reciente)
|
||||
LIBRETIME_VERSION=latest
|
||||
|
||||
# URL pública de tu instalación (REQUERIDO - cambia por tu dominio)
|
||||
LIBRETIME_GENERAL_PUBLIC_URL=https://tu-dominio.com
|
||||
|
||||
# Ruta al archivo de configuración de LibreTime
|
||||
LIBRETIME_CONFIG_FILEPATH=./config.local.yml
|
||||
|
||||
# Activar modo debug (solo para desarrollo)
|
||||
LIBRETIME_DEBUG=false
|
||||
|
||||
# ======================
|
||||
# CONFIGURACIÓN DE PUERTOS PARA EASYPANEL
|
||||
# ======================
|
||||
|
||||
# Puerto para Nginx (interfaz web)
|
||||
NGINX_PORT=8080
|
||||
|
||||
# Puerto para Icecast (streaming)
|
||||
ICECAST_PORT=8000
|
||||
|
||||
# Puerto para Liquidsoap Harbor (input de audio)
|
||||
LIQUIDSOAP_HARBOR_PORT=8001
|
||||
|
||||
# Puerto para Liquidsoap Telnet (control)
|
||||
LIQUIDSOAP_TELNET_PORT=8002
|
||||
|
||||
# ======================
|
||||
# BASE DE DATOS POSTGRESQL
|
||||
# ======================
|
||||
|
||||
# Usuario de la base de datos
|
||||
POSTGRES_USER=libretime
|
||||
|
||||
# Contraseña de la base de datos (CAMBIA ESTO)
|
||||
POSTGRES_PASSWORD=tu_password_seguro_aqui
|
||||
|
||||
# Nombre de la base de datos
|
||||
POSTGRES_DB=libretime
|
||||
|
||||
# ======================
|
||||
# RABBITMQ (MESSAGE BROKER)
|
||||
# ======================
|
||||
|
||||
# Virtual host de RabbitMQ
|
||||
RABBITMQ_DEFAULT_VHOST=/libretime
|
||||
|
||||
# Usuario de RabbitMQ
|
||||
RABBITMQ_DEFAULT_USER=libretime
|
||||
|
||||
# Contraseña de RabbitMQ (CAMBIA ESTO)
|
||||
RABBITMQ_DEFAULT_PASS=tu_password_rabbitmq_aqui
|
||||
|
||||
# ======================
|
||||
# ICECAST (SERVIDOR DE STREAMING)
|
||||
# ======================
|
||||
|
||||
# Contraseña para fuentes de audio (CAMBIA ESTO)
|
||||
ICECAST_SOURCE_PASSWORD=tu_source_password_aqui
|
||||
|
||||
# Contraseña de administrador de Icecast (CAMBIA ESTO)
|
||||
ICECAST_ADMIN_PASSWORD=tu_admin_password_aqui
|
||||
|
||||
# Contraseña para relay de Icecast (CAMBIA ESTO)
|
||||
ICECAST_RELAY_PASSWORD=tu_relay_password_aqui
|
||||
|
||||
# Usuario administrador de Icecast
|
||||
ICECAST_ADMIN_USER=admin
|
||||
|
||||
# Hostname de Icecast (tu dominio sin http/https)
|
||||
ICECAST_HOSTNAME=tu-dominio.com
|
||||
|
||||
# ======================
|
||||
# CONFIGURACIÓN DE NGINX
|
||||
# ======================
|
||||
|
||||
# Número de procesos worker de Nginx
|
||||
NGINX_WORKER_PROCESSES=auto
|
||||
206
README.easypanel.md
Normal file
206
README.easypanel.md
Normal file
@ -0,0 +1,206 @@
|
||||
# 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
|
||||
```
|
||||
155
config.local.easypanel.yml
Normal file
155
config.local.easypanel.yml
Normal file
@ -0,0 +1,155 @@
|
||||
# Configuración de LibreTime para EasyPanel
|
||||
# Ver documentación completa: https://libretime.org/docs/admin-manual/setup/configuration/
|
||||
|
||||
general:
|
||||
# URL pública de tu instalación (REQUERIDO)
|
||||
# Cambia esto por tu dominio real
|
||||
public_url: https://tu-dominio.com
|
||||
|
||||
# Clave de autenticación interna de la API (REQUERIDO)
|
||||
# Genera una clave segura aleatoria
|
||||
api_key: "tu-api-key-segura-aqui-64-caracteres-minimo-para-seguridad-optima"
|
||||
|
||||
# Clave secreta de Django (REQUERIDO)
|
||||
# Genera una clave secura aleatoria
|
||||
secret_key: "tu-secret-key-muy-segura-aqui-minimo-50-caracteres-para-django"
|
||||
|
||||
# Lista de orígenes permitidos para CORS
|
||||
# El origen de public_url se incluye automáticamente
|
||||
allowed_cors_origins: []
|
||||
|
||||
# Zona horaria del servidor
|
||||
# Usa una clave válida de la base de datos IANA
|
||||
timezone: UTC
|
||||
|
||||
# Horas de cache anticipado para archivos de medios
|
||||
cache_ahead_hours: 1
|
||||
|
||||
# Adaptador de autenticación para el servicio legacy
|
||||
auth: local
|
||||
|
||||
storage:
|
||||
# Ruta del directorio de almacenamiento
|
||||
# Debe coincidir con el volumen montado en Docker
|
||||
path: /srv/libretime
|
||||
|
||||
database:
|
||||
# Hostname del servidor PostgreSQL
|
||||
# Debe coincidir con el nombre del servicio en docker-compose
|
||||
host: postgres
|
||||
|
||||
# Puerto del servidor PostgreSQL
|
||||
port: 5432
|
||||
|
||||
# Nombre de la base de datos
|
||||
name: libretime
|
||||
|
||||
# Usuario de la base de datos
|
||||
user: libretime
|
||||
|
||||
# Contraseña de la base de datos
|
||||
# Debe coincidir con POSTGRES_PASSWORD en las variables de entorno
|
||||
password: tu_password_seguro_aqui
|
||||
|
||||
rabbitmq:
|
||||
# Hostname del servidor RabbitMQ
|
||||
# Debe coincidir con el nombre del servicio en docker-compose
|
||||
host: rabbitmq
|
||||
|
||||
# Puerto del servidor RabbitMQ
|
||||
port: 5672
|
||||
|
||||
# Virtual host de RabbitMQ
|
||||
vhost: /libretime
|
||||
|
||||
# Usuario de RabbitMQ
|
||||
user: libretime
|
||||
|
||||
# Contraseña de RabbitMQ
|
||||
# Debe coincidir con RABBITMQ_DEFAULT_PASS en las variables de entorno
|
||||
password: tu_password_rabbitmq_aqui
|
||||
|
||||
# Configuración de Liquidsoap
|
||||
liquidsoap:
|
||||
# Hostname donde Liquidsoap escucha conexiones
|
||||
server_listen_address: liquidsoap
|
||||
|
||||
# Puerto para el servidor Liquidsoap
|
||||
server_listen_port: 1234
|
||||
|
||||
# Puerto para conexiones Harbor (input de audio)
|
||||
harbor_listen_port: 8001
|
||||
|
||||
# Configuración de streaming
|
||||
stream:
|
||||
inputs:
|
||||
# Configuración para input principal
|
||||
main:
|
||||
# Puerto donde Liquidsoap escucha el input principal
|
||||
port: 8001
|
||||
# Contraseña para el input (opcional)
|
||||
mount: main
|
||||
|
||||
# Configuración para input de DJ/Show
|
||||
show:
|
||||
port: 8002
|
||||
mount: show
|
||||
|
||||
outputs:
|
||||
# Configuración para output a Icecast
|
||||
icecast:
|
||||
- enabled: true
|
||||
# Hostname del servidor Icecast
|
||||
host: icecast
|
||||
port: 8000
|
||||
# Punto de montaje en Icecast
|
||||
mount: libretime
|
||||
# Contraseña de fuente (debe coincidir con ICECAST_SOURCE_PASSWORD)
|
||||
source_password: tu_source_password_aqui
|
||||
# Configuración de audio
|
||||
audio:
|
||||
format: mp3
|
||||
bitrate: 128
|
||||
# Metadatos
|
||||
name: "LibreTime Radio"
|
||||
description: "LibreTime Radio Stream"
|
||||
website: "https://tu-dominio.com"
|
||||
genre: "Various"
|
||||
|
||||
# Configuración de servicios
|
||||
services:
|
||||
# Configuración del analizador de archivos
|
||||
analyzer:
|
||||
# Tiempo de espera para análisis de archivos (segundos)
|
||||
timeout: 60
|
||||
|
||||
# Configuración del worker
|
||||
worker:
|
||||
# Número de procesos worker
|
||||
processes: 1
|
||||
|
||||
# Configuración del playout
|
||||
playout:
|
||||
# Configuración de Liquidsoap
|
||||
liquidsoap_host: liquidsoap
|
||||
liquidsoap_port: 1234
|
||||
|
||||
# Configuración de logging
|
||||
logging:
|
||||
# Nivel de logging (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
||||
level: INFO
|
||||
|
||||
# Configuración de logs para diferentes componentes
|
||||
loggers:
|
||||
api:
|
||||
level: INFO
|
||||
legacy:
|
||||
level: INFO
|
||||
playout:
|
||||
level: INFO
|
||||
liquidsoap:
|
||||
level: INFO
|
||||
worker:
|
||||
level: INFO
|
||||
analyzer:
|
||||
level: INFO
|
||||
176
docker-compose.easypanel.yml
Normal file
176
docker-compose.easypanel.yml
Normal file
@ -0,0 +1,176 @@
|
||||
# LibreTime Docker Compose para EasyPanel
|
||||
# Basado en el docker-compose oficial de LibreTime
|
||||
# Optimizado para despliegue en EasyPanel
|
||||
|
||||
services:
|
||||
# Base de datos PostgreSQL
|
||||
postgres:
|
||||
image: postgres:15
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
POSTGRES_USER: ${POSTGRES_USER:-libretime}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-libretime}
|
||||
POSTGRES_DB: ${POSTGRES_DB:-libretime}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-libretime}"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
# Message broker RabbitMQ
|
||||
rabbitmq:
|
||||
image: rabbitmq:3.13-alpine
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
RABBITMQ_DEFAULT_VHOST: ${RABBITMQ_DEFAULT_VHOST:-/libretime}
|
||||
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-libretime}
|
||||
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-libretime}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "rabbitmq-diagnostics check_port_connectivity"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
# API de LibreTime
|
||||
api:
|
||||
image: ghcr.io/libretime/libretime-api:${LIBRETIME_VERSION:-latest}
|
||||
restart: unless-stopped
|
||||
init: true
|
||||
ulimits:
|
||||
nofile: 1024
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
environment:
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: ${LIBRETIME_GENERAL_PUBLIC_URL:-http://localhost:8080}
|
||||
LIBRETIME_DEBUG: ${LIBRETIME_DEBUG:-false}
|
||||
volumes:
|
||||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.local.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_storage:/srv/libretime
|
||||
|
||||
# Aplicación Legacy de LibreTime
|
||||
legacy:
|
||||
image: ghcr.io/libretime/libretime-legacy:${LIBRETIME_VERSION:-latest}
|
||||
restart: unless-stopped
|
||||
init: true
|
||||
ulimits:
|
||||
nofile: 1024
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.local.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_storage:/srv/libretime
|
||||
|
||||
# Servidor web Nginx
|
||||
nginx:
|
||||
image: ghcr.io/libretime/libretime-nginx:${LIBRETIME_VERSION:-latest}
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- legacy
|
||||
- api
|
||||
ports:
|
||||
- "${NGINX_PORT:-8080}:8080"
|
||||
volumes:
|
||||
- libretime_storage:/srv/libretime:ro
|
||||
environment:
|
||||
- NGINX_WORKER_PROCESSES=${NGINX_WORKER_PROCESSES:-auto}
|
||||
|
||||
# Servidor de streaming Icecast
|
||||
icecast:
|
||||
image: ghcr.io/libretime/icecast:2.4.4
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "${ICECAST_PORT:-8000}:8000"
|
||||
environment:
|
||||
ICECAST_SOURCE_PASSWORD: ${ICECAST_SOURCE_PASSWORD:-hackme}
|
||||
ICECAST_ADMIN_PASSWORD: ${ICECAST_ADMIN_PASSWORD:-hackme}
|
||||
ICECAST_RELAY_PASSWORD: ${ICECAST_RELAY_PASSWORD:-hackme}
|
||||
ICECAST_ADMIN_USER: ${ICECAST_ADMIN_USER:-admin}
|
||||
ICECAST_HOSTNAME: ${ICECAST_HOSTNAME:-localhost}
|
||||
|
||||
# Servicio de playout
|
||||
playout:
|
||||
image: ghcr.io/libretime/libretime-playout:${LIBRETIME_VERSION:-latest}
|
||||
restart: unless-stopped
|
||||
init: true
|
||||
ulimits:
|
||||
nofile: 1024
|
||||
depends_on:
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.local.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_playout:/app
|
||||
environment:
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: ${LIBRETIME_GENERAL_PUBLIC_URL:-http://localhost:8080}
|
||||
|
||||
# Liquidsoap para streaming
|
||||
liquidsoap:
|
||||
image: ghcr.io/libretime/libretime-playout:${LIBRETIME_VERSION:-latest}
|
||||
command: /usr/local/bin/libretime-liquidsoap
|
||||
restart: unless-stopped
|
||||
init: true
|
||||
ulimits:
|
||||
nofile: 1024
|
||||
depends_on:
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
ports:
|
||||
- "${LIQUIDSOAP_HARBOR_PORT:-8001}:8001"
|
||||
- "${LIQUIDSOAP_TELNET_PORT:-8002}:8002"
|
||||
volumes:
|
||||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.local.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_playout:/app
|
||||
environment:
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: ${LIBRETIME_GENERAL_PUBLIC_URL:-http://localhost:8080}
|
||||
|
||||
# Worker para tareas en background
|
||||
worker:
|
||||
image: ghcr.io/libretime/libretime-worker:${LIBRETIME_VERSION:-latest}
|
||||
restart: unless-stopped
|
||||
init: true
|
||||
ulimits:
|
||||
nofile: 1024
|
||||
depends_on:
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.local.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_storage:/srv/libretime
|
||||
environment:
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: ${LIBRETIME_GENERAL_PUBLIC_URL:-http://localhost:8080}
|
||||
|
||||
# Analyzer para análisis de archivos de audio
|
||||
analyzer:
|
||||
image: ghcr.io/libretime/libretime-analyzer:${LIBRETIME_VERSION:-latest}
|
||||
restart: unless-stopped
|
||||
init: true
|
||||
ulimits:
|
||||
nofile: 1024
|
||||
depends_on:
|
||||
rabbitmq:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.local.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_storage:/srv/libretime
|
||||
|
||||
# Volúmenes persistentes
|
||||
volumes:
|
||||
postgres_data:
|
||||
driver: local
|
||||
libretime_storage:
|
||||
driver: local
|
||||
libretime_playout:
|
||||
driver: local
|
||||
|
||||
# Red personalizada (opcional para EasyPanel)
|
||||
networks:
|
||||
default:
|
||||
name: libretime_network
|
||||
Loading…
x
Reference in New Issue
Block a user