O Linux será a plataforma de software. Para simplificar, é melhor usar algo comum, com muitas informações na Internet, se algo der errado. O ferro para uma estação de rádio da Internet pode ser qualquer coisa, um servidor completo com seus projetos, um laptop ou netbook antigo, queremos barato e não precisamos de um desempenho especial do ferro.
Se você não tem nada em mãos ou precisamos de um servidor completamente silencioso, por que não tentar usar um mini computador?
Algo como o Raspberry Pi 3?
Não, queremos mais barato, por isso precisamos de algo como o Orange Pi. Encontrei um modelo Orange Pi Pc Plus com 1 GB de RAM DDR3 e 8 GB de flash EMMC.

UPD: Ontem, todo mundo de alguma forma levou o artigo muito a sério, mas, na verdade, o experimento foi conduzido pelo bem dos fãs, para ver se funciona ou não. Naturalmente, não se fala em nenhum uso "industrial", é como tentar tocar o estádio com um centro de música comum.
Do que mais podemos precisar?
Quero tentar configurar tudo de uma maneira simples, para que ainda precise de um cabo de par trançado no roteador e um cartão de memória Micro SD, pois não consigo instalar o sistema operacional diretamente no microcomputador. Eu encontrei um cartão de memória para 8 gigabytes, essa quantidade é suficiente.
Portanto, primeiro, você precisa gravar a imagem do sistema operacional no cartão de memória.
Para servidores, eu prefiro usar o Debian testado pelo tempo (sim, a geração mais jovem provavelmente prefere o CentOS, mas os grisalhos concordam comigo que o Debian ainda é muito bom).
Em geral, existem muitas imagens prontas para o Orange Pi em
www.orangepi.org/downloadresources , mas ainda vou a
www.armbian.com/download e
baixo o arquivo torrent do armbian em dl.armbian.com/orangepipcplus (no meu caso Debian_stretch_next.7z).
Eu tenho o Orange Pi Pc Plus, você pode ter qualquer outro mini computador, então procure a imagem apropriada.
Após o download, descompacte o arquivo e veja a imagem no formato img. Qualquer pessoa que queira preencher com a imagem, eu pessoalmente prefiro o Etcher (https://etcher.io). Inserimos um cartão de memória, o selecionamos se você tiver várias mídias conectadas, clique no botão costurar, digite a senha se também tiver Linux no seu desktop ou laptop.

O cartão com a imagem está pronto, você pode começar a conectar tudo.
O que precisamos para iniciar e começar a configurar nosso servidor?
O mini computador em si, Internet via fio Ethernet e fonte de alimentação.
E é isso.
Não, é claro que você pode ficar confuso, conectar o monitor e o teclado e configurar tudo diretamente, mas eu gosto mais do teclado do meu laptop, portanto, configurarei meu minicomputador remotamente, via SSH.
Então, vamos começar, ficamos no cabo Ethernet, um cartão Micro SD com uma imagem Armbian.
Resta apenas fornecer energia ao minicomputador.
Mas com o poder do Orange Pi, tudo é muito triste. O que está em um mini computador normal? É isso mesmo, Micro-USB, mas como posso ligar o Orange Pi? Apenas 5V através de um conector de pinos, que é comprado separadamente.
Um adaptador de energia com um conector adequado custa mais do que apenas um cabo com USB padrão no final, para que você possa usá-lo.
Se não houver fonte de alimentação gratuita com USB (e não precisamos, de qualquer forma, mas por 2 amperes), remexemos em nossa caixa com fios, adaptadores e placas para computadores (você tem essa caixa, certo?) E encontre um adaptador adequado em alguns antigos, quebrados há muito tempo por um tablet infantil, soldam o cabo e a energia do servidor está pronta.
Bem, ou apenas pegue o carregador do antigo mp3 player de disco iRiver (são apenas 4,7 volts e 1,2 amperes, mas também funciona).
Estamos servindo comida e estamos prontos para mudar, de fato, para aquele para o qual tudo foi concebido, para a criação de uma estação de rádio na Internet.
Se você, como eu, pretende conviver com um mínimo de periféricos, precisamos descobrir qual endereço IP nosso mini computador recebeu. A maneira mais fácil de descobrir isso é acessar o seu roteador e ver o endereço IP que o roteador forneceu ao nosso servidor (seu roteador pode fazer DHCP, certo?).
Agora você pode fazer login via SSH em nosso servidor. Quem usa o cliente SSH é quem deve usar (você nunca tem o Windows, mas eu não sei o que os clientes SSH fazem).
No meu caso, apenas martelo no console ssh root@192.168.0.88, concordo em adicionar a chave ECDSA, a senha padrão do root é definida como "1234". Após o login, nos encontramos no console do microcomputador, o que sugere imediatamente a alteração da senha do root.

Depois disso, propõe-se criar uma conta de usuário sem privilégios, nós a criamos.
Comparada às versões anteriores do sistema operacional, a versão atual é um pouco simplificada em termos de configurações e muitas coisas já estão configuradas automaticamente.
O Armbian possui uma ferramenta de configuração muito conveniente: o
armbian-config
copia o comando para o console e vê o que pode ser útil.

Ainda não precisamos das configurações do sistema, mas podem ser necessárias posteriormente, por exemplo, para transferir o sistema configurado do Micro SD para a memória Flash EMMC de 8 GB incorporada de um mini computador.
A seção Rede será útil para nós, mas seria bom ter um endereço IP estático para o servidor. Nossa estação de rádio na Internet pode ser conectada à rede mesmo via Wi-Fi. Todo mundo define o nível de perversidade para si mesmo, mas se você constrói um rádio na Internet exclusivamente para si e não há planos para mais de 10 ouvintes ao mesmo tempo, por que não colocar nosso servidor em Wi-Fi? Em casos extremos, você pode conectar um cabo Ethernet a qualquer momento.
Então, decidimos o tipo de conexão, agora precisamos configurar um endereço IP estático, para isso vamos às configurações de IP e selecionamos a interface de rede desejada, após o que dizemos que queremos um endereço estático, inicie-o e salve as configurações. Não é necessário alterar a máscara e o gateway, pois eles são recebidos do seu roteador via DHCP.

Depois de inserir um novo endereço IP e pressionar Enter, sua sessão SSH será congelada imediatamente, pois o dispositivo terá imediatamente um novo endereço IP. Portanto, simplesmente fechamos a janela com o terminal e acessamos nosso mini-computador via SSH usando o novo endereço IP.
A propósito, como todas as funções que temos serão de natureza administrativa, para não escrever constantemente antes de cada comando sudo, basta fazer login no minicomputador como root.
Ao executar o
armbian-config
novamente, podemos ver o que mais pode ser configurado? Na seção Pessoal, podemos configurar o fuso horário, a localidade e o nome do host. Adicionei o local ru_RU.UTF-8 UTF-8, que será útil.
Para que as configurações sejam aplicadas, é necessário sair do utilitário de configuração, sair e efetuar login novamente ou reiniciar o servidor com o comando reboot.
Usei o comando reboot para garantir que as configurações foram salvas e o servidor iniciado com êxito.
A configuração básica do servidor foi feita e por que não instalar o sistema operacional com o MicroSD OS na memória Flash interna do EMMC? Obviamente, se o seu mini computador tiver essa memória a bordo.
Para fazer isso, vá para
armbian-config
- System - Install, selecione a unidade disponível, pressione Enter, receba cumprimentos do passado, concorde e selecione o tipo de sistema de arquivo ext4.

Agora podemos sentar e esperar até que o sistema operacional seja transferido para o armazenamento interno do minicomputador.

Após a conclusão da cópia, escolha desligar a energia. Aguardamos alguns segundos até o LED do mini computador se apagar, desligar a alimentação, remover o cartão microSD, reconectar a alimentação e ligar o computador.
Sim, se você não possui memória interna e não transferiu o sistema operacional para ele, retirar um MicroSD provavelmente não é uma boa ideia.
Depois de fazer login no nosso mini-computador via SSH e garantir que tudo funcione, você pode começar a sintonizar a própria estação de rádio.
Primeiro, atualizamos as informações do pacote, direcionando o
apt update
para o console do servidor.
Sim, eu amo o conforto, por isso instalo o mc com o comando
apt install mc
.
Gosto de fazer tudo sob mc e, se precisar ver o console, basta pressionar ctrl + o.
Primeiro, instale o próprio demon music player:
apt install mpd
.
Um monte de dependências serão instaladas com ele.
Vamos seguir em frente. O arquivo /etc/mpd.conf é responsável pela configuração do daemon, abra-o com o
nano /etc/mpd.conf
.
Meu nome de usuário não tem privilégios hzs e meu arquivo de configuração é mais ou menos assim:
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"
Tudo está claro aqui e sem comentários especiais.
Para funcionar, você precisa criar uma estrutura de diretórios a partir da parte superior das configurações. Observe que o proprietário desses diretórios deve ser um usuário sem privilégios, de quem tudo funcionará, no meu caso hzs.
Na raiz, execute os seguintes comandos:
chown -cR hzs:hzs /home/hzs/music
chown -cR hzs:hzs /home/hzs/.mpd
É hora de fazer upload de músicas, temos SSH no servidor, para que possamos conectar nosso cliente FTP favorito ao nosso servidor.
Sabemos o endereço IP, a porta 22, o nome de usuário e a senha que você especificou ao criar um usuário não privilegiado, o tipo de conexão SSH. Coloque algumas músicas para o teste no diretório de músicas especificadas na configuração.

Agora o player é iniciado com a configuração errada, então paramos o daemon e o iniciamos novamente:
service mpd stop
service mpd start
Para o controle mais simples do daemon,
apt install mpc
utilitário
apt install mpc
console usando o comando
apt install mpc
.
Após a instalação, configuraremos um pouco o player:
mpc random on
mpc repeat on
Agora você precisa adicionar faixas e uma lista de reprodução, no console é um pouco gimmorro, mas nada pode ser feito.
Examinamos os arquivos disponíveis, que podemos adicionar à lista de reprodução:
mpc ls
Para adicionar um arquivo à lista de reprodução, no comando
mpc add
, precisamos especificar o nome completo do arquivo a ser adicionado, a seleção por máscara não funciona:
mpc add "01 Lost in Your Eyes.mp3"
Observamos a lista de reprodução resultante:
mpc playlist
É hora de lançar nossa estação de rádio:
mpc play

Vamos tentar ouvir, para isso, em qualquer reprodutor de áudio, abrir o fluxo de áudio da nossa estação de rádio. Para fazer isso, digite o endereço do fluxo
http://ip:port
, eu tenho
http://192.168.0.90:8000
.
O Audacious tocou de forma intermitente, houve um problema com o cache, mas o SMPlayer e o VLC não apresentaram problemas.



Em princípio, nesta fase, nossa estação de rádio da Internet já está funcionando, é necessário adicionar música à lista de reprodução e encaminhar as portas do roteador para que nossa estação de rádio da Internet se torne uma estação de rádio da Internet e não um rádio na rede local.
Como tenho vários domínios, a primeira coisa que faço nas configurações de DNS é criar um registro “A” com testradio e o endereço IP externo estático do meu roteador em casa. Você não precisa fazer isso.
Em seguida, no meu roteador, eu configuro o encaminhamento de porta.
Como eu já tenho minha própria estação de rádio em um servidor grande, especifique a porta de origem externa 9000 e a porta local interna 8000, portanto, de fora do rádio será transmitido via
http://_ip:9000
.

É isso, agora temos uma estação de rádio na Internet "real".
Se você não quiser parar por aí, vá mais longe.
Não transmitimos a voz do DJ, mas, se necessário, ela pode ser implementada, mas o que realmente é necessário é uma interface de gerenciamento de playlist conveniente.
Existem toneladas de consoles de gerenciamento, alguns podem ser
visualizados aqui , mas usarei o
Pitchfork MPD Client .
Este é um focinho da web completo e, sim, dispararemos uma arma nos pardais e criaremos um servidor http completo em um mini computador com a nossa estação de rádio:
apt install apache2
Também vamos precisar de PHP:
apt-get install php
Ainda precisa
apt install php7.0-xml
e
apt install php-pear
Criamos o diretório / home / hzs / wwwroot / pf na pasta inicial e descompactamos nele o Pitchfork MPD Client carregado anteriormente via SSH.

No arquivo de configuração do servidor web apache2 /etc/apache2/sites-available/000-default.conf
nano /etc/apache2/sites-available/000-default.conf
cortamos tudo e escrevemos (não esqueça de mudar "hzs" para o seu nome de usuário):
<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>
Então reiniciamos o servidor http
service apache2 restart
Indo para o endereço do seu servidor IP / pf (no meu caso:
http://192.168.0.90/pf
)
Vamos ver o painel de controle:

Tudo é bastante simples e intuitivo.
Em seguida, clique no ícone da pasta à direita e na guia Sistema de arquivos.
Para atualizar a lista de arquivos, clique no botão Atualizar banco de dados, selecione os arquivos restantes que ainda não temos na lista de reprodução e clique no botão Adicionar um pouco mais.
Atualizamos a página e vemos que todos os arquivos que adicionamos à playlist:

Se você precisar ocultar o controle do player com uma senha, poderá editar o arquivo de configuração:
nano /home/hzs/wwwroot/pf/config/config.xml
Existe uma estrutura de configurações completamente compreensível.
Portanto, temos um servidor de servidor de rádio na Internet completo medindo 10 * 7 * 3 centímetros. Obviamente, o servidor de baixa potência usado não atrai centenas de ouvintes, mas pelo menos não o deixa sem a sua música favorita onde quer que esteja, se houver Internet por perto.
Em princípio, você não pode continuar lendo, mas para aqueles que são especialmente persistentes, continuamos.
Temos um servidor web completo, por que ...
Bem, você já entende.
Crie o diretório testradio na raiz do nosso servidor web, crie o arquivo
"index.php"
nele:
<!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 é o exemplo mais simples de criação de um player para um site. Ele também pode exibir o nome da composição atual, atualizada com ajax a cada 5 segundos.
A aparência pode ser finalizada a gosto usando o css.
O código mostra que o fluxo de áudio já está indo para o endereço especificado no DNS do meu domínio.
Não esqueça de soltar o arquivo jquery no diretório (no meu caso, jquery-3.3.1.min.js). Em geral, é claro, o jquery é demais aqui e é possível fazer uma solicitação do ajax sem ele, mas acabou sendo muito preguiçoso para pensar e eu usei um código já pronto.
Em seguida, crie o arquivo
"trackname.php"
:
<?php echo file_get_contents('http://192.168.0.90/mpc');?>
Também na raiz do servidor web, criamos o diretório "mpc" e o arquivo
"index.php"
:
<?php echo exec('mpc current');?>
Por que alguns podem pedir muletas, o fato é que, na minha estação de rádio militar, o servidor do jogador está no mesmo servidor e a face da web do site está em um servidor da web fisicamente diferente.

Como você precisa interrogar a faixa que está sendo reproduzida diretamente no servidor com o player, o diretório do servidor da web mpc deve estar nele e o arquivo
"trackname.php"
está no servidor da web do próprio site e faz o upload do arquivo com a descrição da faixa de outro servidor para o seu endereço IP.
O próprio reprodutor e o site da estação de rádio podem estar muito distantes e se comunicar tanto em endereços IP externos quanto em endereços obstruídos pelo DNS. Para que tudo funcione, você só precisa encaminhar as portas corretamente.
Você pode modificar o projeto ao seu gosto, bem, tive uma agradável tarde de sábado.
Todas as experiências bem-sucedidas!
UPD2: Um experimento de uma semana chegou à sua conclusão lógica e eu desligo meu mini servidor com uma estação de rádio.