This shows you the differences between two versions of the page.
| nomades:sa_web_radio [2015/08/30 22:55] – created - external edit 127.0.0.1 | nomades:sa_web_radio [2026/02/25 10:33] (current) – julien | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Comment faire sa web radio ====== | ====== Comment faire sa web radio ====== | ||
| - | ===== by thenoiser | + | **by thenoiser** |
| - | mis à part les solutions du type vlc ou icestream : http:// | + | ===== install Icecast ===== |
| - | voilà une solution simple pour jouer vos fichiers audio en random à travers votre propre webradio live avec ezstream | + | ===== reverse proxy Nginx (:8000) ===== |
| - | tout d' | ||
| - | aprés avoir bien installé : randomize-lines (pour rl) | + | ===== pages admin/ |
| + | |||
| + | |||
| + | ===== SSL Let’s Encrypt DNS-01 ===== | ||
| + | |||
| + | |||
| + | ==== Renouvellement manuel du certificat SSL Let's Encrypt pour la radio (Icecast + Nginx) ==== | ||
| + | |||
| + | ===== Objectif ===== | ||
| + | |||
| + | Renouveler manuellement le certificat SSL/TLS Let's Encrypt utilisé par Nginx pour '' | ||
| + | |||
| + | <note important> | ||
| + | Ce tutoriel concerne un certificat Let's Encrypt créé en mode manuel DNS-01 (challenge DNS) avec Gandi. | ||
| + | Dans ce mode, le renouvellement n'est pas automatique (sans script/ | ||
| + | </ | ||
| + | |||
| + | ===== Contexte ===== | ||
| + | |||
| + | * Domaine : '' | ||
| + | * Certificat utilisé par Nginx : | ||
| + | |||
| + | * ''/ | ||
| + | * ''/ | ||
| + | * Nginx sert le HTTPS sur le port '' | ||
| + | * Icecast tourne en local (proxy derrière Nginx) | ||
| + | * Validation Let's Encrypt par TXT DNS : '' | ||
| + | |||
| + | ===== 1. Vérifier l' | ||
| < | < | ||
| - | find / | + | sudo certbot certificates |
| </ | </ | ||
| - | à partir de là suivre ce très bon tuto : http:// | + | Vérifier notamment |
| - | et si vous souhaitez réencoder à la volé vos morceaux, bien pensé à prendre l'exemple | + | * '' |
| + | * '' | ||
| + | ===== 2. Lancer le renouvellement manuel (DNS-01) ===== | ||
| + | < | ||
| + | sudo certbot certonly \ | ||
| + | --manual \ | ||
| + | --preferred-challenges dns \ | ||
| + | --key-type ecdsa \ | ||
| + | -d radio.example.org | ||
| + | </ | ||
| + | Certbot affiche alors : | ||
| - | ===== by gepeto ===== | + | * le nom du TXT à créer : '' |
| + | * une valeur TXT (chaîne aléatoire) à copier | ||
| - | juste pour commencer un petit script tres pratique, fait sous LadyBug, il vous faut au prealable installer | + | <note warning> |
| - | * qjackctl | + | La valeur change à chaque tentative. |
| - | * icecast2 | + | Si une tentative échoue, il faut remplacer l' |
| - | * ices | + | </ |
| - | * audacious | + | |
| - | * audacious-jack , je l'ai trouvé là : [[http://rpms.mandrivaclub.com/ | + | ===== 3. Ajouter / mettre à jour le TXT dans Gandi ===== |
| - | * gxmessage | + | |
| + | Dans l' | ||
| + | |||
| + | * **Type** : '' | ||
| + | * **Nom** : '' | ||
| + | * **Valeur** | ||
| + | * **TTL** | ||
| + | |||
| + | <note tip> | ||
| + | Dans la zone DNS '' | ||
| + | </ | ||
| + | |||
| + | ===== 4. Vérifier la propagation DNS avant de valider Certbot ===== | ||
| + | |||
| + | Avant d' | ||
| - | voila le script | ||
| < | < | ||
| - | # | + | dig +short TXT _acme-challenge.radio.example.org @8.8.8.8 |
| - | gksu -k "/ | + | |
| - | title=" | + | |
| - | ask_ices=" | + | |
| - | gxmessage -center -title " | + | |
| - | RET=$? | + | |
| - | if [ " | + | |
| - | exit 0 | + | |
| - | fi | + | |
| - | if [ " | + | |
| - | ps -C qjackctl>/ | + | |
| - | PID=$? | + | |
| - | if [ " | + | |
| - | killall -9 jackd | + | |
| - | killall -9 audacious | + | |
| - | / | + | |
| - | sleep 6 | + | |
| - | fi | + | |
| - | / | + | |
| - | sleep 2 | + | |
| - | / | + | |
| - | exit 0 | + | |
| - | fi | + | |
| </ | </ | ||
| - | et le code de icecast2.sh | + | Ou : |
| < | < | ||
| - | .. | + | nslookup -type=TXT _acme-challenge.radio.example.org 8.8.8.8 |
| </ | </ | ||
| + | |||
| + | Le résultat doit afficher exactement la valeur demandée par Certbot. | ||
| + | |||
| + | Exemple : | ||
| + | |||
| + | < | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | <note important> | ||
| + | N' | ||
| + | </ | ||
| + | |||
| + | ===== 5. Valider dans Certbot ===== | ||
| + | |||
| + | Revenir dans le terminal où Certbot attend et appuyer sur Entrée. | ||
| + | |||
| + | Si tout est correct, message attendu : | ||
| + | |||
| + | < | ||
| + | Successfully received certificate. | ||
| + | Certificate is saved at: / | ||
| + | Key is saved at: / | ||
| + | </ | ||
| + | |||
| + | ===== 6. Recharger Nginx pour prendre le nouveau certificat ===== | ||
| + | |||
| + | < | ||
| + | sudo nginx -t | ||
| + | sudo systemctl reload nginx | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | Icecast n'a pas besoin d' | ||
| + | Seul Nginx doit être rechargé. | ||
| + | </ | ||
| + | |||
| + | ===== 7. Vérifier la nouvelle date d' | ||
| + | |||
| + | < | ||
| + | sudo certbot certificates | ||
| + | </ | ||
| + | |||
| + | La date d' | ||
| + | |||
| + | ===== Erreurs fréquentes ===== | ||
| + | |||
| + | ==== Certbot échoue avec un TXT " | ||
| + | |||
| + | Cause fréquente : | ||
| + | |||
| + | * ancienne valeur TXT encore présente | ||
| + | * nouvelle tentative Certbot = nouvelle valeur | ||
| + | * validation trop rapide | ||
| + | |||
| + | Solution : | ||
| + | |||
| + | * remplacer la valeur TXT par la nouvelle | ||
| + | * vérifier avec '' | ||
| + | * puis appuyer sur Entrée | ||
| + | |||
| + | ==== '' | ||
| + | |||
| + | Erreur typique : | ||
| + | |||
| + | < | ||
| + | The manual plugin is not working... | ||
| + | An authentication script must be provided with --manual-auth-hook | ||
| + | </ | ||
| + | |||
| + | C'est normal avec un certificat créé en mode manuel DNS-01 sans hook. | ||
| + | |||
| + | ===== Checklist rapide (urgence) ===== | ||
| + | |||
| + | < | ||
| + | sudo certbot certificates | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | sudo certbot certonly \ | ||
| + | --manual \ | ||
| + | --preferred-challenges dns \ | ||
| + | --key-type ecdsa \ | ||
| + | -d radio.example.org | ||
| + | </ | ||
| + | |||
| + | * Mettre à jour le TXT '' | ||
| + | * Vérifier la propagation DNS : | ||
| + | |||
| + | < | ||
| + | dig +short TXT _acme-challenge.radio.example.org @8.8.8.8 | ||
| + | </ | ||
| + | |||
| + | * Appuyer sur Entrée dans Certbot | ||
| + | * Recharger Nginx : | ||
| + | |||
| + | < | ||
| + | sudo nginx -t && sudo systemctl reload nginx | ||
| + | </ | ||
| + | |||
| + | * Vérifier : | ||
| + | |||
| + | < | ||
| + | sudo certbot certificates | ||
| + | </ | ||
| + | |||
| + | ===== À faire plus tard (automatisation) ===== | ||
| + | |||
| + | * Automatiser le DNS-01 avec l'API Gandi (hook Certbot ou plugin DNS) | ||
| + | * Ajouter un reload Nginx automatique après renouvellement | ||
| + | * Mettre en place un contrôle périodique (cron/ | ||
| + | |||
| + | ===== monitoring / stats / logs / watchdog ===== | ||
| + | |||