Nix-native (no Docker, unlike alfo's radiopi reference), streaming a shuffled folder of MP3s from /var/lib/radio/music. Bypasses the upstream services.icecast module since it bakes the admin/source password into a world-readable store path; both units instead render their config from a template at service start, reading the password live from the agenix runtime path. Runs as a dedicated icecast-radio system user rather than root -- icecast segfaults instead of exiting cleanly when it detects EUID 0 without a <changeowner> configured. Liquidsoap's playlist() needed mksafe() to satisfy output.icecast()'s infallible-source requirement. Icecast binds 0.0.0.0 (not just the tailnet IP) since Liquidsoap's source connection is a loopback connection on the same host. Traefik route added on blunix (sound.0ff.space -> pinix:8032, same pattern as the other pinix-backed public services). DNS record still needs to be created manually (no broadly-scoped Cloudflare credential in this repo).
18 lines
1 KiB
Text
18 lines
1 KiB
Text
-----BEGIN AGE ENCRYPTED FILE-----
|
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IGJyRmx0dyByOTNP
|
|
UDVhVnJaeTdzOEJPU1pHU0xWamhSSThjOURpWm5kU290UUlwNlc4ClVnWmgzVmJ0
|
|
aVNmaVpIQmJxU3Z1eDZNTTFEemRCZUNib3hjMEV0QzRsbDgKLT4gc3NoLWVkMjU1
|
|
MTkgWkJTdjJnIFRPRmRaRGZqaUp1UXRuZFRmSHQ5eHRjVnJlR1prNk1NUkxVRmg2
|
|
bmpTUzAKRUFpcmxlUTN3SVo3Vm5OWCtGSXovS241aHFjb3pYYW9mY1BoM1dQcUhR
|
|
UQotPiBzc2gtZWQyNTUxOSBTQ0pkY3cgZm9oL2ZncWQ5SENJKzk5ckt3eE14bmlN
|
|
YUI4N2tIa0d1RXdtNk1EWTJuYwpOb1JRdThGbklLWEI2R0c3UGUyL01NaWpjRnBV
|
|
YUsyamloWjdKMXBTbE5FCi0+IHNzaC1lZDI1NTE5IEhleDZRUSA1RXU4NW0zamh6
|
|
RVprbWpmNk5tOXlZK2loaVVWeitrOTQ1UkVWeThTK1JRCmRFY1l6NkFsVUlDRlJS
|
|
T1daWFNxOHhhNVZ2byszbnVlTk5lbEp5ZUxtYmMKLT4gc3NoLWVkMjU1MTkgSkRK
|
|
cUNnIG51UUd3WW9oOHpoaUl0bndST21oZlV5eFNpN3hncmRpdzdkaURPMVM5MFkK
|
|
c0hlUEtCVzRRdUlUcW1NZ3NjMTBLRS9SQ3lFLzJ1N1BKZEk0UXV6eDFZawotPiBh
|
|
JUB2LWdyZWFzZSBRUGgrKyBKJ1pECkdZSzdUSG1JcEdkTUdKWnRsYngzcjJtWgot
|
|
LS0gLytWVGttcnVHVTlrUmIwOWFMQjhPaDdTMDBHZVIvQm4zR0JsRkQ2KzNUTQrj
|
|
AoQfjxwE5jutiYBjQs3btgN71aiuPGJst28mi4d+KVeyfZhNw+TCM+faPeabWNaZ
|
|
QEWDRGmnJlRcbU61wx9A
|
|
-----END AGE ENCRYPTED FILE-----
|