Instal·lació i Configuració d'Icecast a Linux
Introducció
En aquesta guia aprendrem a instal·lar i configurar Icecast2, el servidor de streaming d'àudio de codi obert més utilitzat. Icecast permet crear la nostra pròpia emissora de ràdio per Internet amb capacitat per múltiples oients simultanis i suport per diversos formats d'àudio.
Treballarem amb Ubuntu Server 22.04 LTS, encara que els passos són similars per a altres distribucions de Linux basades en Debian.
Requisits Previs
Requisits de maquinari
Per a un servidor bàsic amb fins a 50 oients simultanis:
- CPU: 1 core (2 cores recomanat)
- RAM: 512 MB (1 GB recomanat)
- Disc: 10 GB (més si emmagatzemes arxius d'àudio)
- Xarxa: Connexió estable amb pujada mínima de 10 Mbps
Càlcul d'amplada de banda:
Stream a 128 kbps × 50 oients = 6.400 kbps = 6,4 Mbps (pujada)
Afegim 30% de marge = 8,32 Mbps necessaris
Requisits de programari
- Ubuntu Server 22.04 LTS (o similar)
- Accés root o sudo
- Connexió a Internet activa
- Coneixements bàsics de terminal Linux
Instal·lació d'Icecast2
Actualització del sistema
Abans de començar, actualitzem els repositoris i el sistema:
Instal·lació des dels repositoris oficials
Icecast2 està disponible als repositoris oficials d'Ubuntu:
Durant la instal·lació, se't farà diverses preguntes:
- Configure Icecast2? → Selecciona
Yes - Hostname: Introdueix el nom de domini o IP del servidor (exemple:
radio.exemple.cat) - Source password: Contrasenya per als encoders que enviaran àudio (canvia
hackme) - Relay password: Contrasenya per a relay servers (canvia
hackme) - Administration password: Contrasenya per accedir a l'administració web (canvia
hackme)
Seguretat
És crític canviar les contrasenyes per defecte. Utilitza contrasenyes fortes i úniques per evitar accessos no autoritzats.
Verificació de la instal·lació
Comprova que Icecast s'ha instal·lat correctament:
Si el servei no està actiu, iniciem-lo:
AC0375/07/06 — Miniactivitat
RA7 · CA7b
Instal·la i configura Icecast2 a Ubuntu Server: canvia les contrasenyes per defecte (source-password, admin-password), engega el servei i comprova des del navegador que la interfície d'administració respon al port 8000. Documenta els passos amb captures que incloguin el teu nomcognom.
Configuració Bàsica d'Icecast
Estructura del fitxer de configuració
El fitxer principal de configuració es troba a:
Abans de modificar-lo, creem una còpia de seguretat:
Edició de la configuració
Editem el fitxer amb l'editor preferit:
Paràmetres essencials
1. Límits de connexions
Defineix quants clients i fonts pot gestionar el servidor:
<limits>
<clients>100</clients> <!-- Màxim oients simultanis -->
<sources>2</sources> <!-- Màxim fonts simultànies -->
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>
Explicació dels paràmetres:
- clients: Nombre màxim d'oients simultanis
- sources: Nombre màxim de fonts que poden emetre alhora
- burst-size: Buffer enviat immediatament al connectar (millora l'inici de reproducció)
2. Autenticació
Configura les contrasenyes d'accés:
<authentication>
<source-password>ContraIceSe2024!</source-password>
<relay-password>RelaySecure2024!</relay-password>
<admin-user>admin</admin-user>
<admin-password>AdminSecure2024!</admin-password>
</authentication>
Bones pràctiques
- Utilitza contrasenyes diferents per a cada rol
- Mínim 12 caràcters amb majúscules, minúscules, números i símbols
- Canvia les contrasenyes periòdicament
3. Configuració del hostname
Defineix com s'identifica el servidor:
Si no tens un domini, pots utilitzar la IP pública del servidor:
4. Port d'escolta
Per defecte, Icecast utilitza el port 8000:
Per escoltar només en una IP específica, descomenta i modifica bind-address.
5. Paths i directoris
Ubicacions dels fitxers del sistema:
<paths>
<basedir>/usr/share/icecast2</basedir>
<logdir>/var/log/icecast2</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
<alias source="/" destination="/status.xsl"/>
</paths>
6. Logging
Configuració dels registres d'activitat:
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel> <!-- 1=error, 2=warn, 3=info, 4=debug -->
<logsize>10000</logsize>
</logging>
Configuració completa d'exemple
Aquí tens una configuració bàsica funcional:
<icecast>
<location>Catalunya, Espanya</location>
<admin>admin@exemple.cat</admin>
<limits>
<clients>100</clients>
<sources>2</sources>
<queue-size>524288</queue-size>
<client-timeout>30</client-timeout>
<header-timeout>15</header-timeout>
<source-timeout>10</source-timeout>
<burst-on-connect>1</burst-on-connect>
<burst-size>65535</burst-size>
</limits>
<authentication>
<source-password>FontSecure2024!</source-password>
<relay-password>RelaySecure2024!</relay-password>
<admin-user>admin</admin-user>
<admin-password>AdminSecure2024!</admin-password>
</authentication>
<hostname>radio.exemple.cat</hostname>
<listen-socket>
<port>8000</port>
</listen-socket>
<fileserve>1</fileserve>
<paths>
<basedir>/usr/share/icecast2</basedir>
<logdir>/var/log/icecast2</logdir>
<webroot>/usr/share/icecast2/web</webroot>
<adminroot>/usr/share/icecast2/admin</adminroot>
<alias source="/" destination="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel>
<logsize>10000</logsize>
</logging>
<security>
<chroot>0</chroot>
</security>
</icecast>
Verificació de la configuració
Abans de reiniciar Icecast, verifica que la configuració sigui vàlida:
Si no hi ha errors, reinicia el servei:
Configuració del Firewall
UFW (Ubuntu Firewall)
Si utilitzes UFW, obre el port 8000:
Firewalld (CentOS/RHEL)
Si utilitzes firewalld:
sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
iptables (manual)
Si utilitzes iptables directament:
sudo iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4
Accés a la Interfície Web
Pàgina de estat
Obre un navegador i accedeix a:
Hauries de veure la pàgina d'estat d'Icecast mostrant: - Informació del servidor - Llista de mount points actius (inicialment buida) - Estadístiques globals
Interfície d'administració
Per accedir a l'administració:
Introdueix:
- Usuari: admin
- Contrasenya: La que vas configurar a admin-password
Des d'aquí pots: - Veure estadístiques detallades - Gestionar mount points - Desconnectar fonts o clients - Veure logs en temps real
Configuració d'una Font d'Àudio (Source)
Per enviar àudio a Icecast necessitem un encoder. Utilitzarem ffmpeg per a aquest exemple.
Instal·lació de ffmpeg
Streaming d'un fitxer MP3
ffmpeg -re -i musica.mp3 \
-codec:a libmp3lame -b:a 128k \
-content_type audio/mpeg \
-f mp3 \
icecast://source:FontSecure2024!@localhost:8000/radio.mp3
Explicació dels paràmetres:
- -re: Llegeix el fitxer a velocitat real (no el més ràpid possible)
- -i musica.mp3: Fitxer d'entrada
- -codec:a libmp3lame: Codec MP3
- -b:a 128k: Bitrate de 128 kbps
- -content_type audio/mpeg: Tipus MIME
- -f mp3: Format de sortida
- icecast://source:contrasenya@servidor:port/mountpoint
Streaming en format Opus (més eficient)
ffmpeg -re -i musica.mp3 \
-codec:a libopus -b:a 96k \
-content_type audio/opus \
-f opus \
icecast://source:FontSecure2024!@localhost:8000/radio.opus
Opus ofereix millor qualitat que MP3 a bitrates més baixos, ideal per streaming web modern.
Streaming des de micròfon (Linux ALSA)
# Llistar dispositius d'àudio disponibles
arecord -l
# Streaming en directe des de micròfon
ffmpeg -f alsa -i hw:0 \
-codec:a libmp3lame -b:a 128k \
-content_type audio/mpeg \
-f mp3 \
icecast://source:FontSecure2024!@localhost:8000/directe.mp3
Verificació del stream
Mentre ffmpeg estigui executant-se, actualitza la pàgina web d'Icecast:
Hauries de veure el mount point (per exemple /radio.mp3) llistat amb informació sobre:
- Bitrate
- Nombre d'oients actuals
- Temps en actiu
Pots reproduir el stream clicant a l'enllaç M3U o accedint directament a:
Instal·lació de Butt (Broadcast Using This Tool)
Butt és una aplicació gràfica multiplataforma ideal per emetre en directe des d'escriptori.
Instal·lació a Ubuntu
Configuració de Butt
- Obre Butt des del menú d'aplicacions
- Ves a Settings (icona d'engranatge)
Configuració del servidor:
- A la pestanya Main, clica ADD
- Emplena els camps:
- Address: IP o domini del servidor Icecast
- Port: 8000
- Password: La contrasenya configurada a
source-password - IceCast mountpoint:
/radio.mp3(o el nom que prefereixis) - IceCast user: source
Configuració d'àudio:
- Pestanya Audio:
- Audio Device: Selecciona el teu micròfon o dispositiu d'entrada
- Samplerate: 44100 Hz
- Bitrate: 128 kbps
- Format: mp3 o opus
Configuració de metadades:
- Pestanya Stream:
- Server name: Nom de la teva ràdio
- Description: Descripció breu
- Genre: Gènere musical
- URL: Web de la ràdio
Emetre en directe amb Butt
- Selecciona el servidor configurat al menú desplegable
- Clica el botó Play (triangle verd)
- Butt començarà a enviar àudio a Icecast
- L'indicador de connexió mostrarà el temps en actiu i listeners
Configuració Avançada
Mount points amb configuració específica
Pots definir configuracions específiques per a cada mount point:
<mount type="normal">
<mount-name>/radio-hq.opus</mount-name>
<username>source</username>
<password>ContraHQ2024!</password>
<max-listeners>50</max-listeners>
<dump-file>/var/log/icecast2/radio-hq.dump</dump-file>
<burst-size>65535</burst-size>
<fallback-mount>/radio.mp3</fallback-mount>
<fallback-override>1</fallback-override>
<fallback-when-full>1</fallback-when-full>
<stream-name>Ràdio Exemple HQ</stream-name>
<stream-description>Alta qualitat en Opus</stream-description>
<stream-url>https://exemple.cat</stream-url>
<genre>Variada</genre>
<public>1</public>
</mount>
Paràmetres destacats:
- max-listeners: Límit d'oients per aquest mount
- fallback-mount: Mount alternatiu si aquest falla
- dump-file: Grava el stream a un fitxer
- public: Si es publica a directoris públics (YP)
Autenticació per a oients
Pots restringir l'accés als oients amb autenticació HTTP:
<mount type="normal">
<mount-name>/radio-privat.mp3</mount-name>
<authentication type="htpasswd">
<option name="filename" value="/etc/icecast2/listeners.htpasswd"/>
<option name="allow_duplicate_users" value="0"/>
</authentication>
</mount>
Crea el fitxer de contrasenyes:
sudo htpasswd -c /etc/icecast2/listeners.htpasswd oient1
sudo htpasswd /etc/icecast2/listeners.htpasswd oient2
Relay / Restream
Configurar Icecast per retransmetre un stream d'un altre servidor:
<relay>
<server>servidor-origen.cat</server>
<port>8000</port>
<mount>/radio-origen.mp3</mount>
<local-mount>/radio-relay.mp3</local-mount>
<relay-shoutcast-metadata>0</relay-shoutcast-metadata>
<on-demand>0</on-demand>
</relay>
SSL/TLS (HTTPS)
Per xifrar el trànsit, configura SSL:
- Genera o obten un certificat SSL (Let's Encrypt recomanat)
- Configura SSL a Icecast:
<listen-socket>
<port>8443</port>
<ssl>1</ssl>
</listen-socket>
<paths>
<ssl-certificate>/etc/letsencrypt/live/radio.exemple.cat/fullchain.pem</ssl-certificate>
<ssl-private-key>/etc/letsencrypt/live/radio.exemple.cat/privkey.pem</ssl-private-key>
</paths>
- Reinicia Icecast:
Accedeix ara via HTTPS:
Monitorització i Manteniment
Logs del sistema
Els logs d'Icecast es troben a /var/log/icecast2/:
# Veure errors en temps real
sudo tail -f /var/log/icecast2/error.log
# Veure accessos en temps real
sudo tail -f /var/log/icecast2/access.log
Estadístiques en temps real
Accedeix a la interfície d'administració per veure: - Nombre d'oients actuals - Pics d'audiència - Durada de les sessions - IPs dels oients - User-agents (reproductors utilitzats)
Automatització amb systemd
Per assegurar que Icecast s'executi sempre, habilita l'inici automàtic:
Rotació de logs
Ubuntu ja configura logrotate per Icecast. Pots ajustar-lo a /etc/logrotate.d/icecast2:
/var/log/icecast2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 icecast2 icecast
sharedscripts
postrotate
systemctl reload icecast2 >/dev/null 2>&1 || true
endscript
}
Resolució de Problemes
Icecast no s'inicia
Verificar errors de configuració:
Si hi ha errors de sintaxi XML, es mostrarà la línia problemàtica.
Comprovar permisos:
Assegura't que l'usuari icecast2 té permisos d'escriptura.
No puc connectar com a source
Error: "Authentication failed"
- Verifica que la contrasenya
source-passwordcoincideixi - Comprova que utilitzes l'usuari
source
Error: "Mount point in use"
- El mount point ja està ocupat per una altra font
- Desconnecta la font existent o utilitza un mount point diferent
No puc escoltar el stream
Comprova que el stream està actiu:
Hauria d'aparèixer el mount point llistat.
Prova des del servidor local primer:
Si funciona localment però no remotament, és probable que sigui un problema de firewall.
Verifica connectivitat:
Si no connecta, revisa les regles del firewall.
Alta latència o tall de reproducció
Augmenta el burst-size:
Verifica amplada de banda:
Si l'amplada de banda està saturada, considera: - Reduir el bitrate del stream - Limitar el nombre de clients - Millorar la connexió de xarxa
Bones Pràctiques
Seguretat
- Canvia totes les contrasenyes per defecte
- Utilitza SSL/TLS per xifrar el trànsit
- Limita l'accés amb firewall i autenticació
- Manté el sistema actualitzat:
- Monitoritza els logs regularment per detectar accessos no autoritzats
Rendiment
- Utilitza formats eficients: Opus ofereix millor qualitat a bitrates més baixos
- Configura límits adequats de clients i sources
- Implementa CDN o múltiples relays per a audiències grans
- Monitoritza recursos:
Experiència d'usuari
- Proporciona múltiples qualitats: Un stream d'alta qualitat i un altre per mòbils
- Configura metadades correctament: Nom del stream, descripció, gènere
- Implementa fallback: Stream de reserva per quan falli la font principal
- Proporciona reproductors web: Facilita l'accés sense instal·lar programari
Recursos Addicionals
Documentació oficial
Eines complementàries
- Liquidsoap: Automatització avançada de programació
- Azuracast: Plataforma web completa per gestionar ràdio
- mpd + ympd: Servidor de música amb control web
Comunitat
- Icecast Mailing List
- r/icecast - Comunitat a Reddit
Conclusió
Ara tens un servidor Icecast completament funcional capaç de distribuir àudio a Internet. Has après a:
- ✅ Instal·lar i configurar Icecast2
- ✅ Obrir ports i configurar el firewall
- ✅ Enviar àudio amb ffmpeg i Butt
- ✅ Configurar mount points personalitzats
- ✅ Implementar SSL/TLS per a connexions segures
- ✅ Monitoritzar i solucionar problemes comuns
Experimenta amb diferents configuracions, formats i eines per adaptar el servei a les teves necessitats específiques. Recorda sempre respectar els drets d'autor si emets música comercial!