Nous créons une station de radio Internet simple, compacte et bon marché

Linux sera la plate-forme logicielle, pour plus de simplicité, il vaut mieux utiliser quelque chose de commun, avec beaucoup d'informations sur Internet, en cas de problème. Le fer à repasser pour une station de radio Internet peut être n'importe quoi, un serveur à part entière avec vos projets, un vieil ordinateur portable ou un netbook, nous voulons pas cher, et nous n'avons pas besoin de performances spéciales de fer.

Si vous n’avez rien sous la main ou si nous avons besoin d’un serveur complètement silencieux, pourquoi ne pas essayer d’utiliser un mini-ordinateur?

Quelque chose comme le Raspberry Pi 3?

Non, nous voulons moins cher, nous avons donc besoin de quelque chose comme Orange Pi. J'ai trouvé un modèle Orange Pi Pc Plus avec 1 Go de RAM DDR3 et 8 Go de mémoire Flash EMMC.



UPD: Hier, tout le monde a en quelque sorte pris l'article trop au sérieux, mais en fait, l'expérience a été menée pour le bien des fans, pour voir si cela fonctionne ou non. Naturellement, on ne parle d'aucune utilisation «industrielle», c'est comme essayer de sonder le stade avec un centre musical ordinaire.

De quoi d'autre pouvons-nous avoir besoin?

Je veux essayer de tout configurer de manière simple, j'ai donc toujours besoin d'un câble à paire torsadée vers le routeur et une carte mémoire Micro SD, car je ne peux pas installer le système d'exploitation directement sur le micro-ordinateur. J'ai trouvé une carte mémoire pour 8 gigaoctets, ce montant est bien suffisant.

Donc, tout d'abord, vous devez écrire l'image du système d'exploitation sur la carte mémoire.
Pour les serveurs, je préfère utiliser la Debian éprouvée (oui, la jeune génération préfère probablement CentOS, mais la barbe grise conviendra avec moi que Debian est toujours très bonne).

En général, il y a beaucoup d'images prêtes à l'emploi pour Orange Pi sur www.orangepi.org/downloadresources , mais je vais toujours sur www.armbian.com/download et télécharge le fichier torrent depuis armbian depuis dl.armbian.com/orangepipcplus (dans le mien cas de Debian_stretch_next.7z).

J'ai Orange Pi Pc Plus, vous pouvez avoir n'importe quel autre mini-ordinateur, alors recherchez l'image appropriée.

Après le téléchargement, décompressez l'archive et voyez l'image au format img. Quiconque veut de quoi remplir l'image, je préfère personnellement Etcher (https://etcher.io). Nous avons inséré une carte mémoire, l'avons sélectionnée si vous avez plusieurs médias connectés, cliquez sur le bouton de couture, entrez le mot de passe si vous avez également Linux sur votre ordinateur de bureau ou portable.



La carte avec l'image est prĂŞte, vous pouvez commencer Ă  tout connecter.
De quoi avons-nous besoin pour démarrer et commencer la configuration de notre serveur?
Le mini-ordinateur lui-même, Internet via un câble Ethernet et une alimentation électrique.
Et c'est tout.

Non, bien sûr, vous pouvez être confus, connecter le moniteur et le clavier et tout configurer directement, mais j'aime davantage le clavier de mon ordinateur portable, donc je vais configurer mon mini-ordinateur à distance, via SSH.

Alors, commençons, on colle le câble Ethernet, une carte Micro SD avec une image Armbian.
Il ne reste plus qu'Ă  alimenter le mini-ordinateur.

Mais avec la puissance de l'Orange Pi, tout est très triste. Qu'y a-t-il sur un mini-ordinateur normal? C'est vrai, Micro-USB, mais comment puis-je alimenter l'Orange Pi? Seulement 5V via un connecteur à broches, qui est acheté séparément.

Un adaptateur secteur avec un connecteur approprié coûte plus qu'un simple câble avec un port USB standard à la fin, vous pouvez donc le prendre.

S'il n'y a pas d'alimentation gratuite avec USB (et nous n'en avons pas besoin de toute façon, mais pour 2 ampères), alors nous fouillons dans notre boîte avec des fils, des adaptateurs et des cartes pour ordinateurs (vous avez une telle boîte, non?) Et trouvez un adaptateur approprié à partir de certains vieux, longtemps cassés par une tablette enfant, soudez le câble et l'alimentation de notre serveur est prête.

Eh bien, ou prenez simplement le chargeur de l'ancien lecteur mp3 à disque iRiver (il ne fait que 4,7 volts et 1,2 ampères mais il fonctionne également).

Nous servons de la nourriture et nous sommes prêts à passer, en fait, à celui pour lequel tout a été conçu, à la création d'une station de radio Internet.

Si vous, comme moi, avez l'intention de vous débrouiller avec un minimum de périphériques, alors nous devons savoir quelle adresse IP a reçu notre mini-ordinateur. Le moyen le plus simple de le découvrir est d'aller sur votre routeur et de voir quelle adresse IP le routeur a donné à notre serveur (votre routeur peut faire DHCP, non?).

Vous pouvez maintenant vous connecter via SSH Ă  notre serveur. Celui qui utilise le client SSH est celui Ă  utiliser (vous n'avez jamais Windows, mais je ne sais pas ce que font les clients SSH).
Dans mon cas, je viens de marteler la console ssh root@192.168.0.88, j'accepte d'ajouter la clé ECDSA, le mot de passe par défaut pour root est réglé sur "1234", après la connexion, on se retrouve dans la console du micro-ordinateur, ce qui suggère immédiatement de changer le mot de passe root.



Après cela, il est proposé de créer un compte utilisateur non privilégié, nous le créons.
Par rapport aux versions précédentes du système d'exploitation, la version actuelle est quelque peu simplifiée en termes de paramètres et beaucoup de choses sont déjà configurées automatiquement.

Armbian dispose d'un outil de configuration très pratique: armbian-config copie la commande sur la console et voit ce qui peut être utile.



Nous n'avons pas encore besoin des paramètres système, mais ils peuvent être nécessaires plus tard, par exemple, pour transférer le système configuré de Micro SD vers la mémoire Flash EMMC 8 Go intégrée d'un mini-ordinateur.

La section Réseau nous sera utile, mais ce serait bien d'avoir une adresse IP statique pour le serveur. Notre station de radio Internet peut être connectée au réseau même via Wi-Fi. Tout le monde se fixe le niveau de perversité, mais si vous construisez une radio Internet uniquement pour vous et qu'il n'y a pas de plan pour plus de 10 auditeurs en même temps, alors pourquoi ne pas prendre notre serveur via Wi-Fi? Dans les cas extrêmes, vous pouvez à tout moment brancher un câble Ethernet.

Nous avons donc décidé du type de connexion.Nous devons maintenant configurer une adresse IP statique.Pour cela, nous allons dans les paramètres IP et sélectionnons l'interface réseau souhaitée, après quoi nous disons que nous voulons une adresse statique, démarrez-la et enregistrez les paramètres. Il n'est pas nécessaire de changer le masque et la passerelle, car ils sont reçus de votre routeur via DHCP.



Après avoir entré une nouvelle adresse IP et appuyé sur Entrée, votre session SSH se bloquera immédiatement, car l'appareil aura immédiatement une nouvelle adresse IP. Par conséquent, nous fermons simplement la fenêtre avec le terminal et allons à notre mini-ordinateur via SSH en utilisant la nouvelle adresse IP.

Soit dit en passant, puisque toutes les fonctions que nous avons seront de nature administrative, afin de ne pas écrire constamment avant chaque commande sudo, je me connecte simplement au mini-ordinateur en tant que root.

En exécutant à nouveau armbian-config , pouvons-nous voir quoi d'autre peut être configuré? Dans la section Personnel, nous pouvons configurer le fuseau horaire, les paramètres régionaux et le nom d'hôte. J'ai ajouté les paramètres régionaux ru_RU.UTF-8 UTF-8, qui seront utiles.

Pour que les paramètres s'appliquent, vous devez quitter l'utilitaire de configuration, vous déconnecter et vous reconnecter, ou redémarrer le serveur avec la commande reboot.

J'ai utilisé la commande de redémarrage pour m'assurer que les paramètres ont été enregistrés et que le serveur a démarré avec succès.

La configuration de base du serveur a été effectuée et pourquoi ne pas installer le système d'exploitation avec MicroSD OS sur la mémoire flash interne EMMC? Bien sûr, si votre mini-ordinateur a cette mémoire à bord.

Pour ce faire, accédez à armbian-config - Système - Installer, sélectionnez le lecteur disponible, appuyez sur Entrée, obtenez les salutations du passé, acceptez et sélectionnez le type de système de fichiers ext4.



Maintenant, nous pouvons nous asseoir et attendre que le système d'exploitation soit transféré vers la mémoire interne du mini-ordinateur.



Une fois la copie terminée, choisissez de couper l'alimentation. Nous attendons quelques secondes jusqu'à ce que le voyant du mini-ordinateur s'éteigne, coupez l'alimentation, retirez la carte microSD, rebranchez l'alimentation et allumez l'ordinateur.

Oui, si vous n'avez pas de mémoire interne et que vous n'y avez pas transféré le système d'exploitation, retirer un MicroSD n'est probablement pas une bonne idée.

Après vous être connecté à notre mini-ordinateur via SSH et vous être assuré que tout fonctionne, vous pouvez commencer à régler la station de radio elle-même.

Tout d'abord, nous mettons à jour les informations du package en lançant apt update dans la console du serveur.

Oui, j'aime le confort, donc j'installe mc avec la commande apt install mc .
J'aime tout faire sous mc, et si j'ai besoin de voir la console, j'appuie simplement sur ctrl + o.

Tout d'abord, installez le lecteur de musique démon lui-même: apt install mpd .
Un tas de dépendances sera installé avec elle.

Passons à la configuration. Le fichier /etc/mpd.conf est responsable de la configuration du démon, ouvrez-le avec la nano /etc/mpd.conf .

Mon nom d'utilisateur est sans privilèges hzs, et mon fichier de configuration ressemble à ceci:

 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" 

Tout est clair ici et sans commentaires particuliers.

Pour travailler, vous devez créer une structure de répertoires à partir du haut des paramètres. Veuillez noter que le propriétaire de ces répertoires doit être un utilisateur non privilégié, de qui tout fonctionnera, dans mon cas hzs.

Depuis root, exécutez les commandes suivantes:

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

Il est temps de télécharger de la musique, nous avons SSH sur le serveur, afin que nous puissions connecter notre client FTP préféré à notre serveur.

Nous savons que l'adresse IP, le port 22, le nom d'utilisateur et le mot de passe sont ceux que vous avez spécifiés lors de la création de l'utilisateur non privilégié, le type de connexion SSH. Versez de la musique pour le test dans le répertoire de la musique spécifiée dans la configuration.



Maintenant, le joueur est démarré avec la mauvaise configuration, donc nous arrêtons le démon et le redémarrons:

service mpd stop
service mpd start

Pour le contrôle le plus simple du démon, nous allons apt install mpc console apt install mpc à l'aide de la commande apt install mpc .

Après l'installation, nous allons configurer un peu le lecteur:

mpc random on
mpc repeat on

Maintenant, vous devez ajouter des pistes et une liste de lecture, dans la console, c'est un peu gimmorro, mais rien ne peut ĂŞtre fait.

Nous regardons les fichiers Ă  notre disposition, que nous pouvons ajouter Ă  la playlist:

mpc ls

Pour ajouter un fichier à la playlist, dans la commande mpc add nous devons spécifier le nom complet du fichier à ajouter, la sélection par masque ne fonctionne pas:

mpc add "01 Lost in Your Eyes.mp3"

Nous regardons la playlist résultante:

mpc playlist

Il est temps de lancer notre radio:

mpc play



Essayons d'écouter, pour cela, dans n'importe quel lecteur audio, ouvrons le flux audio de notre station de radio. Pour ce faire, entrez l'adresse du flux http://ip:port , je l'ai http://192.168.0.90:8000 .

Audacious jouait par intermittence, il y avait un problème avec la mise en cache, mais SMPlayer et VLC ne ressentaient aucun problème.







En principe, à ce stade, notre station de radio Internet fonctionne déjà, vous devez ajouter de la musique à la liste de lecture et transférer les ports sur le routeur afin que notre station de radio Internet devienne une station de radio Internet et non une radio du réseau local.

J'ai plusieurs domaines, donc la première chose que je fais dans les paramètres DNS est de créer un enregistrement «A» avec testradio et l'adresse IP externe statique de mon routeur à la maison. Vous n'êtes pas obligé de le faire.

Ensuite, sur mon routeur, je configure la redirection de port.

Comme j'ai déjà ma propre station de radio sur un grand serveur, je spécifie le port source externe 9000 et le port local interne 8000, donc de l'extérieur, la radio diffusera via http://_ip:9000 .



Voilà, maintenant nous avons une «vraie» station de radio Internet.

Si vous ne voulez pas vous arrĂŞter lĂ , allez plus loin.

Nous ne diffusons pas la voix du DJ, mais si nécessaire, elle peut être implémentée, mais ce dont nous avons vraiment besoin, c'est d'une interface de gestion de playlist pratique.

Il existe des tonnes de consoles de gestion, certaines peuvent être consultées ici , mais j'utiliserai le client Pitchfork MPD .

Il s'agit d'un museau Web à part entière, et oui, nous allons tirer un pistolet sur les moineaux et élever un serveur http à part entière sur un mini-ordinateur avec notre station de radio:

apt install apache2

Nous aurons également besoin de PHP:

apt-get install php

Encore besoin

apt install php7.0-xml

et

apt install php-pear

Nous créons le répertoire / home / hzs / wwwroot / pf dans le dossier home et décompressons dans celui-ci le client MPD Pitchfork précédemment chargé via SSH.



Dans le fichier de configuration du serveur Web apache2 /etc/apache2/sites-available/000-default.conf
nano /etc/apache2/sites-available/000-default.conf
nous tondons tout et écrivons (n'oubliez pas de changer «hzs» en votre nom d'utilisateur):

 <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> 

Ensuite, nous redémarrons le serveur http

service apache2 restart

En allant Ă  l'adresse de votre serveur IP / pf (dans mon cas: http://192.168.0.90/pf )

Nous verrons le panneau de contrĂ´le:



Tout est assez simple et intuitif.

Ensuite, cliquez sur l'icône du dossier à droite et sur l'onglet Système de fichiers.

Pour mettre à jour la liste des fichiers, cliquez sur le bouton Mettre à jour la base de données, puis sélectionnez les fichiers restants que nous n'avons toujours pas dans la liste de lecture et cliquez sur le bouton Ajouter un peu plus bas.

Nous actualisons la page et constatons que tous les fichiers que nous avons ajoutés à la playlist:



Si vous devez masquer le contrĂ´le du lecteur avec un mot de passe, vous pouvez modifier le fichier de configuration:

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

Il existe une structure de paramètres parfaitement compréhensible.

Nous avons donc un serveur de serveur de radio Internet à part entière mesurant 10 * 7 * 3 centimètres. Bien sûr, le serveur basse consommation utilisé n'attirera pas des centaines d'auditeurs, mais au moins il ne vous laissera pas sans votre musique préférée où que vous soyez, s'il y a Internet à proximité.

En principe, vous ne pouvez pas continuer à lire, mais pour ceux qui sont particulièrement persistants, nous continuons.
Nous avons un serveur web complet, pourquoi ...
Eh bien, vous comprenez déjà.

Créez le répertoire testradio à la racine de notre serveur web, créez-y le fichier "index.php" :

 <!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> 

Il s'agit de l'exemple le plus simple de création d'un lecteur pour un site, il peut également afficher le nom de la composition actuelle, mis à jour avec ajax toutes les 5 secondes.

L'apparence peut être finie au goût en utilisant CSS.

Le code montre que le flux audio va déjà à l'adresse spécifiée dans le DNS de mon domaine.
N'oubliez pas de déposer le fichier jquery dans le répertoire (dans mon cas jquery-3.3.1.min.js). En général, bien sûr, jquery est trop ici et on pourrait faire une demande ajax sans cela, mais il s'est avéré trop paresseux pour penser et j'ai utilisé un morceau de code prêt à l'emploi.

Ensuite, créez le fichier "trackname.php" :

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

Toujours à la racine du serveur Web, nous créons le répertoire «mpc» et le fichier "index.php" :

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

Pourquoi certains peuvent demander de telles béquilles, le fait est que dans ma station de radio militaire, le serveur du joueur est sur le même serveur, et la face Web du site est sur un serveur Web physiquement différent.



Étant donné que vous devez interroger la piste en cours de lecture directement sur le serveur avec le lecteur, le répertoire du serveur Web mpc doit s'y trouver et le fichier "trackname.php" trouve sur le serveur Web du site lui-même et télécharge le fichier avec la description de la piste d'un autre serveur vers son adresse IP.

Le lecteur lui-même et le site de la station de radio peuvent être très éloignés et communiquer à la fois sur des adresses IP externes et sur des adresses obstruées par DNS. Pour que tout fonctionne, il vous suffit de transférer correctement les ports.

Vous pouvez modifier le projet à votre guise, eh bien, j'ai passé un agréable samedi après-midi.
Toutes les expériences réussies!

UPD2: Une expérience d'une semaine est arrivée à sa conclusion logique et j'ai éteint mon mini serveur avec une station de radio.

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


All Articles