Como instalar un servidor para emitir radio en archlinux
Cómo crear un servidor Icecast en Arch Linux (actualizado 2025)
Icecast es un servidor de streaming (audio/vídeo) que permite crear radios online y otros servicios de streaming usando formatos como MP3, Ogg Vorbis, Opus, etc.
En este tutorial vas a:
-
Instalar Icecast desde los repos oficiales de Arch.
-
Configurar lo básico del fichero
/etc/icecast.xml. -
Ajustar permisos para que el servicio arranque sin errores.
-
Iniciar el servicio con systemd y probar la interfaz web.
Conectar un cliente de emisión como BUTT o Liquidsoap.
Prerrequisitos
-
Arch Linux instalado y actualizado.
-
Usuario con permisos
sudo. -
Conexión a Internet.
Puertos abiertos en el firewall (por defecto Icecast escucha en el 8000/TCP).
Paso 0: Actualizar el sistema
No es obligatorio, pero sí recomendable:
sudo pacman -Syu Paso 1: Instalar Icecast
Icecast está en los repos oficiales de Arch Linux:
sudo pacman -S icecast
El paquete instala:
-
El binario
icecast. -
El fichero de configuración principal en
/etc/icecast.xml. Ficheros web y plantillas en
/usr/share/icecast/.
Paso 2: Ajustar la configuración básica (/etc/icecast.xml)
Edita el fichero principal:
sudo nano /etc/icecast.xml
2.1. Límites y datos básicos del servidor
Comprueba/ajusta estas secciones:
<limits>
<clients>100</clients> <!-- Máx. oyentes -->
<sources>4</sources> <!-- Máx. fuentes simultáneas -->
<queue-size>524288</queue-size>
<burst-size>65535</burst-size>
</limits>
<hostname>radio.midominio.com</hostname>
<location>Mi ciudad</location>
<admin>tu-correo@ejemplo.com</admin>
2.2. Socket de escucha (puerto)
Por defecto, Icecast escucha en el puerto 8000:
<listen-socket>
<port>8000</port>
<!-- <bind-address>0.0.0.0</bind-address> para todas las interfaces -->
</listen-socket>
-
Si quieres limitar a una IP concreta, descomenta y ajusta
<bind-address>. -
Deja el
porten 8000 mientras pruebas. Más adelante puedes usar un reverse proxy (Nginx/Caddy) para exponerlo en 80/443, en lugar de mover Icecast a esos puertos directamente.
2.3. Usuarios, grupo y permisos
En muchas instalaciones de Arch, el icecast.xml viene con:
<user>nobody</user>
<group>nobody</group>
y las rutas de logs apuntan a /var/log/icecast.
Asegúrate de que el directorio existe y tiene permisos para ese usuario:
sudo mkdir -p /var/log/icecast
sudo chown nobody:nobody /var/log/icecast
Importante:
No actives
<changeowner>dentro de<security>si vas a usar el servicio systemd; systemd ya arranca el proceso con el usuario configurado y puede entrar en conflicto.
2.4. Autenticación (ADMIN / SOURCE / RELAY)
La sintaxis actual recomendada para contraseñas es la de Icecast 2.4:
<authentication>
<!-- Password por defecto para todas las fuentes (user = "source") -->
<source-password>una_password_fuerte_para_fuentes</source-password>
<!-- Usuario y password para relays -->
<relay-user>relay</relay-user>
<relay-password>otra_password_fuerte_para_relays</relay-password>
<!-- Acceso a la interfaz y administración -->
<admin-user>admin</admin-user>
<admin-password>una_password_admin_muy_fuerte</admin-password>
</authentication>
-
No uses los valores de ejemplo
hackme, cámbialos siempre. -
El usuario por defecto para las fuentes es
sourcey usará lasource-password, salvo que definas credenciales específicas en un<mount>.
2.5. Montaje principal /stream
Para un uso típico (una sola radio), basta con definir un mountpoint simple:
<mount>
<mount-name>/stream</mount-name>
<!-- Credenciales específicas opcionales para este mount -->
<username>source</username>
<password>password_específica_para_este_mount</password>
<!-- Límite de oyentes en este mount -->
<max-listeners>100</max-listeners>
<!-- Metadatos que verán los oyentes -->
<public>1</public>
<stream-name>Mi Radio en Icecast</stream-name>
<stream-description>Lo mejor de mi música</stream-description>
<genre>variety</genre>
</mount>
-
mount-nameserá la URL del stream:http://TU_SERVIDOR:8000/stream. Aquí ya no se usa
<file>como en tu ejemplo original; lo habitual hoy en día es que el audio venga de un cliente como BUTT, Liquidsoap, etc.
Paso 3: Comprobar la sintaxis del XML (opcional pero muy recomendable)
Un error de cierre de etiqueta puede impedir que el servicio arranque. Puedes validar el XML con xmllint (paquete libxml2):
sudo pacman -S libxml2
sudo xmllint /etc/icecast.xml
Si no muestra errores, la sintaxis es correcta.
Paso 4: Iniciar y habilitar el servicio de Icecast
En Arch, el servicio se llama simplemente icecast:
# Iniciar ahora
sudo systemctl start icecast
# Habilitar al arranque
sudo systemctl enable icecast
Puedes comprobar el estado con:
systemctl status icecast
Deberías ver el servicio como active (running) sin errores de permisos en los logs.
Paso 5: Abrir el puerto en el firewall (si aplica)
Si usas ufw:
sudo ufw allow 8000/tcp
sudo ufw reload
Si usas nftables o iptables, crea una regla equivalente para permitir conexiones entrantes al puerto 8000/TCP.
Paso 6: Probar la interfaz web
Desde el propio servidor:
-
Abre un navegador y entra en:
http://localhost:8000
Desde otro equipo de la red:
-
http://IP_DEL_SERVIDOR:8000
Deberías ver la página de estado de Icecast. Si accedes a /admin se te pedirá el usuario/contraseña definidos en <admin-user> y <admin-password>.
Paso 7: Transmitir contenido a Icecast
Icecast no genera el audio, solo lo sirve. Necesitas un cliente de emisión (source client) que se conecte al servidor.
7.1. Emisión sencilla con BUTT (Broadcast Using This Tool)
BUTT es un cliente gráfico muy fácil de usar, compatible con Icecast y Shoutcast.
En Arch lo más sencillo hoy en día es instalarlo como snap (si ya usas snaps) o desde AUR/paquete nativo si lo prefieres:
# Si ya tienes snapd funcionando:
sudo snap install butt
sudo snap connect butt:audio-record
En la configuración de BUTT:
-
Server type: Icecast
-
Address: IP o dominio de tu servidor (p.ej.
radio.midominio.com) -
Port: 8000 (o el que pusiste en
<listen-socket>). -
Password:
-
Si usas las credenciales globales:
source-passwordde<authentication>. -
Si definiste
<username>/<password>en el<mount>, usa esas.
-
-
Mountpoint:
/stream
Pulsa Connect y deberías ver el stream activo en la página web de Icecast.
7.2. Emisión avanzada con Liquidsoap (radio automatizada)
Para montajes más complejos (auto-DJ, playlists, jingles, varios formatos simultáneos…), Liquidsoap es la opción típica.
La idea general es:
-
Instalar OPAM.
-
Instalar Liquidsoap con OPAM.
-
Crear un script sencillo, por ejemplo:
# Radio básica: reproduce una carpeta de música y la envía a Icecast default = playlist(mode="random", "/ruta/a/tus/mp3") output.icecast( %mp3(bitrate=128), host = "radio.midominio.com", port = 8000, password = "password_específica_para_este_mount", mount = "stream", name = "Mi Radio con Liquidsoap", default ) Ejecutar el script y comprobar en la interfaz web que el mount
/streamaparece con oyentes.
Paso 8 (Opcional): HTTPS y dominio público
Para producción es buena idea:
-
Poner Icecast detrás de Nginx/Caddy/Apache como reverse proxy en:
-
https://radio.midominio.com/stream
-
-
Conseguir certificados gratuitos con Let’s Encrypt.
-
Mantener Icecast escuchando solo en
localhost:8000y exponer al público únicamente el proxy HTTPS.
Esto te evita complicarte moviendo Icecast a los puertos 80/443 directamente y mejora la seguridad.
Resumen de mejoras frente al tutorial original
-
Sintaxis de
<authentication>actualizada a la usada por Icecast 2.4 (source-password,admin-user, etc.), en lugar de<admin><username>…. -
Eliminado el uso de
<file>en<mount>, que no es el flujo típico hoy (se usa un cliente externo para emitir). -
Explicado el tema de usuarios, grupo y permisos del directorio de logs en Arch (evita el clásico error de
Permission deniedal arrancar). -
Añadido paso para validar el XML con
xmllint. -
Añadidos ejemplos concretos de conexión con BUTT y Liquidsoap.
-
Comentado el uso de reverse proxy para HTTPS en entornos públicos.
Comentarios
Publicar un comentario