Créer sa propre webradio à la maison avec azuracast

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.

Faire une webradio avec un vieux pc?
Même marty est sous le choc

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

nom du container et mdp

Je choisis un template que j’ai préalablement téléchargé.

choisir template ubuntu

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.

mettre 40 gb

La Doc demande un CPU 4 cores, donc je m’exécute.

4 cores

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.

4096 mb

Là, je lui attribue comme traditionnellement une IP fixe.

ip statique

On ne met rien.

rien

Finalement on a le récap et n’oubliez pas de cocher la case start After created

start after created et finish

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]
Vision d'horreur d'un admin
Je vois que certains syst admin ont une vision d’horreur

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]
dire non
Dite non à cette question parce que sinon bizarrement l’image n’est pas installée et le script s’arrête (ne me demandez pas pourquoi c’est un mystère, mais excusez moi de cette imprécision ;je n’ai pas pris le temps d’analyser le script)

Si vous êtes 🇫🇷 taper fr fr

Select Language
fr_FR
Sélectionner langue

Dite non (même si le nombre de ports radio est hallucinant)

Non, même si le nombre de ports ouvert est impressionnant

Si vous avez dit oui, vous aurez les questions suivantes

port http
port https
port sftp
port station mini
port station maxi

Ayant testé de changer les ports. J’ai vu des erreurs se produire. Donc c’est juste pour info.

Activer code personnalisé: non

non

Dire oui

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

ip publique mais ce n'est pas l'ip du serveur

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)

Entrez email et un mdp

Tapez le nom de la radio et changer le fuseau horaire.

nom de la radio

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.

diffusion icecast

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.

Diffusion hls

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

auto dj

Streamer dj permet de faire du live; je n’en parlerai pas mais c’est possible

live

Dans l’administration, on peut mettre le débit max d’icecast 320kbps (je peux ; je suis sur mon réseau local).

debit icecast

Je mets l’url et le nom de l’instance et l’historique de lecture sur 14 jours.

ip historique

Là, je mets aucun car l’auditeur ; je le connais ; c’est moi 😄

aucun

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.

let s encript

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.

page d'accueil

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.

administration

Voici les ressources que prend azuracast sur un container lxc qui en prend très peu.

Mémoire azuracast

Pour vous faire une idée des ressources utilisée sur un simple container lxc avec un serveur lamp et wordpress.

Mémoire 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
docker images
Vous remarquerez la taille de l’image azuracast

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.

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
liste de container
docker exec -it azuracast bash

Puis j’ai fait la commande suivante pour connaitre l’image de base.

lsb_release -a
os d'azuracast

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

fichier musicaux

Une fois que vous avez vos media, vous pouvez créer des playlists en faisant ajouter une playlist.

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.

playlist radio

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

proxmox container

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.

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.

recharger la configuration

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.

ça marche!!!!!!!
Vous pourrez enfin le dire.

Programmation

Maintenant que ça marche, vous pouvez créer une programmation avec vos playlists.

Par exemple, je reprends la playlist avec les infos.

programmation info de base

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.

heure de programmation

Si on clique sur playlist et onglet calendrier, on peut la programmation complète.

calendrier

reglage supplémentaire

Diffusion icecast

On peut choisir le débit de diffusion.

diffusion icecast

En cliquant sur éditer et sur l’onglet AutoDj, on peut choisir le format et le débit.

Débit icecast

On peut aussi changer le nom par défaut de l’url de la radio.

changer nom du point de montage

Il faudra recharger la configuration pour appliquer les changements.

recharger la config

Diffusion hls

On peut changer les débits hls par défaut. Pour cela, allez dans éditer.

hls

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)

changer débit hls

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

page publique

On retrouve les adresses des pages publiques dans profil.

profil

Dans marque, on peut changer un arrière-plan et la pochette par défaut.

personnaliser page publique

On peut personnaliser le css et le javascript. Mais ça reste très limité.

js css

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

widget

Mise à jour

Tout d’abord pour mettre à jour, faite une sauvegarde de vos stations. En cliquant sur administration et sauvegarde.

backup

Cliquer sur Exécuter la sauvegarde manuelle et n’oubliez pas d’enlever « exclure le media » de la sauvegarde.

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

agent en parka
Tu remarqueras qu’il porte une parka car ça passe très bien pour les enterrements.

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://www.ibm.com/docs/en/cloud-private/3.1.1?topic=pyci-specifying-default-docker-storage-directory-by-using-bind-mount

https://forum.proxmox.com/threads/no-fstabs-after-installing-debian-standard-template.21028/

https://unix.stackexchange.com/questions/351410/mounting-two-folders-to-corresponding-directories-within-external-volume

c'est la fin...
Enfin c’est la fin…..
Comments are closed.