gradio-log

La verdad que tenia ganas de crear mi propia radio desde hace un tiempo, pero claro, al no tener un ordenador con buena conexión a internet ni disponibilidad 24/7 nunca llegue a realizar nada similar, pero hace poco se me quedo un VPS sin apenas uso y se me ocurrió emplearlo para esto. Por cierto, no trato de crear la típica radio que únicamente emite audio, en este caso también ira acompañado de video, ya sea una imagen estática, un gif o videos completos (en realidad es muy ineficiente este método, ya que estamos empleando muchos recursos para crear una radio pero mola). Ademas hará radiodifusión en Youtube o Twitch, la ventaja de emplear estos servicios es que si se diera el caso de tener muchos usuarios conectados no dependería de nuestra conexión para que funcionara.

Bueno vamos al lio, primero vamos con los requisitos, ya que no todo sirve:

  • Una maquina con buena conexión a internet, recomendado como mínimo 10MB/s de subida
  • La maquina debe estar conectada 24/7
  • Una conexión SSH y saber como usarla
  • Ganas de aprender y entender que se hace, no solo copiar y pegar los comandos
  • Recomendado Debian9 o similar, ya que empleare esta para el tutorial
  • Se da por hecho unos conocimientos básicos sobre el uso de la terminal, como saber usar ssh, apt, sudo, etc
  • Recomendado 1GB de ram y un doble núcleo a ser posible

En mi caso voy a emplear un VPS muy barato (por 1€ al mes), alquilado en “aruba cloud” (no quiero poner enlaces para hacer publicidad, pero lo menciono por si le sirve a alguien). El problema de emplear un VPS es que no tiene interfaz gráfica ni tarjeta de sonido por lo tanto teóricamente no podemos emplear OBS para el stream, ni hay software para terminal para realizar esta tarea, ya que recordemos que debemos emitir video aparte de música, pero todo eso tiene solución y de hecho más de una que es la gracia de este tutorial.

Empezamos con una instalación limpia de Debian 9, como es habitual empezamos comprobando que todo este al día:

# apt update && apt upgrade

Ahora procedemos a instalar todos los paquetes necesario, por no alargar todo demasiado los vamos a instalar todos de golpe:

# apt install vnc4server xfce4-terminal vlc pulseaudio alsa-tools alsa-utils ffmpeg menu moc obs-studio openbox openbox-menu pavucontrol tint2 python-pip

De forma resumida vamos a usar vnc4server para acceder de forma gráfica al servidor (este crea una pantalla virtual). Necesitamos obs y ffmpeg para el stream en si, un reproductor como vlc o moc para crear la musica, openboxmenu, openbox, xfce4terminal, tint2 para crear el entorno gráfico. Finalmente las herramientas de alsa y pavucontrol para gestionar el sonido ya que por defecto Debian viene con el mute puesto y necesitaremos gestionar la entrada y salida de sonido fácilmente. De forma opcional instalamos pythonpip para poder instalar youtubedl que es una buena forma de obtener música.

# pip install youtube-dl

Vamos a comenzar configurando VNC para el acceso, para ello creamos un usuario aislado, por seguridad, nunca ejecutes todo como root:

# adduser radio

user

Ahora nos logueamos como este nuevo usuario, podemos emplear el clásico su o iniciar una sesión SSH nueva:

# su - radio

Ahora vamos a configurar vnc para este usuario, hay que estar atentos ya que la primera vez que lo iniciemos nos pedirá una contraseña para poder acceder al servicio.

$ vncserver

vncserver

En este momento se ha abierto una sesión VNC en el puerto 5901 a la que podremos acceder. En este momento solamente se puede acceder localmente por seguridad, ya que el protocolo VNC no va cifrado y es vulnerable, pero se puede cifrar con SSH. El caso es que podemos ejecutar hasta 9 sesiones simultaneas, cada una se hospeda en un puerto diferente, la primera en 5901, la segunda en 5902 hasta el 5909. Para cerrar una sesión VNC lo hacemos empleando la opción kill:

$ vncserver -kill :1

El “1” lo podemos cambiar por el numero de la sesión si hemos abierto más de una. Ahora vamos a configurar las aplicaciones que se lanzan al abrir la sesión, ya que tenemos entorno de las X pero no se ejecutara nada:

$ nano ~/.vnc/xstartup

En el interior del fichero agregamos openbox y tint2 de tal forma:

exec /usr/bin/openbox &
exec /usr/bin/tint2 &

Como alternativa podemos usar un entorno completo como xfce o mate, pero consumirán muchísimos mas recursos de forma innecesaria.

En este momento debemos cerrar la sesión SSH para iniciarla correctamente:

$ ssh -x -e none -L 5901:127.0.0.1:5901 Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Básicamente debemos permitir el paso del protocolo X y la redirección del puertos, vamos a crear un túnel entre las 2 maquinas para poder acceder desde nuestro equipo local al puerto 5901 remoto, ya que VNC no permite accesos externos (recordemos que es por un tema de seguridad).

En caso de no tener ya iniciada una sesión VNC la abrimos con “vncserver” (recordad que aun cerrando SSH esta se queda abierta).

Ahora desde nuestro ordenador local abrimos tigervnc, dependiendo de nuestra distro se instalara de una forma u otra pero voy a resumir las 2 formas más comunes:

# apt install tigervnc
# pacman -Syu tigervnc

Como dato extra, desde OSX podemos acceder desde safari  poniendo “vnc://ip:puerto”, por desgracia ni firefox ni otros navegadores son compatibles con este sistema y debemos emplear software dedicado. Ahora ponemos en tigervnc la siguiente dirección: “127.0.0.1:5901”.

VNCTiger

A continuación nos pedirá la contraseña configurada anteriormente y se nos abrirá el entorno con openbox y tint2. Openbox se usa muy fácilmente, simplemente hacemos click derecho y se nos abre un menú con las aplicaciones que tenemos instaladas. tint2 es la barra de abajo, esta únicamente indica las aplicaciones que tenemos abiertas y nos permite minimizarlas, cambiar entre ellas, etc. Protip: podemos emplear obmenu para personalizar el menú que nos aparece, en mi caso cambio el navegdor por OBS tal que así:

obmenu

En este momento tenemos 2 opciones, empezar a jugar con OBS para descubrir que no tenemos tarjeta de sonido (si se trata de un vps, en un equipo real o maquina virtual no tendremos este problema) o directamente arreglar el problema. El caso es que de momento vamos a desmutear el sistema con alsamixer:

alsamixer

Si tenemos una tarjeta de sonido enhorabuena porque podemos omitir un par de pasos, en caso contrario debemos de emplear un modulo para conseguir que funcione los reproductores:

# modprobe snd-aloop

Con esto deberíamos de obtener nuestra preciada tarjeta de sonido, el problema es que sera por software y no tiene la misma calidad que una real, pero para este caso nos servirá. Ahora volvemos a ejecutar alsamixer para configurar el sonido.

En caso de que funcione debemos agregar al inicio el modulo editando el fichero /etc/modules

# nano /etc/modules

Al final agregamos:

snd-bcm2835
snd-aloop

Finalmente queda configurar OBS y Twitch para poder emitir, pero el post ya es lo suficientemente largo y lo dejare para una segunda parte.

 

Fuente: lignux

¿Quién está en línea?

Hay 3820 invitados y ningún miembro en línea