<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
	<title>Маслохвиля 🧈</title>
	<link>https://radio.miliukhin.xyz/</link>
	<description>Recent content on Маслохвиля 🧈</description>
	<generator>Hugo -- gohugo.io</generator>
	<language>uk-UA</language>
	<lastBuildDate>Thu, 07 Sep 2023 16:37:18 +0300</lastBuildDate>
    
        <atom:link href="https://radio.miliukhin.xyz/index.xml" rel="self" type="application/rss+xml" />
	
	
	<item>
		<title>Як Запустити Вебрадіо</title>
		<link>https://radio.miliukhin.xyz/icecast/</link>
		<pubDate>Thu, 07 Sep 2023 16:37:18 +0300</pubDate>
		
		<guid>https://radio.miliukhin.xyz/icecast/</guid>
		<description>&lt;h2 id=&#34;вступ&#34;&gt;Вступ&lt;/h2&gt;
&lt;p&gt;Icecast &amp;mdash; це вільний сервер для транслювання мультимедіа.
За його допомогою можна запустити своє вебрадіо та транслювати музику чи
вести прямі ефіри.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/xiph/ezstream&#34;&gt;Ezstream&lt;/a&gt; &amp;mdash; клієнт, який забезпечує його
потоками. Тобто Icecast транслює те, що дає йому Ezstream (або інша програма,
призначена для цього, їх досить &lt;a href=&#34;https://icecast.org/apps/&#34;&gt;багато&lt;/a&gt;,
використовуйте, який вам зручно, наприклад, mpd).&lt;/p&gt;
&lt;h2 id=&#34;установлення&#34;&gt;Установлення&lt;/h2&gt;
&lt;p&gt;Я виконую дії на Artix Linux
(тут мало що різнитиметься з подібними до дебіана,
головне &amp;mdash; конфігурація серверів)&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yay -S icecast ezstream
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;конфігурація-icecast&#34;&gt;Конфігурація Icecast&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Копіюйте приклад конфігурації (&lt;code&gt;/etc/icecast.xml&lt;/code&gt;) чи завантажте
&lt;a href=&#34;https://radio.miliukhin.xyz/icecast/icecast.xml&#34;&gt;модифікований приклад, який я розглядатиму&lt;/a&gt; та змініть пароль із
&lt;code&gt;hackme&lt;/code&gt; на щось нормальне, й можна пробувати запускати:&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;icecast -c /шлях/до/icecast.xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Тепер можна розглянути його детальніше:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;location&amp;gt;&lt;/span&gt;Просто шо хочете пишете, &amp;#34;кінець світу&amp;#34;, наприклад&lt;span class=&#34;nt&#34;&gt;&amp;lt;/location&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;admin&amp;gt;&lt;/span&gt;Тут теж&lt;span class=&#34;nt&#34;&gt;&amp;lt;/admin&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;В тезі &lt;code&gt;&amp;lt;authentication&amp;gt;&lt;/code&gt; установіть паролі для
вебінтерфейсу адміністрування та джерел аудіопотоків:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;authentication&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- Sources log in with username &amp;#39;source&amp;#39; --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;		&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- ДЛЯ ДЖЕРЕЛ (EZSTREAM та інших) --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;source-password&amp;gt;&lt;/span&gt;ПАРОЛЬ&lt;span class=&#34;nt&#34;&gt;&amp;lt;/source-password&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- Relays log in with username &amp;#39;relay&amp;#39; --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;relay-password&amp;gt;&lt;/span&gt;ПАРОЛЬ&lt;span class=&#34;nt&#34;&gt;&amp;lt;/relay-password&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- а цей для адмінки --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;admin-user&amp;gt;&lt;/span&gt;КОРИСТУВАЧ&lt;span class=&#34;nt&#34;&gt;&amp;lt;/admin-user&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;admin-password&amp;gt;&lt;/span&gt;ПАРОЛЬ&lt;span class=&#34;nt&#34;&gt;&amp;lt;/admin-password&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/authentication&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Установіть ім&amp;rsquo;я хоста:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;hostname&amp;gt;ДОМЕН ЧИ IP&amp;lt;/hostname&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;формування-плейлиста&#34;&gt;Формування плейлиста&lt;/h2&gt;
&lt;p&gt;Потрібно створити файл зі шляхами до аудіофайлів, які ми хочемо програвати,
щоб потім дати його Ezstream.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;find /директорія/з/музикою -name &lt;span class=&#34;s1&#34;&gt;&amp;#39;*mp3&amp;#39;&lt;/span&gt; -type f &amp;gt; /шлях/до/плейлиста.m3u
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;конфігурація-ezstream&#34;&gt;Конфігурація Ezstream&lt;/h2&gt;
&lt;p&gt;тека
&lt;code&gt;/usr/share/examples/ezstream/&lt;/code&gt;
містить
приклади конфігурацій.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;ezstream&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;servers&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;lt;hostname&amp;gt;&lt;/span&gt;127.0.0.1&lt;span class=&#34;nt&#34;&gt;&amp;lt;/hostname&amp;gt;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- якщо icecast на тому самому компі, достатньо --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;lt;password&amp;gt;&lt;/span&gt;ПАРОЛЬ, який писали в source-password&lt;span class=&#34;nt&#34;&gt;&amp;lt;/password&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/server&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/servers&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;streams&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;stream&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;lt;mountpoint&amp;gt;&lt;/span&gt;/stream&lt;span class=&#34;nt&#34;&gt;&amp;lt;/mountpoint&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;lt;format&amp;gt;&lt;/span&gt;MP3&lt;span class=&#34;nt&#34;&gt;&amp;lt;/format&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;lt;stream_name&amp;gt;&lt;/span&gt;ІМ&amp;#39;Я ПОТОКУ&lt;span class=&#34;nt&#34;&gt;&amp;lt;/stream_name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;lt;stream_url&amp;gt;&lt;/span&gt;http://miliukhin.xyz:8000/stream&lt;span class=&#34;nt&#34;&gt;&amp;lt;/stream_url&amp;gt;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- Посилання на потік --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/stream&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/streams&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- тут додаємо плейлист --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;intakes&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;intake&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;lt;filename&amp;gt;&lt;/span&gt;/шлях/до/плейлиста.m3u&lt;span class=&#34;nt&#34;&gt;&amp;lt;/filename&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;lt;shuffle&amp;gt;&lt;/span&gt;Yes&lt;span class=&#34;nt&#34;&gt;&amp;lt;/shuffle&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/intake&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/intakes&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/ezstream&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Тепер, якщо все правильно налаштували й Icecast запущений, можна запустити Ezstream
і тішитись:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ezstream -c /шлях/до/ezstream.xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Переходимо до встановлення радіо на неперервну роботу.&lt;/p&gt;
&lt;h2 id=&#34;запуск-сервісів&#34;&gt;Запуск сервісів&lt;/h2&gt;
&lt;p&gt;Якщо у вас systemd, то використовуйте systemctl для запуску Icecast і Ezstream (саме в такому порядку),
і більше нічого вам не треба.&lt;/p&gt;
&lt;p&gt;Мені ж прийшлося написати скрипт для запуску Icecast у &lt;code&gt;runit&lt;/code&gt;, бо не було. Це дуже просто, ось, як він виглядає
(можна завантажити &lt;a href=&#34;https://radio.miliukhin.xyz/icecast/run&#34;&gt;тут&lt;/a&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; icecast -c /etc/icecast.xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Скрипт для Ezstream аналогічний:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;exec&lt;/span&gt; ezstream -c /home/radon/ezstream.xml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;зручний-локальний-менеджмент-і-оновлення-радіо&#34;&gt;Зручний локальний менеджмент і оновлення радіо&lt;/h2&gt;
&lt;p&gt;Ось такий мініскрипт я використовую, щоб оновлювати список відтворення та водночас перезапускати ezstream:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;find /home/radon/music -name &lt;span class=&#34;s1&#34;&gt;&amp;#39;*mp3&amp;#39;&lt;/span&gt; -type f &amp;gt; /home/radon/playlist.m3u &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sv restart ezstream
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;На основному комп&amp;rsquo;ютері я запускаю інший &lt;a href=&#34;https://radio.miliukhin.xyz/icecast/radiosync&#34;&gt;скрипт&lt;/a&gt;, який за допомогою &lt;code&gt;rsync&lt;/code&gt; завантажує музику, яку я зберіг для радіо,
на сервер, а далі запускає цей оновлювач плейлиста.
Отже, все, що мені лишається зробити, коли я додав достатньо музики, це запустити один сценарій. Так дуже зручно працювати,
а ще я на додачу постійно маю резервну копію всього радіо.&lt;/p&gt;
&lt;h2 id=&#34;нюанси&#34;&gt;Нюанси&lt;/h2&gt;
&lt;h3 id=&#34;логи-не-працюють&#34;&gt;Логи не працюють?&lt;/h3&gt;
&lt;p&gt;Каталог &lt;code&gt;/var/log/icecast&lt;/code&gt; має належати &lt;code&gt;icecast&lt;/code&gt;, тож запустив&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;chown&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;R&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;icecast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;icecast&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;var&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;log&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;icecast&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;utf&#34;&gt;UTF&lt;/h3&gt;
&lt;p&gt;Нюанси з UTF у треках вирішуються так
&lt;a href=&#34;https://github.com/libretime/libretime/issues/2501&#34;&gt;https://github.com/libretime/libretime/issues/2501&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;в конфізі icecast (icecast.xml):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;mount&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;type=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       &lt;span class=&#34;nt&#34;&gt;&amp;lt;charset&amp;gt;&lt;/span&gt;UTF-8&lt;span class=&#34;nt&#34;&gt;&amp;lt;/charset&amp;gt;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;&amp;lt;!-- має бути це --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/mount&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;поміняти-користувача-на-нерута-з-міркувань-безпеки&#34;&gt;Поміняти користувача на нерута з міркувань безпеки&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;security&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;chroot&amp;gt;&lt;/span&gt;0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/chroot&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;changeowner&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;	&lt;span class=&#34;c&#34;&gt;&amp;lt;!-- вказуйте користувача та групу, яких забажаєте --&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;user&amp;gt;&lt;/span&gt;icecast&lt;span class=&#34;nt&#34;&gt;&amp;lt;/user&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;group&amp;gt;&lt;/span&gt;icecast&lt;span class=&#34;nt&#34;&gt;&amp;lt;/group&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/changeowner&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/security&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ніби нічого не забув, маєте тепер радіо!&lt;/p&gt;
&lt;h2 id=&#34;посилання&#34;&gt;Посилання&lt;/h2&gt;
&lt;p&gt;Читайте документацію 😉&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://icecast.org/docs/icecast-2.4.1/basic-setup.html&#34;&gt;https://icecast.org/docs/icecast-2.4.1/basic-setup.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://icecast.org/docs/icecast-2.4.0/config-file.html&#34;&gt;https://icecast.org/docs/icecast-2.4.0/config-file.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://wiki.archlinux.org/title/Icecast&#34;&gt;https://wiki.archlinux.org/title/Icecast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://2f30.org/guides/icecast.html&#34;&gt;https://2f30.org/guides/icecast.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
	</item>
	
	<item>
		<title>Інші станції</title>
		<link>https://radio.miliukhin.xyz/other_stations/</link>
		<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
		
		<guid>https://radio.miliukhin.xyz/other_stations/</guid>
		<description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://radio.social.net.ua/&#34;&gt;https://radio.social.net.ua/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://radio.opulus.space/&#34;&gt;https://radio.opulus.space/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://somafm.com/&#34;&gt;https://somafm.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lain.nihilism.network/&#34;&gt;https://lain.nihilism.network/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://death.fm/&#34;&gt;http://death.fm/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://kohina.com/&#34;&gt;https://kohina.com/&lt;/a&gt; &amp;mdash; old school game and demo music&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://www.hardradio.com/&#34;&gt;http://www.hardradio.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://radio.lainzine.org/&#34;&gt;https://radio.lainzine.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://plaza.one/&#34;&gt;https://plaza.one/&lt;/a&gt; Nightwave Plaza &amp;mdash; Online Vaporwave Radio&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://thebig80sstation.com/&#34;&gt;https://thebig80sstation.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;зручний-пошук-вебрадіо&#34;&gt;Зручний пошук вебрадіо&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;a href=&#34;https://www.radio-browser.info/&#34;&gt;Радіо-Бравзер&lt;/a&gt;&lt;/dt&gt;
&lt;dd&gt;Великий список інтернет- радіо й ТБ. Зокрема, користуючися
програмою &lt;code&gt;radioactive&lt;/code&gt;, яка інтерфейсить із цим списком, я
дізнався, що в &lt;a href=&#34;https://radio.social.net.ua/&#34;&gt;social.net.ua є кльове радіо&lt;/a&gt;.&lt;/dd&gt;
&lt;/dl&gt;
</description>
	</item>
	
	<item>
		<title>Як слухати?</title>
		<link>https://radio.miliukhin.xyz/how_to_listen/</link>
		<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
		
		<guid>https://radio.miliukhin.xyz/how_to_listen/</guid>
		<description>&lt;p&gt;Звісно, через браузер незручно. Якщо ви думаєте, що це єдиний метод, то ні, є набагато кращий та базованіший!&lt;/p&gt;
&lt;p&gt;Як ваш плеєр музики підтримує прослуховування вебрадіо,
то просто завантажте &lt;a href=&#34;http://miliukhin.xyz:8000/stream.m3u&#34;&gt;файл &lt;code&gt;m3u&lt;/code&gt;&lt;/a&gt; та додайте до свого плеєра.&lt;/p&gt;
&lt;p&gt;M3U &amp;mdash; формат для плейлистів, і такий файл може також містити шляхи до різних
треків. Відповідно, плеєр, прочитавши його, відтворюватиме ці треки, але в
нашому випадку побачить у файлі посилання на потік чи потоки вебрадіо:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://miliukhin.xyz:8000/stream
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;І буде грати його.&lt;/p&gt;
&lt;p&gt;Я слухаю музику за допомогою &lt;code&gt;mpd&lt;/code&gt;.
У каталозі його конфігурацій (&lt;code&gt;~/.config/mpd&lt;/code&gt;) є директорія playlists,
і саме туди я пхаю файли з різних вебрадіо:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;sasha@amnesia ~cf/mpd/playlists&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;$ tree
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── miliukhin.xyz.m3u
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── radio.social.net.ua.m3u
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Якщо ви користуєтесь іншим плеєром, то просто знайдіть, як це зробити в ньому.
А якщо такої функції нема, то, мабуть, варто підшукати кращий плеєр!&lt;/p&gt;
&lt;h2 id=&#34;що-за-òåðïííÿ-óðâàëîñü---ïîãëÿä-çàëåæíîñò-&#34;&gt;Що за Òåðï³ííÿ Óðâàëîñü - Ïîãëÿä çàëåæíîñò³ ?&lt;/h2&gt;
&lt;p&gt;Багато треків, з огляду на їх вік, затегані з використанням кодування cp1251
(криве кодування кирилиці для Windows), але зараз усі користуються UTF-8, тому
інтерпретуючи його, бачимо беззмістовну послідовність символів.&lt;/p&gt;
&lt;p&gt;Програма &lt;code&gt;iconv&lt;/code&gt; дозволяє перетворювати одне кодування на інше й ми можемо
дізнатися початковий сенс цього набору гліфів.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;sasha@amnesia ~&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Òåðï³ííÿ Óðâàëîñü - Ïîãëÿä çàëåæíîñò³&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; iconv -t latin1 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; iconv -f cp1251
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Терпіння Урвалось - Погляд залежності
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Можна це запакувати у скрипт чи зробити аліас, щоб уводити просто &lt;code&gt;cp2utf текст_для_розшифровки&lt;/code&gt;, адже розкодовування cp1251 може знадобитися в
найнеочікуваніший момент, наприклад, під час копіювання тексту з неправильно
скомпільованого документа LaTeX чи перегляду старого сайту.&lt;/p&gt;
&lt;h2 id=&#34;у-мене-смартфон-що-робити&#34;&gt;У мене смартфон, що робити?&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Купити комп&amp;rsquo;ютер і слухати нормально через звичайний плеєр.&lt;/li&gt;
&lt;li&gt;Є чудова програма &lt;a href=&#34;https://github.com/balaraz/RadioDroid?tab=readme-ov-file&#34;&gt;RadioDroid&lt;/a&gt;, яка дає змогу стрімити зі смартфона радіо, які вона знаходить на сайті &lt;a href=&#34;https://www.radio-browser.info/&#34;&gt;radio-browser.info&lt;/a&gt;. Скачуйте й шукайте butterwave.&lt;/li&gt;
&lt;/ol&gt;
</description>
	</item>
	
	</channel>
</rss>
