User Tools

Site Tools


nomades:sa_web_radio

Comment faire sa web radio

by thenoiser

install Icecast

reverse proxy Nginx (:8000)

pages admin/status

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 radio.example.org:8000, sans interrompre Icecast.

<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/hook). </note>

Contexte

* Domaine : radio.example.org * Certificat utilisé par Nginx :

  • /etc/letsencrypt/live/radio.example.org/fullchain.pem
  • /etc/letsencrypt/live/radio.example.org/privkey.pem

* Nginx sert le HTTPS sur le port 8000 * Icecast tourne en local (proxy derrière Nginx) * Validation Let's Encrypt par TXT DNS : _acme-challenge.radio.example.org

1. Vérifier l'état du certificat

sudo certbot certificates

Vérifier notamment :

* Certificate Name: radio.example.org * Expiry Date: …

2. Lancer le renouvellement manuel (DNS-01)

sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  --key-type ecdsa \
  -d radio.example.org

Certbot affiche alors :

* le nom du TXT à créer : _acme-challenge.radio.example.org * une valeur TXT (chaîne aléatoire) à copier

<note warning> La valeur change à chaque tentative. Si une tentative échoue, il faut remplacer l'ancienne valeur TXT par la nouvelle valeur affichée par Certbot. </note>

3. Ajouter / mettre à jour le TXT dans Gandi

Dans l'interface DNS Gandi de example.org :

* Type : TXT * Nom : _acme-challenge.radio * Valeur : (la chaîne fournie par Certbot) * TTL : 300 (recommandé)

<note tip> Dans la zone DNS example.org, le nom _acme-challenge.radio correspond au FQDN _acme-challenge.radio.example.org. </note>

4. Vérifier la propagation DNS avant de valider Certbot

Avant d'appuyer sur Entrée dans Certbot, vérifier que le TXT est bien visible publiquement.

dig +short TXT _acme-challenge.radio.example.org @8.8.8.8

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 :

"CG6n8bpQEakfUmjM3EMZsOzxGOl2cwOFkAtsgpMuGBc"

<note important> N'appuyer sur Entrée dans Certbot qu'après avoir vérifié la bonne valeur TXT. </note>

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: /etc/letsencrypt/live/radio.example.org/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/radio.example.org/privkey.pem

6. Recharger Nginx pour prendre le nouveau certificat

sudo nginx -t
sudo systemctl reload nginx

<note> Icecast n'a pas besoin d'être redémarré pour cette opération. Seul Nginx doit être rechargé. </note>

7. Vérifier la nouvelle date d'expiration

sudo certbot certificates

La date d'expiration doit être repoussée (environ 90 jours).

Erreurs fréquentes

Certbot échoue avec un TXT "incorrect"

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 dig * puis appuyer sur Entrée

''certbot renew'' ne marche pas

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 _acme-challenge.radio dans Gandi * 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/systemd timer)

monitoring / stats / logs / watchdog

nomades/sa_web_radio.txt · Last modified: 2026/02/25 10:33 by julien