Creamos una estación de radio por Internet simple, compacta y económica

Linux será la plataforma de software, por simplicidad es mejor usar algo común, con mucha información en Internet, si algo sale mal. Iron para una estación de radio por Internet puede ser cualquier cosa, un servidor completo con sus proyectos, una computadora portátil vieja o una netbook, queremos barato y no necesitamos un rendimiento especial de iron.

Si no tiene nada a mano, o si necesitamos un servidor completamente silencioso, ¿por qué no intentar usar una mini computadora?

Algo así como la Raspberry Pi 3?

No, queremos más barato, por lo que necesitamos algo como Orange Pi. Encontré un modelo Orange Pi Pc Plus con 1GB DDR3 RAM y 8GB EMMC Flash.



UPD: Ayer, todos de alguna manera tomaron el artículo demasiado en serio, pero de hecho el experimento se realizó por el bien del fanático, para ver si funciona o no. Naturalmente, no se habla de ningún uso "industrial", es como intentar sonar el estadio con un centro de música ordinario.

¿Qué más podemos necesitar?

Quiero intentar configurar todo de una manera simple, por lo que aún necesitaré un cable de par trenzado para el enrutador y una tarjeta de memoria Micro SD, ya que no puedo instalar el sistema operativo directamente en la micro computadora. Encontré una tarjeta de memoria para 8 gigabytes, esta cantidad es suficiente.

Entonces, antes que nada, debe escribir la imagen del sistema operativo en la tarjeta de memoria.
Para los servidores, prefiero usar el Debian probado en el tiempo (sí, la generación más joven probablemente prefiere CentOS, pero los de barba gris estarán de acuerdo conmigo en que Debian sigue siendo muy bueno).

En general, hay muchas imágenes preparadas para Orange Pi en www.orangepi.org/downloadresources , pero aún voy a www.armbian.com/download y descargo el archivo torrent de armbian desde dl.armbian.com/orangepipcplus (en el mío caso de Debian_stretch_next.7z).

Tengo Orange Pi Pc Plus, puedes tener cualquier otra mini computadora, así que busca la imagen adecuada.

Después de descargar, desempaquete el archivo y vea la imagen en formato img. Cualquiera que quiera con qué llenan la imagen, personalmente prefiero Etcher (https://etcher.io). Insertamos una tarjeta de memoria, la seleccionamos si tiene varios medios conectados, haga clic en el botón de costura e ingrese la contraseña si también tiene Linux en su computadora de escritorio o portátil.



La tarjeta con la imagen está lista, puede comenzar a conectar todo.
¿Qué necesitamos para comenzar y configurar nuestro servidor?
La mini computadora en sí, Internet a través de cable Ethernet y fuente de alimentación.
Y eso es todo.

No, por supuesto, puede confundirse, conectar el monitor y el teclado y configurar todo directamente, pero me gusta más el teclado de mi computadora portátil, por lo que configuraré mi mini computadora de forma remota, a través de SSH.

Entonces, comencemos, pegamos el cable Ethernet, una tarjeta Micro SD con una imagen de Armbian.
Solo queda suministrar energía a la mini computadora.

Pero con el poder del Orange Pi, todo es muy triste. ¿Qué hay en una mini computadora normal? Así es, Micro-USB, pero ¿cómo puedo alimentar el Orange Pi? Solo 5V a través de un conector pin, que se compra por separado.

Un adaptador de corriente con un conector adecuado cuesta más que un simple cable con USB estándar al final, por lo que puede tomarlo.

Si no hay una fuente de alimentación gratuita con USB (y no la necesitamos de ninguna manera, sino por 2 amperios), entonces buscamos en nuestra caja cables, adaptadores y placas para computadoras (tiene una caja así, ¿verdad?) Y encuentre un adaptador adecuado de algunos viejos, rotos por una tableta infantil, suelden el cable y la alimentación de nuestro servidor está lista.

Bueno, o simplemente tome el cargador del viejo reproductor de mp3 de disco iRiver (solo tiene 4.7 voltios y 1.2 amperios, pero también funciona).

Estamos sirviendo comida y estamos listos para pasar, de hecho, a aquel para el que todo fue concebido, a la creación de una estación de radio por Internet.

Si, como yo, tiene la intención de sobrevivir con un mínimo de periféricos, entonces necesitamos averiguar qué dirección IP recibió nuestra mini computadora. La forma más fácil de averiguarlo es ir a su enrutador y ver qué dirección IP le dio el enrutador a nuestro servidor (su enrutador puede hacer DHCP, ¿verdad?).

Ahora puede iniciar sesión a través de SSH en nuestro servidor. Quien use el cliente SSH es el que debe usar (nunca tiene Windows, pero no sé qué hacen los clientes SSH).
En mi caso, solo escribo en la consola ssh root@192.168.0.88, acepto agregar la clave ECDSA, la contraseña predeterminada para root se establece en "1234", después de iniciar sesión, nos encontramos en la consola del microordenador, lo que sugiere inmediatamente cambiar la contraseña de root.



Después de eso, se propone crear una cuenta de usuario sin privilegios, la creamos.
En comparación con las versiones anteriores del sistema operativo, la versión actual está algo simplificada en términos de configuración y muchas cosas ya están configuradas automáticamente.

Armbian tiene una herramienta de configuración muy conveniente: armbian-config copia el comando a la consola y mira lo que puede ser útil.



Todavía no necesitamos la configuración del sistema, pero es posible que la necesite más tarde, por ejemplo, para transferir el sistema configurado de Micro SD a la memoria flash EMMC de 8GB incorporada de una mini computadora.

La sección Red nos será útil, pero sería bueno tener una dirección IP estática para el servidor. Nuestra estación de radio por Internet se puede conectar a la red incluso a través de Wi-Fi. Todos establecen el nivel de perversidad por sí mismos, pero si construyes la radio de Internet solo para ti y no hay planes para más de 10 oyentes al mismo tiempo, ¿por qué no conectas nuestro servidor a Wi-Fi? En casos extremos, puede enchufar un cable Ethernet en cualquier momento.

Entonces, decidimos el tipo de conexión, ahora necesitamos configurar una dirección IP estática, para esto vamos a la configuración de IP y seleccionamos la interfaz de red deseada, después de lo cual decimos que queremos una dirección estática, iniciarla y guardar la configuración. No es necesario cambiar la máscara y la puerta de enlace, ya que se reciben de su enrutador a través de DHCP.



Después de ingresar una nueva dirección IP y presionar Enter, su sesión SSH se congelará inmediatamente, ya que el dispositivo tendrá inmediatamente una nueva dirección IP. Por lo tanto, simplemente cerramos la ventana con el terminal y vamos a nuestra mini computadora a través de SSH usando la nueva dirección IP.

Por cierto, dado que todas las funciones que tenemos serán de naturaleza administrativa, para no escribir constantemente antes de cada comando sudo, solo inicio sesión en la mini computadora como root.

Al ejecutar armbian-config nuevamente, ¿podemos ver qué más se puede configurar? En la sección Personal, podemos configurar la zona horaria, la configuración regional y el nombre del host. Agregué la configuración regional ru_RU.UTF-8 UTF-8, que será útil.

Para que se aplique la configuración, debe salir de la utilidad de configuración, cerrar sesión e iniciar sesión nuevamente o reiniciar el servidor con el comando reiniciar.

Utilicé el comando de reinicio para asegurarme de que la configuración se guardó y que el servidor comenzó con éxito.

Se ha realizado la configuración básica del servidor y ¿por qué no instalar el sistema operativo con el sistema operativo MicroSD en la memoria flash interna de EMMC? Por supuesto, si su mini computadora tiene esta memoria a bordo.

Para hacer esto, vaya a armbian-config - System - Install, seleccione la unidad disponible, presione Enter, obtenga saludos del pasado, acepte y seleccione el tipo de sistema de archivos ext4.



Ahora podemos sentarnos y esperar hasta que el sistema operativo se transfiera al almacenamiento interno de la mini computadora.



Una vez completada la copia, elija apagar la unidad. Esperamos un par de segundos hasta que el LED de la mini computadora se apague, desconecte la alimentación, retire la tarjeta microSD, vuelva a enchufar la alimentación y encienda la computadora.

Sí, si no tiene memoria interna y no le transfirió el sistema operativo, probablemente no sea una buena idea sacar un MicroSD.

Después de iniciar sesión en nuestra mini computadora a través de SSH y asegurarse de que todo funciona, puede comenzar a sintonizar la estación de radio.

En primer lugar, actualizamos la información del paquete mediante la apt update en la consola del servidor.

Sí, me encanta la comodidad, así que instalo mc con el comando apt install mc .
Me gusta hacer todo desde debajo de mc, y si necesito ver la consola, solo presiono ctrl + o.

Primero, instale el reproductor de música demonio: apt install mpd .
Se instalarán un montón de dependencias con él.

Pasemos a la configuración. El archivo /etc/mpd.conf es responsable de la configuración del demonio, ábralo con el nano /etc/mpd.conf .

Mi nombre de usuario no tiene privilegios hzs, y mi archivo de configuración se ve así:

 music_directory "/home/hzs/music" playlist_directory "/home/hzs/.mpd/playlists" db_file "/home/hzs/.mpd/tag_cache" log_file "/home/hzs/.mpd.log" pid_file "/home/hzs/.mpd/pid" state_file "/home/hzs/.mpd/state" sticker_file "/var/lib/mpd/sticker.sql" user "hzs" bind_to_address "localhost" restore_paused "yes" metadata_to_use "artist,title" auto_update "yes" audio_output { type "httpd" name "My New Internet Radio Station!!!" encoder "lame" # optional, vorbis or lame port "8000" bind_to_address "0.0.0.0" # optional, IPv4 or IPv6 bitrate "256" # do not define if quality is defined format "44100:16:2" } volume_normalization "yes" filesystem_charset "UTF-8" id3v1_encoding "UTF-8" 

Aquí todo está claro y sin comentarios especiales.

Para trabajar, debe crear una estructura de directorio desde la parte superior de la configuración. Tenga en cuenta que el propietario de estos directorios debe ser un usuario sin privilegios, de quien todo funcionará, en mi caso hzs.

Desde la raíz, ejecute los siguientes comandos:

chown -cR hzs:hzs /home/hzs/music
chown -cR hzs:hzs /home/hzs/.mpd

Es hora de subir música, tenemos SSH en el servidor, para que podamos conectar nuestro cliente FTP favorito a nuestro servidor.

Sabemos que la dirección IP, el puerto 22, el nombre de usuario y la contraseña son los que especificó al crear el usuario sin privilegios, el tipo de conexión SSH. Vierta un poco de música para la prueba en el directorio de música especificada en la configuración.



Ahora el reproductor se inicia con la configuración incorrecta, por lo que detenemos el demonio y lo iniciamos nuevamente:

service mpd stop
service mpd start

Para el control más simple del demonio, apt install mpc utilidad de consola apt install mpc usando el comando apt install mpc .

Después de la instalación, configuraremos un poco el reproductor:

mpc random on
mpc repeat on

Ahora necesita agregar pistas y una lista de reproducción, en la consola es algo gimmorro, pero no se puede hacer nada.

Observamos los archivos disponibles, que podemos agregar a la lista de reproducción:

mpc ls

Para agregar un archivo a la lista de reproducción, en el comando mpc add debemos especificar el nombre completo del archivo a agregar, la selección por máscara no funciona:

mpc add "01 Lost in Your Eyes.mp3"

Vemos la lista de reproducción resultante:

mpc playlist

Es hora de lanzar nuestra estación de radio:

mpc play



Intentemos escuchar, para esto, en cualquier reproductor de audio, abra la transmisión de audio de nuestra estación de radio. Para hacer esto, ingrese la dirección de la transmisión http://ip:port , la tengo http://192.168.0.90:8000 .

Audacious jugó de forma intermitente, hubo un problema con el almacenamiento en caché, pero SMPlayer y VLC no sintieron ningún problema.







En principio, en esta etapa, nuestra estación de radio por Internet ya está funcionando, debe agregar música a la lista de reproducción y reenviar los puertos del enrutador para que nuestra estación de radio por Internet se convierta en una estación de radio por Internet y no en una radio en la red local.

Tengo varios dominios, así que lo primero que hago en la configuración de DNS es crear un registro "A" con testradio y la dirección IP externa estática de mi enrutador en casa. No tienes que hacer esto.

Luego, en mi enrutador, configuro el reenvío de puertos.

Como ya tengo mi propia estación de radio en un servidor grande, especifico el puerto fuente externo 9000 y el puerto local interno 8000, por lo que desde afuera la radio transmitirá a través de http://_ip:9000 .



Eso es todo, ahora tenemos una estación de radio por Internet "real".

Si no quieres detenerte allí, ve más allá.

No transmitimos la voz del DJ, pero si es necesario se puede implementar, pero lo que realmente se necesita es una interfaz de administración de listas de reproducción conveniente.

Hay toneladas de consolas de administración, algunas se pueden ver aquí , pero usaré el Pitchfork MPD Client .

Este es un bozal web completo, y sí, dispararemos con un arma a los gorriones y levantaremos un servidor http completo en una mini computadora con nuestra estación de radio:

apt install apache2

También necesitaremos PHP:

apt-get install php

Todavía necesito

apt install php7.0-xml

y

apt install php-pear

Creamos el directorio / home / hzs / wwwroot / pf en la carpeta de inicio y desempaquetamos en él el Cliente Pitchfork MPD previamente cargado a través de SSH.



En el archivo de configuración del servidor web apache2 /etc/apache2/sites-available/000-default.conf
nano /etc/apache2/sites-available/000-default.conf
cortamos todo y escribimos (no olvide cambiar "hzs" a su nombre de usuario):

 <VirtualHost *:80> ServerName localhost ServerAdmin webmaster@localhost DocumentRoot /home/hzs/wwwroot <Directory /home/hzs/wwwroot/> Options All AllowOverride All DirectoryIndex index.php index.html index.htm Order Allow,Deny Allow from All Require all granted </Directory> </VirtualHost> 

Luego reiniciamos el servidor http

service apache2 restart

Accediendo a la dirección de su servidor IP / pf (en mi caso: http://192.168.0.90/pf )

Veremos el panel de control:



Todo es bastante simple e intuitivo.

A continuación, haga clic en el icono de la carpeta a la derecha y en la pestaña Sistema de archivos.

Para actualizar la lista de archivos, haga clic en el botón Actualizar DB, luego seleccione los archivos restantes que aún no tenemos en la lista de reproducción y haga clic en el botón Agregar un poco más abajo.

Actualizamos la página y vemos que todos los archivos que hemos agregado a la lista de reproducción:



Si necesita ocultar el control del reproductor con una contraseña, puede editar el archivo de configuración:

nano /home/hzs/wwwroot/pf/config/config.xml

Hay una estructura de configuraciones completamente comprensible.

Entonces, tenemos un servidor de servidor de radio por Internet completo que mide 10 * 7 * 3 centímetros. Por supuesto, el servidor de baja potencia usado no atraerá a cientos de oyentes, pero al menos no te dejará sin tu música favorita donde sea que estés, si hay Internet cerca.

En principio, no puede continuar leyendo, pero para aquellos que son especialmente persistentes, continuamos.
Tenemos un servidor web completo, por qué ...
Bueno, ya lo entiendes.

Cree el directorio testradio en la raíz de nuestro servidor web, cree el archivo "index.php" en él:

 <!DOCTYPE html> <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" dir="ltr"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>My Test Radio</title> <script src="jquery-3.3.1.min.js"></script> </head> <body> <h1>My Test Radio</h1> <div id="song"> now playing:<br> <div id="title">now playing</div> <br> <div> <span id="play" type="button">Play</span> <span id="pause" type="button">Pause</span> </div> <br> <div> vol:<br> <input id="volume" type="range" min="0" max="10" value="5" /> </div> <span id="duration"></span> <br> <div>256 kbps</div> </div> <script language="JavaScript"> var audio = new Audio('http://testradio.nisel.ru:9000'); var play = document.getElementById('play'); play.addEventListener('click', function() { audio.play(); }, false); var pause = document.getElementById('pause'); pause.addEventListener('click', function() { audio.pause(); }, false); var volume = document.getElementById('volume'); volume.addEventListener('change', function(){ audio.volume = parseFloat(this.value / 10); }, false); audio.addEventListener("timeupdate", function() { var duration = document.getElementById('duration'); var s = parseInt(audio.currentTime % 60); var m = parseInt((audio.currentTime / 60) % 60); var h = parseInt((audio.currentTime / 3600) % 60); if (s < 10) s = '0' + s; if (m < 10) m = '0' + m; if (h < 10) h = '0' + h; duration.innerHTML = h + ':' + m + ':' + s; }, false); </script> <script language="JavaScript"> function show() { $.ajax({ url: "trackname.php", cache: false, success: function(html){ $("#title").html(html); } }); } $(document).ready(function(){ show(); setInterval('show()',5000); }); </script> </body> </html> 

Este es el ejemplo más simple de crear un reproductor para un sitio, también puede mostrar el nombre de la composición actual, actualizada con ajax cada 5 segundos.

La apariencia se puede terminar al gusto usando CSS.

El código muestra que la transmisión de audio ya va a la dirección especificada en el DNS de mi dominio.
No olvides soltar el archivo jquery en el directorio (en mi caso jquery-3.3.1.min.js). En general, por supuesto, jquery es demasiado aquí y uno podría hacer una solicitud de Ajax sin él, pero resultó ser demasiado vago para pensar y utilicé un código listo.

A continuación, cree el archivo "trackname.php" :

 <?php echo file_get_contents('http://192.168.0.90/mpc');?> 

También en la raíz del servidor web creamos el directorio "mpc" y el archivo "index.php" en él:

 <?php echo exec('mpc current');?> 

Por qué algunos pueden pedir esas muletas, el hecho es que en mi estación de radio militar el servidor del jugador está en el mismo servidor, y la cara web del sitio está en un servidor web físicamente diferente.



Como debe interrogar la pista que se está reproduciendo directamente en el servidor con el reproductor, el directorio del servidor web mpc debe estar en él, y el archivo "trackname.php" está en el servidor web del sitio y carga el archivo con la descripción de la pista desde otro servidor a su dirección IP.

El reproductor en sí y el sitio de la estación de radio pueden estar muy separados y comunicarse tanto en direcciones IP externas como en direcciones obstruidas con DNS. Para que todo funcione, solo necesita reenviar los puertos correctamente.

Puedes modificar el proyecto a tu gusto, bueno, tuve un agradable sábado por la tarde.
¡Todos los experimentos exitosos!

UPD2: Un experimento de una semana llegó a su conclusión lógica y apagué mi mini servidor con una estación de radio.

Source: https://habr.com/ru/post/es426349/


All Articles