Icecast es un servicio de streaming multimedia, diseñado para transmitir audio para los tipos más comunes de archivos de audio. Esta guía te mostrará cómo configurar Icecast con soporte ssl en CentOS 7 de 64-bit.
En esta guía se asume que tienes instalado CentOS 7, con una IP estática asignada.
Índice
Prerequisitos
Librerías
Para que icecast funcione correctamente en centovacast necesita de los paquetes: epel-release, libxslt-devel, curl-devel, libvorbis-devel , libtheora-devel, speex-devel, openssl, openssl-devel, libxml2, libxml2-devel. Aunque la mayoría se instalan automaticamente junto con icecast mediante el instalador de centovacast, openssl-devel no lo hace, y sin esta librería no podremos lograr que la transmisión de audio se realice por ssl.
Por esta razón recomiendo tener todas esas librerias listas antes de la instalación de centovacast.
Puedes instalarlas todas con los comandos:
yum -y install epel-release curl-devel libxslt-devel libvorbis-devel libtheora-devel
yum -y install openssl openssl-devel libxml2 libxml2-devel speex-devel
Instalación de servidor de base de datos
Centovacast necesita previo a su intalación un servidor de base de datos, en las especificaciones de centova nos dice que puede usar un servidor MySQL v5 o superior ó MariaDB 10 o superior, en esta instalación usaré MariaDB 10.4.
Lo primero que tenemos que hacer es añadir el repositorio de mariaDB, para esto tenemos que ingresar el comando:
vi /etc/yum.repos.d/mariadb.repo
Luego nos dirigimos a la página » https://downloads.mariadb.org/mariadb/repositories » y buscamos la version de sistema operativo que necesitamos, en este caso es CentOS de 64-bit
Copiamos el código que nos da, en mi caso es:
[mariadb] name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
Y lo insertamos dentro del archivo que creamos anteriormente.
Una vez añadido el repositorio, instalamos mariaDB con el comando:
yum install -y mariadb-server
Cuando haya terminado la instalación, iniciamos el servidor de la base de datos, y también lo habilitamos para que se inicie automáticamente en el siguiente arranque, de este modo:
systemctl start mariadb
systemctl enable mariadb
Ahora hay que configurar la seguridad de mariaDB con el comando:
mysql_secure_installation
Nos va a pedir ingresar la contraseña, pero al no estar configurada lo unico que tenemos que hacer es darle ENTER. Lo siguiente que nos va a preguntar es si queremos cambiar la contraseña, a lo que le damos yes (Y), he ingresamos la nueva contraseña.
Luego que este cambiada la contraseña nos va ha hacer unas preguntas para configurar la seguridad
Remove anonymous users? [Y/n]
Disallow root login remotely? [Y/n]
Remove test database and access to it? [Y/n]
Reload privilege tables now? [Y/n]
todas le damos yes (Y), y con eso queda lista la instalación de mariaDB.
Podemos verificar que todo este correcto al verificar la version del servidor con el comando:
mysql --version
Creación de base de datos
Después de instalar mariaDB tenemos que crear la base de datos para centovacast, por lo que ingresamos al servidor con el comando:
mysql -u root -p
nos pedirá la contraseña que configuramos en la instalación de mariaDB.
Una vez dentro creamos la base de datos con el comando (reemplazamos la parte que dice «nombre_de_base_de_datos» con el nombre que queramos) :
CREATE DATABASE nombre_de_base_de_datos;
Podemos verificar que la base de datos se creo correctamente con el comando:
show databases;
Salimos con con el comando:
exit
Instalación de Centovacast
Para instalar Centovacast lo que hacemos es usar los comandos (reemplazamos LICENSEKEY con nuestra actual licencia de centova):
wget -O install.sh install.centova.com/LICENSEKEY
chmod a+x ./install.sh
Elegimos los componentes que queremos instalar junto con centova
ShoutCast DNAS v2: –shoutcast2
ShoutCast DNAS v1: –shoutcast1
IceCast: –icecast
Liquidsoap: –liquidsoap
ices-cc: –icescc
sctrans v2: –sctrans2
Si deseamos instalar centovacast con todos los complementos usamos el comando:
./install.sh –liquidsoap –icecast –shoutcast2 –shoutcast1 –sctrans2 –icescc
Si necesitas mas información sobre la instalación de centovacast puedes visitar:
https://centova.com/doc/cast/installation_manual/04_full_installation
Configuración del Firewall
En el sistema CentOS 7 el firewall por defecto es firewalld, y las reglas que debemos ingresar para que funcione centovacast son:
firewall-cmd –permanent –add-port=2199/tcp
firewall-cmd –permanent –add-port=2197/tcp
firewall-cmd –permanent –add-port=21/tcp
firewall-cmd –permanent –add-port=80/tcp
firewall-cmd –permanent –add-port=8000-10000/tcp
Recargamos para que la configuracion tenga efecto con el comando:
firewall-cmd –reload
Si necesitas mas información sobre la configuración del firewall puedes visitar:
https://centova.com/en/faq/cast3/information/configuring_a_firewall_for_centova_cast
Configuración de certificado SSL con Let’s Encrypt
Para habilitar el uso de SSL tenemos que hacer una configuración dentro del archivo cc-panel.conf, usamos el siguiente comando para ingresar al archivo:
vi /usr/local/centovacast/etc/cc-panel.conf
Buscamos la linea «listen 2199 default ssl;» y en la linea siguiente añadimos:
listen 80;
Guardamos, salimos del editor y reiniciamos centovacast con el comando:
service centovacast restart
Una vez hecha la configuración, simplemente solicitamos e instalamos un certificado SSL para nuestro dominio con el comando (reemplazamos «midominio.com» con el dominio para el que queremos el certificado):
/usr/local/centovacast/sbin/setssl letsencrypt midominio.com
Si todo esta correcto desde letsencrypt nos dirá que aceptemos los terminos del servicio corriendo el comando:
/usr/local/centovacast/sbin/setssl letsencrypt midominio.com –accept
Una vez este instalado el certificado, simplemente reiniciamos centovacast:
service centovacast restart
Si necesitas mas información sobre la instalación del certificado puedes visitar:
Configuraciones finales
Si todo a salido de manera correcta en este punto ya podriamos ingresar a nuestro panel de control de centovacast en » https://midominio.com:2199 » y veriamos la siguente pantalla:
Al darle a continuar lo último que tendriamos que hacer es crear el usuario administrador e ingresar las credenciales de la base de datos:
En la parte de Administrator Account colocariamos el correo del administrador y una contraseña. En la parte de MySQL Database los datos a ingresar serán:
Database name: el nombre de la base de datos que creamos en MariaDB
MySQL username: root
MySQL password: la contraseña que configuramos para MariaDB
MySQL hostname: localhost
Una vez los datos esten ingresados le damos a Next y con eso tendríamos listo nuestro panel de Centovacast.
La siguiente vez que ingresemos a » https://midominio.com:2199 » nos mostrará la siguiente pantalla:
Y para ingresar colocariamos el username «admin» y la contraseña que creamos para el administrador
Configuración de SSL para streaming de icecast
Con la instalación del certificado SSL, el panel de control de centovacast va a funcionar de manera segura, sin embargo las transmisiones de audio que salen por los diferentes puertos no lo serán. Para solucionar esto realizamos la siguiente configuración.
Dentro de CentOS ingresamos al directorio ssl con el siguiente comando:
cd /usr/local/centovacast/etc/ssl
Y dentro de este directorio crearemos un archivo .pem que contenga la llave privada y publica del certificado ssl, en este caso yo creare el archivo «icecast.pem» y le agregaré las llaves con los siguientes comandos:
cat /usr/local/centovacast/etc/ssl/certificate.pem > icecast.pem
cat /usr/local/centovacast/etc/ssl/private.key >> icecast.pem
Con esto ya queda configurado todo dentro de CentOS.
Solo nos restaría ir al panel de centovacast y escoger el cliente de icecast al que queremos habilitar el SSL (como ejemplo para este tutorial he creado un cliente de prueba):
Y vamos a configurar la cuenta del cliente desde nuestra sección, ingresando con el boton «Login to this account»:
Una vez dentro nos vamos a «Configuration -> Settings», y le damos click al boton»Raw configuration»:
Entramos a la configuración de IceCast y buscamos la parte que dice » <port>#puerto_salida</port> » (el puerto de salida varía, para este ejemplo es el 8000):
Y vamos a reemplazar esa línea con lo siguiente:
<listen-socket>
<port>#puerto_salida</port>
</listen-socket>
<listen-socket>
<port>#puerto_salida_ssl</port>
<ssl>1</ssl>
</listen-socket>
Reemplazamos el » #puerto_salida » con el puerto que corresponde (en este ejemplo es el 8000) y » #puerto_salida_ssl » con el puerto por el que deseamos salga la transmisión segura (en este ejemplo yo escogí el 9000):
Finalmente dentro del mismo editor buscamos » <pidfile>var/run/server.pid</pidfile> » y en la linea siguiente añadimos:
<ssl-certificate>/usr/local/centovacast/etc/ssl/icecast.pem</ssl-certificate>
Le damos a guardar y con eso estaría listo.
Si esta guía te ha servido o si tienes dudas puedes dejarmelas en los comentarios.
Hola, muy bueno el tutorial, pero creo que no me quedo claro el tema de la configuración del ssl en el cpanel? para centova ya que comentaste que lo tenias configurado con un subdominio, crees que puedas hacer un tuto de eso??
saludos
Hola Ariel, gracias por tu sugerencia, lo tomaré en cuenta para futuros tutoriales.
Genial Tutorial me hizo de mucha ayuda, tengo una pregunta y para configurar el SSL para Shoutcast en el Centovacast como seria?
Hola Sonia, me alegra que te haya servido, para shoutcast hay que hacerlo mediante proxy, puedes suscribirte al canal de youtube de TechInRadio, que proximamente sacaré un video con el procedimiento para hacerlo.
buenas tardes. tengo icecast instalado en ubuntu 18.4 server vps sin panel de control. He instalado un ssl bajo un susbdominio y he hecho los cambio, pero no logro hacer que funcione el icecast bajo ssl
Hola Igmar, El procedimiento es para Centos y con centovacast, si deseas instalar un ssl en icecast puedes ir a la pagina oficial y buscar información en la documentación, te dejo el enlace https://icecast.org/docs/icecast-2.4.1/
Hello i have problem as bellow, can you help me ?
[root@streaming media]# /usr/local/centovacast/sbin/setssl letsencrypt stream.arenastreaming.com
Installing custom SSL certificate …
cp: cannot stat ‘letsencrypt’: No such file or directory
cp: cannot stat ‘stream.arenastreaming.com’: No such file or directory
Done. Restart Centova Cast to apply these changes.
If you followed the procedure given by centovacast on the page: https://centova.com/en/faq/cast3/information/lets_encrypt ,it might be a problem with your centovacast installation, you can contact centovacast support they surely have more information about why this error occurs.
Como usted hacer para el renew del certificado SSL?
Puedes hacer una tarea en el cron, que renueve el certificado.
Pero cual es el comando para dejar en la crontab or ejecutar?
Ustede sabes cual es commando para renew the certificated lets encrypt?
Es el mismo que se usa la primera vez que se crea el certificado
fiz o passo a passo certo.
porem nao toca nada….
Un error comun es no instalar las librerias antes de centovacast, siempre se debe instalar las librerias antes, en especial openssl y openssl-devel que son las que permiten el ssl.
E acredito que mesmo que funcione, deve dar erro de estatística.
Pois o IP do ouvinte para aparecer sempre o do servidor do Centova, pois será um Proxy.
Tirando assim todas as referencias do ouvintes conectados nas radios.
Este tutorial no utiliza proxy para lograr transmitir con ssl, en Icecast el ssl es nativo.
Refiz tudo novamente e agora funciona 100%.
O unico problema agora é fazer meu player tocar o audio.
Uso o player https://radioplayer.luna-universe.com/shortcode
Mas ele apenas toca o audio, mas nao mostra o nome da musica, nem a capa do artista e nem o analisador de audio em tempo real.
Estou usando o Azuracast pelo Shoutcast e la funciona em SSL juntamente com este player.
Mas queria voltar para o Centova por ser mais profissional, porém acredito que a Centova está chegando ao fim, pois a anos que eles nao atualizam mais o sistema deles e nem se quer se preocuparam em resolver essa questão do SSL com Shoutcast.
Uma pena, pois um painel tão bom.
El audio y la metadata son cosas que el reproductor procesa, en tu caso tendrías que preguntarles a ellos. Respecto a centova, tienes razón, lastimosamente su software cada vez esta mas desactualizado.
Tengo instalado centova en una instancia ec2 de aws, no he podido descargar el certificado ssl de letsencrypt porque tengo la version v1de Acme y no lo permite, no he podido encontrar documentación que me ayude a actualizarla; por lo tanto compré un certificado en GoDaddy, el cual funcionó para centova pero no para icecast, seguí su tutorial pero remplace las certificados de letsencrypt por los de GoDaddy y tampoco, podría ayudarme por favor ?
Claro escribeme al chat y lo conversamos.
Hola Diego
muy buena tu explicacion, yo efectue paso a paso tu procedimiento de principio a fin y si abre en servidor seguro la pagina en lets encript pero el audio me dice que no es seguro, que podria hacer para reparar el problema?
Gracias por tu ayuda
saludos
Si seguiste todos los pasos debería funcionar toda transmisión de icecast, si no funciona puede haber algun problema con el certificado.
Hola Diego
Gracias por responder, que deberia hacer volver a generar el certificado?
saludos
la verdad son muchas las posibles causas para que falle, puedes generarlo nuevamente pero si no funciona puedes escribirme por chat que es mas facil comunicarnos de esa manera.
Hola Diego
Ok te escribo por chat
saludos
Excelente tutorial, me funcionó pero hay que seguir todos los pasos y la instalación por obligación se tiene que hacer desde cero si tiene centova instalado ya no deja instalar certificado a icecast
Tienes razón, este procedimiento solo funciona en una instalación desde cero, si necesitas instalar un ssl en un panel que ya esta funcionando hay que hacerlo de otra manera.
saludos. realizando la instalacion con el siguiten comando sudo ./install.sh –liquidsoap –icecast, error de instalacion liquidsoap
liquidsoap did not install successfully and will not be available for use
to try again, run /usr/local/centovacast/sbin/update -add liquidsoap
OKEY
Buenas, ya no se puede instalar Icecast2 desde Centova y tienes que instalartelo por tu cuenta, puedes actualizar los pasos? estoy mirando en tutoriales y no veo ninguno que funcione para Centos 8 Stream.