Serveur Webradio V2 Azuracast
Azuracast est un projet libre serveur de webradio (un unique développeur) avec des fonctionnalités très intéressantes :
- Super adminnistrateur qui gère le serveur
- plusieurs webradios simultanées avec des propriétaires pour chacun
- gestion de playlists évolué
- player évolué
- Vue de statistiques d'audiences en direct
- Backup automatiques possibles via interface web
Attention, ce projet est annoncé en version béta et recommande des mises à jour régulières (Proxmox !). Version 0.10.2 en juin 2020.
Pré-requis
- serveur dédié (VPS) : 2Go de Ram, 20 Go de disque (ou plus : si upload de fichiers audio)
- 64-bit x86 (x86_64) CPU
- installation préconisée tout en docker
- Install préconisée sur Ubuntu serveur 16.04 ou 18.04
- Serveur nu avec sudo, curl et git
Installation
mkdir -p /var/azuracast cd /var/azuracast curl -fsSL https://raw.githubusercontent.com/AzuraCast/AzuraCast/master/docker.sh> docker.sh chmod a+x docker.sh ./docker.sh install
Lancement
Se rendre sur l'adresse IP du serveur pour créer le compte super-administrateur
Mise à jour - backup - restore
Le script docker.sh permet de faire tout ça de manière simple…
cd /var/azuracast ./docker.sh update-self ./docker.sh update
./docker.sh backup path-to-backup.zip
./docker.sh backup --exclude-media path-to-backup.zip
./docker.sh restore path-to-backup.zip
Configuration
Les paramètres de configuration se trouvent dans le fichier azuracast.env
Déploiement d'une instance de test
Lancement de la procédure d'install sur une VM - Ubuntu-server 18.04 net install - openssh + git + curl + sudo en tant que root.
Choix à l'installation de n'utiliser que les versions stables.
Première connexion à l'adresse IP, création du super-admin : mail + mot de passe.
Message d'erreur à la création sur la base MySQL :
An exception occurred while executing 'INSERT INTO audit_log (timestamp, operation, class, identifier, target_class, target, changes, user) VALUES (?, ?, ?, ?, ?, ?, ?, ?)' with params [1590834974, 1, "Role", "Super administrateur", null, null, "a:1:{s:4:\"name\";a:2:{i:0;N;i:1;s:20:\"Super administrateur\";}}", null]: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'azuracast.audit_log' doesn't exist AbstractMySQLDriver.php : 42
Lancement d'une mise à jour :
./docker.sh update-self ./docker.sh update
Retour sur l'interface d'admin :
- Création du super-admin : ça marche !
- Création d'une webradio initiale : ok Des paramètres sympa comme l'URL de la webradio. Tout est francisé
- Paramétrage par défaut de Azuracast : annonce des mises à jour…
- Proposition de création d'un premier backup après install, via l'interface web. On peut exclure les médias si besoin. Première sauvegarde : 10 Kb
Utilisation - astuces
La radio créée émet par défaut sur une page publique un son qui tourne en boucle par défaut.
- On peut uploader des fichiers musicaux très simplement, créer des dossiers
- On peut embarquer le lecteur mp3 dans un iframe
- On peut personnaliser chaque morceau : pochette, auteur et même modifier le fichier audio (beta) pour entrée et sortie en fondu.
- On peut créer des playlist avec des niveaux de priorités : le menu playlist permet de définir la fréquence de la playlist, pas son contenu. On peut activer une playlist ou la désactiver, définir sa planification (jours, horaires).
- Il faut passer par les fichiers musicaux pour ajouter des morceaux.
- Il y a une page d'admin Icecast pour chaque radio avec mot de passe administrateur / source (émetteur) / relais. Utiliser le bon port ?
- Fonctionnalité “Demandes de titres” Désactivé ; “Streamers/DJs” : Désactivé
- Les points de montage permettent de récupérer l'adresse du .mp3
- Pour diffusion, il est nécessaire : de créer un compte DJ avec identifiant et mot de passe. C'est cet identifiant qui sera utilisé pour se connecter sur le WebDJ en activant le micro (ou sur icecast ?). Lors de la diffusion, il n'est pas nécessaire d'arrêter la diffusion automatique (service AutoDJ)
- WebDJ : Ne pas oublier de mettre son identifiant DJ et son mot de passe pour diffuser (tests à plusieurs ?). On peut customiser 2 playlist locales et choisir les fichiers à envoyer (pas de possibilité de piocher dans les playlists déposée sur le serveur). Activer le micro en haut pour voir le curseur bouger. Fonction “CUE” à détailler (superposition ? Points de repère ? Mixage ? Pas compris…). Dès qu'on quitte la page WebDJ, la diffusion auto reprend.
- Il faut parfois redémarrer le service webradio (déconnexion des auditeur·ice·s) si on désactive le service webDJ par exemple, mais le lecteur web se reconnecte automatiquement.
- Il existe une page publique avec les stats et info de la radio : http://IP/radio/8010 (port public de la radio)
- Il est possible de proposer un chemin local accessible aux webradios (en lecture seule ?).
- Il est possible de modifier le MP3 joué par défaut à la création d'une webradio.
- Il est possible de créer des droits spécifique pour chaque radio (ex : admin-radio-cemea) et de créer des comptes utilisateur·ice·s qui auront ces permissions même communes.
Statistiques
Depuis le menu “Rapports” / “Auditeurs”, on a des stats en direct, et par jour, par jour de la semaine et pour les meilleurs et pires titres.
Diffusion depuis un client Icecast
Techniquement n'importe quel lclient Icecast doit pouvoir difuser en spécififant :
- serveur : webradios.cemea.org
- utilisateur : source
- mot de passe : celui de source
- nom de la source : nom du fichier .mp3 de la radio
- port : variable selon chaque canal (et même selon la qualitéà : 80xx
Des clients possibles : https://docs.azuracast.com/en/user-guide/streaming-software
- libres : Mixxx :heart: (Lin, Mac, Win), Butt (Lin, Mac, Win) Bof…
- et des pas libres…
Test depuis un client webradio v1
Il faut sans doute :
- changer le port 8000 en celui qui est dédié à la webradio
- créer un streamer au nom de “source” si c'est possible et avec un mot de passe
- changer le point de montage en “/”
- Donc faire un bout de script qui fait ça dans une interface graphique
A venir.
Test depuis un client webradio v2
1. Les préparations côté serveur :
- Se rendre dans l'interface d'admin de la webradio, dans le menu “Comptes des streamers/DJ”
- Créer un compte dédié à la webradio : “ + Ajouter Streamer”
- Compléter avec un nom simple comme “webradio” ou “diffuseur” (il semblerait que les espaces ne soient pas acceptés pour l'identifiant) + un mot de passe correct.
Il est recommandé de choisir un nom d'affichage élaboré qui sera visible comme “Diffusion en direct”.
Il y a un onglet “Planification” pour définir des horaires de diffusion. À voir s'ils sont respectés et si la webradio tourne toute seule en dehors de cette période. En tout cas, une fois la diffusion en direct terminée la playlist programmée repart sans soucis. - Noter les infos importantes sur la droite pour les clients IceCast :
- Serveur : webradios.cemea.org, commun à tout le monde
- Port : 80xx !!! Il est propre à chaque canal !
- Point de montage : “/” à noter.
- le nom du streamer créer ci-dessus ainsi que son mot de passe
- NB : tester si l'envoi par Shoutcast permet plus d'options comme l'envoi des infos Meta (tags) de la piste sont affichées ???
2. Côté Client webradio V2
Il faut juste créer ou modifier les paramètres d'envoi dans IDJC.
Cliquer sur le menu “Voir” / “Sortie”. Si une entrée existe déjà, la modifier, sinon en créer une :
- Déplier le menu “Configuration” pour l'entrée “1”.
- Cliquer sur “Nouveau” ou “Modifier”
- Entrer les infos suivantes :
- Type de serveur : Icecast 2 Maitre
- Nom de l'hote : webradios.cemea.org
- Numéro du port : 80xx : celui repéré plus haut
- Point de montage : “/”
- Nom utente : nom du streamer
- Mot de passe : celui du streamer
- Le reste est laissé vide, désactivé ou aucun
- Valider
- Cliquer sur le bouton “Connecter” en haut. Ie point “1” devrait passer en vert pour vérifier que la connexion passe bien. Attention, lorsque vous lancez la connexion, le flux permanent de diffusion se coupe s'il existait.
- Retourner sur l'interface IDJC pour lancer la diffusion de vos pistes ou entrées audio.
- Lorsque vous déconnecterez à nouveau la sortie (dans Fichier / Flux / Déconnexion de groupe par exemple, ou dans Voir / sortie / - cocher la case puis Déconnecter), le flux permanent reprendra aussitôt.
Diffusion depuis un compte de streamer DJ
- Créer un compte de streamer DJ (menu de gauche). À activer si non activé.
- adresse : webradios.cemea.org
- mountpoint : /
- Port : 80xx (variable selon chaque webradio) à droite dans la fenêtre “Comptes des Streamers / DJ”
- User : celui du streamer
- Mot de passe : celui du streamer
Une fois connecté·e, il est possible de :
- démarrer/arrêter une diffusion live et donc de prendre la main sur le stream diffusé (playlist qui tourne en continu)
- créer et jouer des playlists et les mixer entre elles (passer d'un titre à l'autre, augmenter/baisser le niveau sonore …)
- la fonction “CUE” permet une pré-écoute avant ou pendant la diffusion (pour chacune des playlists ou pour le mix général)
Configuration interne
Un retour sur docker ps nous montre que plusieurs instances de docker tournent :
jrcs/letsencrypt-nginx-proxy-companion:latest jrcs/letsencrypt-nginx-proxy-companion:latest azuracast/azuracast_nginx_proxy:stable azuracast/azuracast_web_v2:stable azuracast/azuracast_radio:stable (certains ports redirigés de 8000 à 8496 : 9000 = limitations du nombre de webradio ?) azuracast/azuracast_db:stable azuracast/azuracast_redis:stable azuracast/azuracast_influxdb:stable
Les médias de chaque webradio sont stockés dans /var/azuracast/stations/nomradios (dans un docker)
À creuser
- Customiser le fond de la page d'accueil de chaque webradio ? (ticket) (pour le changer de manière distante)
- Limitation du nombre de webradios : 50 ? (Chaque webradio dispose de ports propres pour diffusion , admin). Ceci est modifiable.
- Envoi depuis une webradiovV2 : Voir la conf de clients externes comme Mixxx :
- Créer un compte de streamer DJ (menu de gauche). À activer si non activé.
- adresse : webradios.cemea.org
- mountpoint : /
- Port : 80xx (variable selon chaque webradio) à droite dans la fenêtre “Comptes des Streamers / DJ”
- User : celui du streamer
- Mot de passe : celui du streamer