Vous en avez marre d’entendre la musique de 2020 passé sur les radios mainstream , vous avez une collection de MP3. Vous aimez faire des playlists et vous avez un ordinateur qui traine dans un coin. Pourquoi ne pas faire une webradio à la maison.
Aujourd’hui, je vais vous montrer comment faire une webradio in da house. Le logiciel que je vais utiliser se nomme AZURA!cast, mais je ne sais pas pourquoi (si vous avez la ref * vous faites parti de l’élite). Donc, il est temps d’aller vers le futur ou le passé.
Prérequis
Le matos qu’il vous faut:
Un ordinateur avec un processeur 4 cœurs et 4go de ram avec une distribution linux.
ou un raspberry pi récent (sans doute un 5).
Un espace disque minimum 8go (même s’il préconise 40go,mais je vous expliquerai le pourquoi un peu plus loin).
Container lxc promox
Personnellement j’utilise un container lxc sur proxmox. Je montre cette étape, mais si vous avez un raspberry pi ou ordi avec linux dessus, passer à l’installation.
Je clique sur create container. Je mets un nom dans hostname et un mot de passe. Laisser cocher unpriviliged container et surtout nesting (comme lxc est déjà un container et que docker est aussi un container; on fait dans ce cas-là un nesting(un container dans un container)).
Je choisis un template que j’ai préalablement téléchargé.
Je mets 40 go. C’est ce qui est recommandé dans la Doc. En vérité, on peut mettre 8go, car le reste sert à stocker les médias.
La Doc demande un CPU 4 cores, donc je m’exécute.
La mémoire demandée est de 4 go. Sachez que d’après mes tests sur le container. Il ne consommera que 1 go de mémoire. Sachant qu’un container ne consomme que quelques mo. Par conséquent, la consommation de mémoire est très importante.
Là, je lui attribue comme traditionnellement une IP fixe.
On ne met rien.
Finalement on a le récap et n’oubliez pas de cocher la case start After created
Je crée un utilisateur que je vais appeler toto. Je le fais, car par défaut, on ne peut pas se connecter en SSH avec root (ce qui est normal).
adduser toto
adduser toto sudo
#Si vous voulez vous connecter par la suite en ssh par exemple
ssh toto@192.168.18
Installation d’azuracast
On va au préalable installer curl
sudo apt-get update
sudo apt-get install curl
sudo -s #pour passer en root
On crée un répertoire et on se positionne dessus
mkdir -p /var/azuracast
cd /var/azuracast
On télécharge le script d’installation ; on rend le fichier exécutable et on exécute le script.
curl -fsSL https://raw.githubusercontent.com/AzuraCast/AzuraCast/main/docker.sh > docker.sh
chmod a+x docker.sh
./docker.sh install
Le script se lance et vous posera une série de questions.
Docker does not appear to be installed. Install Docker now? [Y/n]
Dire oui pour installer docker, car l’application fonctionne avec docker
Docker Compose v2 is already installed. Continuing...
Your current release channel is 'Rolling Release'. Switch to 'Stable' release channel? [y/N]
À la question suivante…
You should update the Docker Utility Script after changing release channels. Automatically update it now? [Y/n]
Si vous êtes 🇫🇷 taper fr fr
Select Language
fr_FR
Dite non (même si le nombre de ports radio est hallucinant)
Si vous avez dit oui, vous aurez les questions suivantes
Ayant testé de changer les ports. J’ai vu des erreurs se produire. Donc c’est juste pour info.
Activer code personnalisé: non
Dire oui
Une fois complété, azuracast vous donnera une adresse ip bidon. Connectez-vous sur l’ip de votre serveur. Dans mon exemple proxmox 192.168.1.18
Entrez l’adresse ip dans le navigateur et on arrive sur le panneau de connexion ou on rentre un mail et un MDP (mot de passe pour les intimes). (Pour le mail, vous ne recevrez pas de courrier bizarre par la suite comme prestashop par exemple)
Tapez le nom de la radio et changer le fuseau horaire.
Icecast ou hls ou les 2?
Après, vous avez le choix avec un serveur icecast et hls ou les 2.
Icecast est un serveur de diffusion ancien qui permet de diffuser sur un seul bitrate.
Hls permet de diffuser sur 3 bitrate. Les morceaux sont envoyés couper en plusieurs morceaux de 20 seconde par exemple. Ça permet aussi à ce que si la connexion est boiteuse d’avoir un débit qui s’adapte à votre réseau.
VLC est capable de lire icecast et hls (m3u) (pour les m3u; pas tous les équipements peuvent le lire)
autodj sera utile si vous n’avez pas fait une grille de programmation. L’auto dj mélangera les titres des playlists et les diffusera aléatoirement. (mettez l’auto dj directement au début et enlevez le fondu enchaîné)
Streamer dj permet de faire du live; je n’en parlerai pas mais c’est possible
Dans l’administration, on peut mettre le débit max d’icecast 320kbps (je peux ; je suis sur mon réseau local).
Je mets l’url et le nom de l’instance et l’historique de lecture sur 14 jours.
Là, je mets aucun car l’auditeur ; je le connais ; c’est moi 😄
Dans l’onglet service, on a l’annonce de mise à jour, la config pour avoir un certificat ssl , envoie de email, mot de passe oublié, gravatar et une fonction pour avoir les pochettes sur last fm.
On arrive sur cette page. Si vous cliquez sur gérer, vous rentrerez dans l’admin de votre station. gestion des stations permet de créer ou supprimer des stations. Le bouton administration vous montre d’autres paramètres.
Sur cette page ; on a pas mal d’option et des stat sur les performances du pc ; je ne vais pas entrer dans les détails. À vous de découvrir progressivement.
Voici les ressources que prend azuracast sur un container lxc qui en prend très peu.
Pour vous faire une idée des ressources utilisée sur un simple container lxc avec un serveur lamp et wordpress.
Entrez dans les entrailles de l’image docker
On va faire un peu de docker pour voir ce qu’azuracast mets dans notre bouzin (enfin pc).
J’ai regardé combien d’images sont téléchargé.
docker images
Nous avons 2 images ; une ; concerne le programme et l’autre sert aux update du programme. Comment j’ai su ? J’ai inspecté les deux images
docker image history image_id
On peut voir les technos utilisées. On y trouve du redis php et mariadb.
Une fois lancé les 2 images ça crée 2 containers. Ces containers sont lancé automatiquement par le script.
Et plusieurs volumes.
Le volume qui est le plus important est azuracast_station_data; car c’est dans celui-ci que sont enregistrés les médias. (vous verrez dans l’astuce proxmox que ça va être essentiel).
J’ai voulu savoir comment est constitué ces 2 images.
docker image inspect 7725e0ece438
J’ai vu que c’était un Linux, mais je veux savoir quelle distribution.
Bon, je refais un
docker ps
docker exec -it azuracast bash
Puis j’ai fait la commande suivante pour connaitre l’image de base.
lsb_release -a
Donc, on découvre que l’image de base est une debian 12 (pour sortir taper exit , de rien, c’est gratuit)
Gestion media
Pour ajouter des médias soit vous appuyez sur sélectionner fichier (ou simplement un glisser déposer). Soit, vous utilisez la méthode avec fstab (voir astuce proxmox).
Une fois que vous avez vos media, vous pouvez créer des playlists en faisant ajouter une playlist.
Il faudra ajouter des morceaux dans la playlist, pour cela, il faudra aller dans média et cliquer sur playlist. Vous ne pouvez pas organiser les morceaux. Ce que je conseille, c’est faire des dossiers avec une heure de musique puis les assigner à une playlist.
Autrement, vous pouvez mettre une playlist avec des radios généraliste.
Astuce pour proxmox
Personnellement j’ai un pc avec l’hyperviseur proxmox,j’ai 4 disques durs en zfs, j’ai plusieurs dataset. 2 dataset sert un pour os et l’autre pour enregistrer des données.dans le dataset os, j’ai un container ou j’ai installé un serveur dlna et dans l’autre dataset j’ai un disque virtuel ou je stocke ma musique (voir schéma ci-dessous).
Je voulais rapatrier ces médias sans faire une copie du disque virtuel et donc d’avoir des doublons. Sur proxmox,il est possible de partager un disque virtuel avec d’autres containers.
Certains diront de mettre un serveur samba et de partager la musique via le réseau. Cette solution est lente, car on doit passer par les réseaux. En faisant comme je fais, la communication se fait entre container donc beaucoup plus rapidement.
Pour connecter, il suffit de taper
pct set 112 -mp0 diskcont:100/vm-100-disk-0.raw,mp=/share
La commande va utiliser le container 112 et créer un point de montage /share dans le container auquel sera connecté au disque virtuel wm-100-0.raw du container 100.(diskcont est le directory se référer à mon article proxmox)
Après, il faut monter un dossier comme si c’était un disque dur.(cette méthode s’applique si vous avez un second disque dur avec tous vos media). Comme j’ai dit précédemment, le volume qui nous intéresse est azuracast_station_data. Les volumes se trouvent dans le dossier /var/lib/docker/volumes/.
Pour monter le dossier 2 méthode une temporaire et l’autre définitive.
mount --rbind /share/old /var/lib/docker/volumes/azuracast_station_data/_data/homeradio/media/test
Cette ligne de commande monte le dossier temporairement, pour rendre cela définitif, il faudra éditer le fichier /etc/fstab.
fstab
sudo nano /etc/fstab
#il faudra ajouter ces ligne sur le fichier (control shift v pour coller)
#/share/audio/best sera à remplacer par votre propre arborescence.
/share/audio/best /var/lib/docker/volumes/azuracast_station_data/_data/homeradio/media/best none bind
Sur proxmox, vous aurez cette ligne, mais n’en tenez pas compte ; ça fonctionnera quand même.
# UNCONFIGURED FSTAB FOR BASE SYSTEM
Activer la radio
Une fois qu’on a mis nos médias et créé nos playlists ; on peut activer la radio en cliquant sur démarrer la station.
On arrive sur la page de confirmation et on clique sur recharger la configuration et par la suite sur redémarrer la diffusion.
Il faudra recharger la configuration pour faire fonctionner icecast. Par contre, le flux hls ne fonctionnera pas, car si on va dans diffusion->flux hls. On remarque qu’on a aucun flux hls. deux solutions soit ajouter un flux hls soit désactiver tous les services en allant sur profil->modifier profil.Désactiver les services Sur l’onglet diffusion et l’onglet hls et cliquer sur sauvegarder. Puis réactiver les services et cliquez sur sauvegarder.
Pour lire la radio ; utilisez vlc (vlc acepte icecast et hls). L’adresse de la radio sera dans profil, elle aura une adresse comme celle-ci
https://ipdelaradio:8000/radio.mp3
ou
https://ipdelaradio/hls/homeradio/live.m3u8
Pour lire la radio ;ouvrir VLC ; allez dans média ->ouvrir un flux réseau et entrez une des adresses précédente.
Programmation
Maintenant que ça marche, vous pouvez créer une programmation avec vos playlists.
Par exemple, je reprends la playlist avec les infos.
Dans l’onglet planification, on définit une heure de début et de fin, on clique sur boucler une fois et les jours de diffusion de cette playlist.Et appuie sur sauvegarder.
Si on clique sur playlist et onglet calendrier, on peut la programmation complète.
reglage supplémentaire
Diffusion icecast
On peut choisir le débit de diffusion.
En cliquant sur éditer et sur l’onglet AutoDj, on peut choisir le format et le débit.
On peut aussi changer le nom par défaut de l’url de la radio.
Il faudra recharger la configuration pour appliquer les changements.
Diffusion hls
On peut changer les débits hls par défaut. Pour cela, allez dans éditer.
Exemple, on prend aac_hifi et je mets 320kbs au lieu des 192kbps. (Comme je vais être sur mon réseau local ça ne posera pas de problème)
On peut aussi accessoirement ajouter des débits.
Page publiques
Pour désactiver cette page, il faut aller dans profil->modifier profil et en bas de page et cliquer sur « Activer la page publique ».
On retrouve les adresses des pages publiques dans profil.
Dans marque, on peut changer un arrière-plan et la pochette par défaut.
On peut personnaliser le css et le javascript. Mais ça reste très limité.
Mais vous pouvez ne pas vous servir de cela et utiliser API de azuracast pour créer votre propre page web.
Enfin, vous avez la possibilité de mettre un lecteur sur un site internet. (Aucun intérêt dans mon genre d’utilisation).
Mise à jour
Tout d’abord pour mettre à jour, faite une sauvegarde de vos stations. En cliquant sur administration et sauvegarde.
Cliquer sur Exécuter la sauvegarde manuelle et n’oubliez pas d’enlever « exclure le media » de la sauvegarde.
Pour mettre à jour ;il faudra se connecter en SSH et taper les lignes suivantes:
cd /var/azuracast
./docker.sh update-self
./docker.sh update
Pour restaurer une sauvegarde ; il faudra toujours se connecter en ssh et copier le fichier de sauvegarde qui se trouve dans docker vers /var/azuracast et restaurer par la suite, mais ce n’est pas une obligation de le faire suite à une mise à jour.
cp /var/lib/docker/volumes/azuracast_backups/_data/test /var/azuracast
cd /var/azuracast
./docker.sh restore nomdelasauvegarde
#dans mon exemple remplacer nomdelasauvegarde par test
Mise en ligne (trés mauvaise idée sauf…)
Pour illustrer ça je vais mettre un dialogue entre le Doc et Marty.
Marty:
À ça, c’est super doc, je vais pouvoir ouvrir un port ou prendre un vps et mettre ça sur internet.
Doc:
Non non non ; techniquement, c’est possible ; mais je te le déconseille Marty. Car tu vas avoir à faire avec le syndicat d’ailleurs, j’ai une photo d’un de ces agents
Bon, rassure-toi ; ils ne mettent pas de tête de cheval dans ton lit. Par contre, tu risques de finir, ruiner et en prison comme tes 2 enfants dans le futur qui essayeront de te libérer.
Marty:
C’est pas le pied. Mais on peut quand même diffuser légalement ?
Doc:
Oui ; mais en tant qu’amateur ça te coûtera au minimum 600 balles et un bon mal de crâne.
https://fr.radioking.com/blog/webradio-autorisations-droits-auteur
De plus il ne faut pas oublier la loi bouffon. Bref, je te le déconseille.
conclusion
Les plus ➕:
- L’installation est simple (bien que buggé) si on connaît un peu la ligne de commande.
- Le programme est assez simple d’utilisation. Par contre, je n’ai pas essayé le live.
- Le programme a une api pratique si on veut faire une page web autre que celle proposée par défaut.
Les moins ➖ :
- Ne pas pouvoir éditer les playlists facilement.
- docker. L’image est beaucoup trop lourde, car tous les programmes et bdd sont directement mis dans l’image, ce qui n’est pas une bonne pratique.
Je n’ai pas exploré toutes les possibilités de ce programme ; mais j’ai montré l’essentiel. Je pense utiliser cette solution pendant un moment, mais je vais voir si on ne peut pas avoir un autre moyen pour avoir une webradio qui prend moins de ressource.
Source
https://www.azuracast.com/docs/developers/apis
https://www.azuracast.com/docs/user-guide/streaming-software/
https://www.azuracast.com/docs/getting-started/installation/docker/
https://www.azuracast.com/docs/getting-started/requirements/
https://www.azuracast.com/docs/user-guide/streaming-software/
https://www.azuracast.com/docs/getting-started/updates/
https://forum.proxmox.com/threads/no-fstabs-after-installing-debian-standard-template.21028/