<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dimitris Tzemos</title>
    <description>The latest articles on DEV Community by Dimitris Tzemos (@djemos).</description>
    <link>https://dev.to/djemos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F210017%2F5e4bef08-fbfb-4afa-b732-5b2d68e57a6a.png</url>
      <title>DEV Community: Dimitris Tzemos</title>
      <link>https://dev.to/djemos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/djemos"/>
    <language>en</language>
    <item>
      <title>How to create your own Radio Station using a dynamic ip domain.</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Thu, 02 Apr 2026 23:20:16 +0000</pubDate>
      <link>https://dev.to/djemos/how-to-create-your-own-radio-station-using-a-dynamic-ip-domain-ini</link>
      <guid>https://dev.to/djemos/how-to-create-your-own-radio-station-using-a-dynamic-ip-domain-ini</guid>
      <description>&lt;p&gt;In previous posts &lt;a href="https://forum.salixos.org/viewtopic.php?t=8939" rel="noopener noreferrer"&gt;“Steps to configure Dehydrated for ZeroSSL and Let’s Encrypt”&lt;/a&gt; and &lt;a href="https://forum.salixos.org/viewtopic.php?t=8940" rel="noopener noreferrer"&gt;“Steps to configure Dehydrated for ZeroSSL and Let’s Encrypt for One IP and multiple domains”&lt;/a&gt;&lt;br&gt;
We saw how we can create a certificate for our domains.&lt;/p&gt;

&lt;p&gt;Now will see step by step how we can create our own radio station using a dynamic domain and the certificates we had created.&lt;br&gt;
I try to be as simple as i can and most work can be done by copy and paste.&lt;/p&gt;

&lt;p&gt;First have to create a dynamic domain e.g. on noip.me lets use for this "how to" the foo.ddns.net&lt;/p&gt;

&lt;p&gt;we have to open on our router the ports 80 for httpd, 8000 for icecast, 443 for ssl, 8443 secure port for icecast&lt;/p&gt;

&lt;p&gt;I have build for &lt;a href="http://www.salixos.org/" rel="noopener noreferrer"&gt;salix&lt;/a&gt; 64 bit the packages because packages i use for &lt;a href="https://slackel.sourceforge.io/forum/about.htm" rel="noopener noreferrer"&gt;slackel&lt;/a&gt; do not run on salix of course.&lt;/p&gt;

&lt;p&gt;Download and install &lt;a href="https://people.salixos.org/djemos/icecast/icecast-2.5.0-x86_64-1dj.txz" rel="noopener noreferrer"&gt;icecast&lt;/a&gt; package, &lt;a href="https://people.salixos.org/djemos/icecast/libigloo/libigloo-0.9.5-x86_64-1dj.txz" rel="noopener noreferrer"&gt;libigloo&lt;/a&gt; and&lt;br&gt;
install rhash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;slapt-get &lt;span class="nt"&gt;-i&lt;/span&gt; rhash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Download and install &lt;a href="https://people.salixos.org/djemos/icecast/mpd/mpd-0.23.9-x86_64-1dj.txz" rel="noopener noreferrer"&gt;mpd&lt;/a&gt; package&lt;br&gt;
Download and install &lt;a href="https://people.salixos.org/djemos/icecast/mympd/mympd-25.0.1-x86_64-1dj.txz" rel="noopener noreferrer"&gt;mympd&lt;/a&gt; package&lt;br&gt;
Optional install libmpdclient&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;slapt-get &lt;span class="nt"&gt;-i&lt;/span&gt; libmpdclient
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and Download &lt;a href="https://people.salixos.org/djemos/icecast/mpc/mpc-0.35-x86_64-1dj.txz" rel="noopener noreferrer"&gt;mpc&lt;/a&gt; and install it&lt;/p&gt;

&lt;p&gt;On slackel we just do this to install the packages&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;slapt-get &lt;span class="nt"&gt;-u&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;slapt-get &lt;span class="nt"&gt;-i&lt;/span&gt; icecast mpd mympd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace the /etc/icecast.xml with this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;icecast&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;location&amp;gt;&lt;/span&gt;Greece&lt;span class="nt"&gt;&amp;lt;/location&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;admin&amp;gt;&lt;/span&gt;admin&lt;span class="nt"&gt;&amp;lt;/admin&amp;gt;&lt;/span&gt; 
    &lt;span class="nt"&gt;&amp;lt;limits&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;clients&amp;gt;&lt;/span&gt;100&lt;span class="nt"&gt;&amp;lt;/clients&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;sources&amp;gt;&lt;/span&gt;2&lt;span class="nt"&gt;&amp;lt;/sources&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;queue-size&amp;gt;&lt;/span&gt;524288&lt;span class="nt"&gt;&amp;lt;/queue-size&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;client-timeout&amp;gt;&lt;/span&gt;30&lt;span class="nt"&gt;&amp;lt;/client-timeout&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;header-timeout&amp;gt;&lt;/span&gt;15&lt;span class="nt"&gt;&amp;lt;/header-timeout&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;source-timeout&amp;gt;&lt;/span&gt;10&lt;span class="nt"&gt;&amp;lt;/source-timeout&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;burst-size&amp;gt;&lt;/span&gt;65535&lt;span class="nt"&gt;&amp;lt;/burst-size&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/limits&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;authentication&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;source-password&amp;gt;&lt;/span&gt;hackme&lt;span class="nt"&gt;&amp;lt;/source-password&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;relay-password&amp;gt;&lt;/span&gt;hackme&lt;span class="nt"&gt;&amp;lt;/relay-password&amp;gt;&lt;/span&gt; 
        &lt;span class="nt"&gt;&amp;lt;admin-user&amp;gt;&lt;/span&gt;admin&lt;span class="nt"&gt;&amp;lt;/admin-user&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;admin-password&amp;gt;&lt;/span&gt;hackme&lt;span class="nt"&gt;&amp;lt;/admin-password&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/authentication&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;yp-directory&lt;/span&gt; &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;"https://dir.xiph.org/cgi-bin/yp-cgi"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"timeout"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"15"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/yp-directory&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;hostname&amp;gt;&lt;/span&gt;foo.ddns.net&lt;span class="nt"&gt;&amp;lt;/hostname&amp;gt;&lt;/span&gt; &lt;span class="c"&gt;&amp;lt;!-- replace foo.ddns.net with you own domain --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;fileserve&amp;gt;&lt;/span&gt;1&lt;span class="nt"&gt;&amp;lt;/fileserve&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;listen-socket&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;port&amp;gt;&lt;/span&gt;8000&lt;span class="nt"&gt;&amp;lt;/port&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;shoutcast-mount&amp;gt;&lt;/span&gt;/live&lt;span class="nt"&gt;&amp;lt;/shoutcast-mount&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;charset&amp;gt;&lt;/span&gt;UTF-8&lt;span class="nt"&gt;&amp;lt;/charset&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/listen-socket&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;mount&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"default"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;mount-name&amp;gt;&lt;/span&gt;/live&lt;span class="nt"&gt;&amp;lt;/mount-name&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;charset&amp;gt;&lt;/span&gt;UTF-8&lt;span class="nt"&gt;&amp;lt;/charset&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/mount&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;listen-socket&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;port&amp;gt;&lt;/span&gt;8443&lt;span class="nt"&gt;&amp;lt;/port&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;shoutcast-mount&amp;gt;&lt;/span&gt;/live&lt;span class="nt"&gt;&amp;lt;/shoutcast-mount&amp;gt;&lt;/span&gt; 
        &lt;span class="nt"&gt;&amp;lt;charset&amp;gt;&lt;/span&gt;UTF-8&lt;span class="nt"&gt;&amp;lt;/charset&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;ssl&amp;gt;&lt;/span&gt;1&lt;span class="nt"&gt;&amp;lt;/ssl&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/listen-socket&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;http-headers&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;header&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Access-Control-Allow-Origin"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"*"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;header&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Access-Control-Allow-Headers"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Origin, X-Requested-With, Content-Type, Accept"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;header&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Access-Control-Allow-Methods"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"GET, OPTIONS"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/http-headers&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;paths&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;basedir&amp;gt;&lt;/span&gt;/usr/share/icecast&lt;span class="nt"&gt;&amp;lt;/basedir&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;logdir&amp;gt;&lt;/span&gt;/var/log/icecast&lt;span class="nt"&gt;&amp;lt;/logdir&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;webroot&amp;gt;&lt;/span&gt;/usr/share/icecast/web&lt;span class="nt"&gt;&amp;lt;/webroot&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;adminroot&amp;gt;&lt;/span&gt;/usr/share/icecast/admin&lt;span class="nt"&gt;&amp;lt;/adminroot&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;alias&lt;/span&gt; &lt;span class="na"&gt;source=&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt; &lt;span class="na"&gt;dest=&lt;/span&gt;&lt;span class="s"&gt;"/status.xsl"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/paths&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;logging&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;accesslog&amp;gt;&lt;/span&gt;access.log&lt;span class="nt"&gt;&amp;lt;/accesslog&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;errorlog&amp;gt;&lt;/span&gt;error.log&lt;span class="nt"&gt;&amp;lt;/errorlog&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;loglevel&amp;gt;&lt;/span&gt;3&lt;span class="nt"&gt;&amp;lt;/loglevel&amp;gt;&lt;/span&gt; &lt;span class="c"&gt;&amp;lt;!-- 4 Debug, 3 Info, 2 Warn, 1 Error --&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;logsize&amp;gt;&lt;/span&gt;10000&lt;span class="nt"&gt;&amp;lt;/logsize&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/logging&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;security&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;chroot&amp;gt;&lt;/span&gt;0&lt;span class="nt"&gt;&amp;lt;/chroot&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;changeowner&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;user&amp;gt;&lt;/span&gt;nobody&lt;span class="nt"&gt;&amp;lt;/user&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;group&amp;gt;&lt;/span&gt;nogroup&lt;span class="nt"&gt;&amp;lt;/group&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/changeowner&amp;gt;&lt;/span&gt; 

        &lt;span class="nt"&gt;&amp;lt;tls-context&amp;gt;&lt;/span&gt;
                &lt;span class="c"&gt;&amp;lt;!-- The certificate file containng public and optionally private key.
                Must be PEM encoded. --&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;tls-certificate&amp;gt;&lt;/span&gt;/etc/icecast2/bundle.pem&lt;span class="nt"&gt;&amp;lt;/tls-certificate&amp;gt;&lt;/span&gt;
                &lt;span class="c"&gt;&amp;lt;!-- The private key if not contained in &amp;lt;tls-certificate&amp;gt;.
                Must be PEM encoded. --&amp;gt;&lt;/span&gt;
                &lt;span class="c"&gt;&amp;lt;!--   &amp;lt;tls-key&amp;gt;/etc/icecast2/privkey.pem&amp;lt;/tls-key&amp;gt; --&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/tls-context&amp;gt;&lt;/span&gt;  
    &lt;span class="nt"&gt;&amp;lt;/security&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/icecast&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;you can change the /live with /whatever_mount_you like&lt;/p&gt;

&lt;p&gt;Create the certification key for icecast secure connection.The fullchain.pem and privkey.pem we have created on&lt;br&gt;
previous posts “Steps to configure Dehydrated for ZeroSSL and Let’s Encrypt for One IP and multiple domains”&lt;br&gt;
or “Steps to configure Dehydrated for ZeroSSL and Let’s Encrypt”&lt;br&gt;
for foo.ddns.net, have to be copied in bundle.pem (we use it in icecast.xml above in line /etc/icecast2/bundle.pem)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /etc/icecast2
&lt;span class="nb"&gt;cat&lt;/span&gt; /etc/dehydrated/certs-letsencrypt/foo.ddns.net/fullchain.pem /etc/dehydrated/certs-letsencrypt/foo.ddns.net/privkey.pem &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /etc/icecast2/bundle.pem
&lt;span class="nb"&gt;chown &lt;/span&gt;nobody:nogroup /etc/icecast2/&lt;span class="k"&gt;*&lt;/span&gt;
&lt;span class="nb"&gt;chmod &lt;/span&gt;600 /etc/icecast2/&lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set up mpd client.&lt;br&gt;
Copy this to /etc/mpd.conf&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;music_directory&lt;/span&gt;     &lt;span class="s2"&gt;"~/music"&lt;/span&gt;
&lt;span class="n"&gt;playlist_directory&lt;/span&gt;  &lt;span class="s2"&gt;"~/.mpd/playlists"&lt;/span&gt;
&lt;span class="n"&gt;db_file&lt;/span&gt;             &lt;span class="s2"&gt;"~/.mpd/database"&lt;/span&gt;
&lt;span class="n"&gt;log_file&lt;/span&gt;            &lt;span class="s2"&gt;"~/.mpd/log"&lt;/span&gt;
&lt;span class="n"&gt;pid_file&lt;/span&gt;            &lt;span class="s2"&gt;"~/.mpd/pid"&lt;/span&gt;
&lt;span class="n"&gt;state_file&lt;/span&gt;          &lt;span class="s2"&gt;"~/.mpd/state"&lt;/span&gt;
&lt;span class="n"&gt;sticker_file&lt;/span&gt;        &lt;span class="s2"&gt;"~/.mpd/sticker.sql"&lt;/span&gt;
&lt;span class="c"&gt;## Replace myuser with yours mpd has to run as current user and no root
&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;                &lt;span class="s2"&gt;"myuser"&lt;/span&gt;  
&lt;span class="c"&gt;# For network
&lt;/span&gt;&lt;span class="n"&gt;bind_to_address&lt;/span&gt; &lt;span class="s2"&gt;"localhost"&lt;/span&gt;
&lt;span class="n"&gt;port&lt;/span&gt;                &lt;span class="s2"&gt;"6600"&lt;/span&gt;
&lt;span class="n"&gt;restore_paused&lt;/span&gt; &lt;span class="s2"&gt;"no"&lt;/span&gt;
&lt;span class="n"&gt;metadata_to_use&lt;/span&gt; &lt;span class="s2"&gt;"artist,album,title"&lt;/span&gt;
&lt;span class="n"&gt;auto_update&lt;/span&gt; &lt;span class="s2"&gt;"yes"&lt;/span&gt;
&lt;span class="n"&gt;default_permissions&lt;/span&gt;             &lt;span class="s2"&gt;"read,add,control,admin"&lt;/span&gt;
&lt;span class="n"&gt;audio_output&lt;/span&gt; {
    &lt;span class="n"&gt;type&lt;/span&gt;        &lt;span class="s2"&gt;"shout"&lt;/span&gt;
    &lt;span class="n"&gt;encoder&lt;/span&gt;     &lt;span class="s2"&gt;"vorbis"&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;        &lt;span class="s2"&gt;"My Radio"&lt;/span&gt;
    &lt;span class="n"&gt;host&lt;/span&gt;        &lt;span class="s2"&gt;"localhost"&lt;/span&gt;
    &lt;span class="n"&gt;port&lt;/span&gt;        &lt;span class="s2"&gt;"8000"&lt;/span&gt;
    &lt;span class="n"&gt;mount&lt;/span&gt;       &lt;span class="s2"&gt;"/live"&lt;/span&gt;
    &lt;span class="n"&gt;password&lt;/span&gt;    &lt;span class="s2"&gt;"hackme"&lt;/span&gt;
    &lt;span class="n"&gt;bitrate&lt;/span&gt;     &lt;span class="s2"&gt;"128"&lt;/span&gt;
    &lt;span class="n"&gt;format&lt;/span&gt;      &lt;span class="s2"&gt;"44100:16:2"&lt;/span&gt;
    &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="s2"&gt;"Greek - Rock"&lt;/span&gt; &lt;span class="c"&gt;# optional
&lt;/span&gt;    &lt;span class="n"&gt;genre&lt;/span&gt;       &lt;span class="s2"&gt;"Greek GREEK greek Greece greece"&lt;/span&gt;
    &lt;span class="n"&gt;public&lt;/span&gt;      &lt;span class="s2"&gt;"yes"&lt;/span&gt;
        &lt;span class="n"&gt;mixer_type&lt;/span&gt;  &lt;span class="s2"&gt;"software"&lt;/span&gt;      
}
&lt;span class="n"&gt;filesystem_charset&lt;/span&gt;      &lt;span class="s2"&gt;"UTF-8"&lt;/span&gt;

&lt;span class="n"&gt;replace&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; “&lt;span class="n"&gt;myuser&lt;/span&gt;” &lt;span class="n"&gt;the&lt;/span&gt; “&lt;span class="n"&gt;myuser&lt;/span&gt;” &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; “&lt;span class="n"&gt;username&lt;/span&gt;” &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;log&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt;.
&lt;span class="n"&gt;name&lt;/span&gt; “&lt;span class="n"&gt;My&lt;/span&gt; &lt;span class="n"&gt;Radio&lt;/span&gt;”
&lt;span class="n"&gt;description&lt;/span&gt; “&lt;span class="n"&gt;Greek&lt;/span&gt; – &lt;span class="n"&gt;Rock&lt;/span&gt;” &lt;span class="c"&gt;# optional
&lt;/span&gt;&lt;span class="n"&gt;genre&lt;/span&gt; “&lt;span class="n"&gt;Greek&lt;/span&gt; &lt;span class="n"&gt;GREEK&lt;/span&gt; &lt;span class="n"&gt;greek&lt;/span&gt; &lt;span class="n"&gt;Greece&lt;/span&gt; &lt;span class="n"&gt;greece&lt;/span&gt; ” &lt;span class="n"&gt;with&lt;/span&gt; &lt;span class="n"&gt;whatever&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;like&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set up mympd web UI client for mpd. I have created a script which automatically set up mympd with your radio domain.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;&lt;span class="nv"&gt;RADIO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://foo.ddns.net"&lt;/span&gt; sh /usr/src/mympd/config-helper.sh 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set apache&lt;br&gt;
Edit /etc/httpd/httpd.conf&lt;br&gt;
Be sure the lines to be uncommented&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;Listen&lt;/span&gt; 80
&lt;span class="nc"&gt;LoadModule&lt;/span&gt; proxy_module lib64/httpd/modules/mod_proxy.so
&lt;span class="nc"&gt;LoadModule&lt;/span&gt; proxy_http_module lib64/httpd/modules/mod_proxy_http.so
&lt;span class="nc"&gt;LoadModule&lt;/span&gt; proxy_wstunnel_module lib64/httpd/modules/mod_proxy_wstunnel.so
&lt;span class="nc"&gt;LoadModule&lt;/span&gt; rewrite_module lib64/httpd/modules/mod_rewrite.so
&lt;span class="nc"&gt;LoadModule&lt;/span&gt; ssl_module lib64/httpd/modules/mod_ssl.so
&lt;span class="nc"&gt;Include&lt;/span&gt; /etc/httpd/extra/httpd-vhosts.conf
&lt;span class="nc"&gt;Include&lt;/span&gt; /etc/httpd/mod_php.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And this line to be commented&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="c"&gt;#Include /etc/httpd/extra/httpd-ssl.conf&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also look for these lines to be as bellow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;IfModule&lt;/span&gt;&lt;span class="sr"&gt; dir_module&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="nc"&gt;DirectoryIndex&lt;/span&gt; index.html index.php
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;IfModule&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit /etc/httpd/extra/httpd-vhosts.conf and replace all with these lines&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="c"&gt;# Virtual Hosts&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Required modules: mod_log_config&lt;/span&gt;
&lt;span class="c"&gt;# If you want to maintain multiple domains/hostnames on your&lt;/span&gt;
&lt;span class="c"&gt;# machine you can setup VirtualHost containers for them. Most configurations&lt;/span&gt;
&lt;span class="c"&gt;# use only name-based virtual hosts so the server doesn't need to worry about&lt;/span&gt;
&lt;span class="c"&gt;# IP addresses. This is indicated by the asterisks in the directives below.&lt;/span&gt;

&lt;span class="nc"&gt;Listen&lt;/span&gt; 443
&lt;span class="nc"&gt;SSLCipherSuite&lt;/span&gt; HIGH:MEDIUM:!MD5:!RC4:!3DES
&lt;span class="nc"&gt;SSLProxyCipherSuite&lt;/span&gt; HIGH:MEDIUM:!MD5:!RC4:!3DES
&lt;span class="nc"&gt;SSLHonorCipherOrder&lt;/span&gt; &lt;span class="ss"&gt;on&lt;/span&gt; 
&lt;span class="ss"&gt;SSLProtocol&lt;/span&gt; &lt;span class="ss"&gt;all&lt;/span&gt; -SSLv3
&lt;span class="nc"&gt;SSLProxyProtocol&lt;/span&gt; &lt;span class="ss"&gt;all&lt;/span&gt; -SSLv3
&lt;span class="nc"&gt;SSLPassPhraseDialog&lt;/span&gt;  builtin
&lt;span class="nc"&gt;SSLSessionCache&lt;/span&gt;        "shmcb:/var/run/ssl_scache(512000)"
&lt;span class="nc"&gt;SSLSessionCacheTimeout&lt;/span&gt;  300
&lt;span class="c"&gt;####&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;VirtualHost&lt;/span&gt;&lt;span class="sr"&gt; *:80&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="nc"&gt;ServerAdmin&lt;/span&gt; webmaster@foo.ddns.net
    &lt;span class="nc"&gt;DocumentRoot&lt;/span&gt; "/srv/httpd/htdocs"
    &lt;span class="nc"&gt;ServerName&lt;/span&gt; foo.ddns.net
    &lt;span class="nc"&gt;ErrorLog&lt;/span&gt; "/var/log/httpd/foo.ddns.net-error_log"
    &lt;span class="nc"&gt;CustomLog&lt;/span&gt; "/var/log/httpd/foo.ddns.net-access_log" common

    &lt;span class="nc"&gt;RewriteEngine&lt;/span&gt; &lt;span class="ss"&gt;On&lt;/span&gt;
    &lt;span class="nc"&gt;RewriteCond&lt;/span&gt; %{HTTPS} &lt;span class="ss"&gt;off&lt;/span&gt;
    &lt;span class="nc"&gt;RewriteRule&lt;/span&gt; (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    &lt;span class="c"&gt;#RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;VirtualHost&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;VirtualHost&lt;/span&gt;&lt;span class="sr"&gt; *:443&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="nc"&gt;DocumentRoot&lt;/span&gt; "/srv/httpd/htdocs/"
&lt;span class="nc"&gt;ServerName&lt;/span&gt; foo.ddns.net:443
&lt;span class="nc"&gt;ErrorLog&lt;/span&gt; "/var/log/httpd/foo.ddns.net-error_log"
&lt;span class="nc"&gt;CustomLog&lt;/span&gt; "/var/log/httpd/foo.ddns.net-access_log" common

    &lt;span class="nc"&gt;SSLEngine&lt;/span&gt; &lt;span class="ss"&gt;on&lt;/span&gt;
    &lt;span class="nc"&gt;SSLCertificateFile&lt;/span&gt;      /etc/dehydrated/certs-letsencrypt/foo.ddns.net/cert.pem
    &lt;span class="nc"&gt;SSLCertificateKeyFile&lt;/span&gt;   /etc/dehydrated/certs-letsencrypt/foo.ddns.net/privkey.pem
    &lt;span class="nc"&gt;SSLCertificateChainFile&lt;/span&gt; /etc/dehydrated/certs-letsencrypt/foo.ddns.net/chain.pem

    &lt;span class="nc"&gt;RewriteEngine&lt;/span&gt; &lt;span class="ss"&gt;On&lt;/span&gt;

    &lt;span class="c"&gt;## --- myMPD Configuration ---&lt;/span&gt;
    &lt;span class="c"&gt;## Automatically add slash if user writes /mympd, then redirect to /mympd/&lt;/span&gt;
    &lt;span class="c"&gt;## The [R=301,L] makes a permanent redirect and stops processing here&lt;/span&gt;
    &lt;span class="nc"&gt;RewriteRule&lt;/span&gt; ^/mympd$ /mympd/ [R=301,L]
    &lt;span class="c"&gt;## 1. myMPD Interface&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;Location&lt;/span&gt;&lt;span class="sr"&gt; /mympd&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="c"&gt;# We want a password for user admin, to not let anyone to log in to mympd UI&lt;/span&gt;
        &lt;span class="c"&gt;# Password set with "sudo htpasswd -c /etc/httpd/.htpasswd admin"&lt;/span&gt;
        &lt;span class="nc"&gt;AuthType&lt;/span&gt; &lt;span class="ss"&gt;Basic&lt;/span&gt;
        &lt;span class="nc"&gt;AuthName&lt;/span&gt; "myMPD Control"
        &lt;span class="nc"&gt;AuthUserFile&lt;/span&gt; /etc/httpd/.htpasswd
        &lt;span class="nc"&gt;Require&lt;/span&gt; valid-user
        &lt;span class="nc"&gt;ProxyPass&lt;/span&gt; http://127.0.0.1:8081
        &lt;span class="nc"&gt;ProxyPassReverse&lt;/span&gt; http://127.0.0.1:8081
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;Location&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="c"&gt;# 2. myMPD WebSockets (Necessary for UI)&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;Location&lt;/span&gt;&lt;span class="sr"&gt; /mympd/ws&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="nc"&gt;ProxyPass&lt;/span&gt; ws://127.0.0.1:8081/ws
        &lt;span class="nc"&gt;ProxyPassReverse&lt;/span&gt; ws://127.0.0.1:8081/ws
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;Location&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;
    &lt;span class="c"&gt;# 3. static files (Required for page rendering)&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nl"&gt;Location&lt;/span&gt;&lt;span class="sr"&gt; /mympd/static&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;        &lt;span class="nc"&gt;ProxyPass&lt;/span&gt; http://127.0.0.1:8081
        &lt;span class="nc"&gt;ProxyPassReverse&lt;/span&gt; http://127.0.0.1:8081
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;Location&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span class="nl"&gt;VirtualHost&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a password for user admin so only admin (you) can log in to mympd web UI&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;htpasswd &lt;span class="nt"&gt;-c&lt;/span&gt; /etc/httpd/.htpasswd admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start httpd (apache)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;killall httpd
&lt;span class="nb"&gt;sudo &lt;/span&gt;service start httpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;check if httpd is running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps ax |grep httpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;4759 pts/2    S+     0:00 grep httpd
12079 ?        Ss     0:03 /usr/sbin/httpd -k start
12080 ?        Sl     0:03 /usr/sbin/httpd -k start
12082 ?        Sl     0:03 /usr/sbin/httpd -k start
12136 ?        Sl     0:02 /usr/sbin/httpd -k start
12304 ?        Sl     0:04 /usr/sbin/httpd -k start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start icecast&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;service start icecast
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;start mpd&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;service start mpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;start mympd&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;service start mympd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;check if icecast is running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ps ax |grep icecast
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1610 ?        Sl     0:23 /usr/bin/icecast -c /etc/icecast.xml -b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we see icecast is running using /etc/icecast.xml config&lt;/p&gt;

&lt;p&gt;check if mpd, mympd are running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ps ax |grep mpd

 1714 ?        Ssl   14:40 /usr/bin/mpd /etc/mpd.conf
 1791 ?        S      0:00 su -s /bin/sh -c /usr/bin/mympd -w /var/lib/mympd -a /var/lib/mympd/cache mympd
 1793 ?        Ssl    0:00 /usr/bin/mympd -w /var/lib/mympd -a /var/lib/mympd/cache
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we see mpd is running using /etc/mpd.conf config file and mympd is running also as user mympd which created from config-helper.sh script above.&lt;/p&gt;

&lt;p&gt;check in which ports icecast, mpd, mympd are listening (I got these from my icecast, mpd, mympd used for my radio station to show the output of commands)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;netstat &lt;span class="nt"&gt;-anpt&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt;  &lt;span class="s1"&gt;'icecast'&lt;/span&gt;
we see icecast is listening on 8000, 8443 from outside 127.0.0.1:8000 is our inside port   
tcp6       0      0 :::8000                 :::&lt;span class="k"&gt;*&lt;/span&gt;                    LISTEN      1610/icecast        
tcp6       0      0 :::8001                 :::&lt;span class="k"&gt;*&lt;/span&gt;                    LISTEN      1610/icecast        
tcp6       0      0 :::8444                 :::&lt;span class="k"&gt;*&lt;/span&gt;                    LISTEN      1610/icecast        
tcp6       0      0 :::8443                 :::&lt;span class="k"&gt;*&lt;/span&gt;                    LISTEN      1610/icecast        
tcp6       0      0 192.168.1.210:8443      85.75.211.110:43202     ESTABLISHED 1610/icecast        
tcp6       0      0 127.0.0.1:8000          127.0.0.1:39658         ESTABLISHED 1610/icecast  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;192.168.1.210:8443 is my local ip to secure port 8443 and 85.75.211.110 is my dynamic ip i get from my host provider this is the ip of my meraklis.ddns.net domain so when user type on firefox &lt;a href="https://meraklis.ddns.net" rel="noopener noreferrer"&gt;https://meraklis.ddns.net&lt;/a&gt; as we see bellow they are listening to my “Meraklis Radio”&lt;br&gt;
or typing &lt;a href="https://meraklis.ddns.net:8443/live" rel="noopener noreferrer"&gt;https://meraklis.ddns.net:8443/live&lt;/a&gt; on vlc or smplayer or exaile they llisten to “My Radio” station. Same for &lt;a href="http://meraklis.ddns.net:8000/live" rel="noopener noreferrer"&gt;http://meraklis.ddns.net:8000/live&lt;/a&gt; unsecured connection used by &lt;a href="https://dir.xiph.org/" rel="noopener noreferrer"&gt;https://dir.xiph.org/&lt;/a&gt; radios directory&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;netstat &lt;span class="nt"&gt;-anpt&lt;/span&gt; |grep mpd

tcp        0      0 127.0.0.1:6600          0.0.0.0:&lt;span class="k"&gt;*&lt;/span&gt;               LISTEN      1714/mpd                
tcp        0      0 127.0.0.1:6600          127.0.0.1:50884         ESTABLISHED 1714/mpd            
tcp        0      0 127.0.0.1:39658         127.0.0.1:8000          ESTABLISHED 1714/mpd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we see that mpd is listening in its default port 6600. And port 8000 send to icecast media server the streaming to go outside to internet&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;netstat &lt;span class="nt"&gt;-anpt&lt;/span&gt; |grep mympd

tcp        0      0 127.0.0.1:8081          0.0.0.0:&lt;span class="k"&gt;*&lt;/span&gt;               LISTEN      1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:34994         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:52924         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:56132         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:33188         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:50882         127.0.0.1:6600          ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:50884         127.0.0.1:6600          ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:38972         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:35334         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:56130         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:41094         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:35022         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:38970         ESTABLISHED 1793/mympd          
tcp        0      0 127.0.0.1:8081          127.0.0.1:34992         ESTABLISHED 1793/mympd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we see mympd is listening to internal port 8081 we do not need this port to be opened&lt;/p&gt;

&lt;p&gt;If you have created your playlists then typing on Firefox&lt;br&gt;
&lt;a href="https://foo.ddns.net/mympd" rel="noopener noreferrer"&gt;https://foo.ddns.net/mympd&lt;/a&gt;&lt;br&gt;
you will see mympd interface from where can add playlists or songs to play in random or single mode etc&lt;/p&gt;

&lt;p&gt;Your stream url is &lt;a href="https://foo.ddns.net:8443/live" rel="noopener noreferrer"&gt;https://foo.ddns.net:8443/live&lt;/a&gt; or insecure &lt;a href="http://foo.ddns.net:8000" rel="noopener noreferrer"&gt;http://foo.ddns.net:8000&lt;/a&gt;&lt;br&gt;
&lt;a href="https://foo.ddns.net:8443" rel="noopener noreferrer"&gt;https://foo.ddns.net:8443&lt;/a&gt; goes to icecast web interface where can log in as administrator using username:admin and pass:hackme&lt;br&gt;
typing &lt;a href="https://foo.ddns.net/mympd" rel="noopener noreferrer"&gt;https://foo.ddns.net/mympd&lt;/a&gt; on you mobile phone can control your radio from where you are.&lt;br&gt;
also for listen from you phone type &lt;a href="https://foo.ddns.net:8443/live" rel="noopener noreferrer"&gt;https://foo.ddns.net:8443/live&lt;/a&gt;&lt;br&gt;
or for icecast web type &lt;a href="https://foo.ddns.net:8443" rel="noopener noreferrer"&gt;https://foo.ddns.net:8443&lt;/a&gt; or &lt;a href="http://foo.ddns.net:8000" rel="noopener noreferrer"&gt;http://foo.ddns.net:8000&lt;/a&gt;&lt;br&gt;
These &lt;a href="https://foo.ddns.net:8443/live" rel="noopener noreferrer"&gt;https://foo.ddns.net:8443/live&lt;/a&gt; or &lt;a href="http://foo.ddns.net:8000/live" rel="noopener noreferrer"&gt;http://foo.ddns.net:8000/live&lt;/a&gt; can be used on vlc or smplayer or exaile to listen to your radio from outside on internet.&lt;/p&gt;

&lt;p&gt;To have users to listen to your radio without to type &lt;a href="https://foo.ddns.net:8443/live" rel="noopener noreferrer"&gt;https://foo.ddns.net:8443/live&lt;/a&gt; just &lt;a href="https://foo.ddns.net" rel="noopener noreferrer"&gt;https://foo.ddns.net&lt;/a&gt;&lt;br&gt;
copy these to /var/www/htdocs/index.html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;####### index.html ############
&lt;span class="c"&gt;&amp;lt;!-- Created by Dimitris Tzemos - Mar 2026 --&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- Primary Meta Tags --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;My Radio - Live Rock, folk | foo.ddns.net&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"shortcut icon"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/favicon.ico"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"canonical"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://foo.ddns.net"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"title"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"My Radio - Live Rock"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#006400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* The dark green you chose */&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* White letters to be read everywhere */&lt;/span&gt;
            &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* A little more space to "breathe" the page */&lt;/span&gt;
            &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'Segoe UI'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Tahoma&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Geneva&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Verdana&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;min-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100vh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Centering to make the radio look nice */&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nt"&gt;h2&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.8em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* I changed #333 to white to make it visible */&lt;/span&gt;
            &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.1em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.9&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Slightly softer white for the text */&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="c"&gt;/* Style for the player container */&lt;/span&gt;
            &lt;span class="nf"&gt;#muses-container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nl"&gt;margin-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* To center correctly */&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
    &lt;span class="nc"&gt;.music-widget&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="py"&gt;backdrop-filter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;blur&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c"&gt;/* Blur effect */&lt;/span&gt;
        &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;15px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;inline-block&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'Segoe UI'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Roboto&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;sans-serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt; &lt;span class="m"&gt;32px&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;31&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;38&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;135&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.15&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;min-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;300px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.widget-header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.8rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;letter-spacing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#888&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.widget-info&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
       &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;letter-spacing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#888&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.radiostation-title&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.1rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;45deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#2c3e50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-background-clip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-text-fill-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nc"&gt;.info-title&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.85rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;45deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#2c3e50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-background-clip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-text-fill-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;#stream-info&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.0rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;45deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#2c3e50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-background-clip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-text-fill-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="nf"&gt;#radio-title&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.0rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;45deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#2c3e50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-background-clip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-text-fill-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;#title&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.0rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;45deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#2c3e50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-background-clip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-text-fill-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;#artist&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1.0rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;45deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#2c3e50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#000000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-background-clip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;-webkit-text-fill-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="m"&gt;4px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;   
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&lt;/span&gt; &lt;span class="na"&gt;style=&lt;/span&gt;&lt;span class="s"&gt;"font-size: 1.2em; color: #ffffff;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;The radio for music lovers&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Welcome to &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;My Radio&lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&lt;/span&gt;, the station that honors &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;good singing.&lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"muses-container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="c"&gt;&amp;lt;!-- BEGINS: AUTO-GENERATED MUSES RADIO PLAYER CODE --&amp;gt;&lt;/span&gt;
    https://hosted.muses.org/mrp.js
    &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/javascript"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
         &lt;span class="nx"&gt;MRP&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://foo.ddns.net:8443/live&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;!--&lt;/span&gt; &lt;span class="nx"&gt;Replace&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ddns&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;net&lt;/span&gt; &lt;span class="kd"&gt;with&lt;/span&gt; &lt;span class="nx"&gt;your&lt;/span&gt; &lt;span class="nx"&gt;own&lt;/span&gt; &lt;span class="nx"&gt;domain&lt;/span&gt; &lt;span class="o"&gt;--&amp;gt;&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;codec&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mp3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;volume&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;65&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;autoplay&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;forceHTML5&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;jsevents&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;buffering&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;metadataInterval&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;My Radio&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;welcome&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Welcome to...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lang&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;wmode&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;transparent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;skin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;oldradio&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;includeInLayout&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;width&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;205&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;height&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;132&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;           
    &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;       
    &lt;span class="c"&gt;&amp;lt;!-- ENDS: AUTO-GENERATED MUSES RADIO PLAYER CODE --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!-- ########################  For proxy.php ######################################################## 
         ##  which shows a transparent rectangle where the title of current playing song appears ## --&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;    
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"music-widget"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"radiostation-title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;My Radio&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"info-title"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Now it's playing...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"stream-info"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Loading...&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ICECAST_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;proxy.php&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MOUNT_POINT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/live&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;updateSong&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ICECAST_URL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Finding the source (source)&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sources&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;icestats&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;currentSource&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;currentSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mount&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;MOUNT_POINT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;currentSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentSource&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;currentSource&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stream-info&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;innerText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;currentSource&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="c1"&gt;// Add check if mount point actually exists in the data&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentSource&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;currentSource&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;songTitle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;currentSource&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="c1"&gt;// Avoid unnecessary updates to the DOM if the title has not changed&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stream-info&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;innerText&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;songTitle&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stream-info&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;innerText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;songTitle&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stream-info&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;innerText&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;On air...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Connection error:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="c1"&gt;// Run every 10 seconds&lt;/span&gt;
    &lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;updateSong&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;updateSong&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// First run immediately&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;17.1 copy the lines bellow to /var/www/htdocs/proxy.php&lt;br&gt;
proxy.php shows a transparent rectangle where the title of current playing song appears&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="c1"&gt;// We allow the browser to read the data (CORS)&lt;/span&gt;
&lt;span class="nb"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Access-Control-Allow-Origin: *"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Content-Type: application/json; charset=utf-8"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Τhe full URL of your Icecast statistics&lt;/span&gt;
&lt;span class="nv"&gt;$url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"https://foo.ddns.net:8443/status-json.xsl"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// replace foo.ddns.net with you own domain &lt;/span&gt;
&lt;span class="nv"&gt;$ch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;curl_init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nb"&gt;curl_setopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;CURLOPT_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;curl_setopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;CURLOPT_RETURNTRANSFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;curl_setopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;CURLOPT_SSL_VERIFYPEER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Important for ddns/self-signed SSL&lt;/span&gt;
&lt;span class="nb"&gt;curl_setopt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;CURLOPT_USERAGENT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;curl_exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;curl_close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$ch&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// If Icecast returns JSON in a callback or has spaces, we clean it up&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nb"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To see how this index.html is looking and also the result of all these above click in this linkMy Radio to listen to “My Radio” we have created.&lt;br&gt;
To see the “My Radio” running on my laptop, i have changed the foo.ddns.net to meraklis.ddns.net and also i discovered that running two instances of icecast, mpd and mympd with different configurations can have two stations to stream different songs under the same dynamic ip.&lt;br&gt;
Furthermore can create some php pages and a mysql database where listeners can send you radio orders to play. If anyone is interesting can tell me to send or post here the php files and details. You can see the admin_radio_orders page in the admin_orders-img2.png admin_orders-img3.png on the screenshots link bellow.&lt;/p&gt;

&lt;p&gt;The two radio stations &lt;a href="https://meraklis.ddns.net/myradio.html" rel="noopener noreferrer"&gt;My Radio&lt;/a&gt; created for this post and &lt;a href="https://meraklis.ddns.net" rel="noopener noreferrer"&gt;Meraklis Radio&lt;/a&gt; are running on my lenovo laptop 8GB RAM and from a 64GB USB stick where slackel is installed (real installation), two years ago, which upgraded to latest updates almost every day because of slackware current tree.&lt;/p&gt;

&lt;p&gt;More &lt;a href="https://people.salixos.org/djemos/radio-imgs/" rel="noopener noreferrer"&gt;screenshots&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"My Radio" station we created streaming&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2imufm0d7u5eyb6tkdna.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2imufm0d7u5eyb6tkdna.png" alt="" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MyMPD web UI&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhbeupwrxepbxkjwcgc5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhbeupwrxepbxkjwcgc5.png" alt="MyMPD web UI" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;icecast media server web UI&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbffp2b9vzj0wduw2ril.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwbffp2b9vzj0wduw2ril.png" alt="icecast media server web UI" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Slackel 7.7 MATE</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Tue, 27 Feb 2024 20:03:10 +0000</pubDate>
      <link>https://dev.to/djemos/slackel-77-mate-5mp</link>
      <guid>https://dev.to/djemos/slackel-77-mate-5mp</guid>
      <description>&lt;p&gt;&lt;a href="http://www.slackel.gr"&gt;Slackel&lt;/a&gt; 7.7 MATE has been released.&lt;br&gt;
Includes the Linux kernel 6.6.11, MATE 1.26.2 and latest updates from &lt;a href="http://www.slackware.com/"&gt;Slackware's&lt;/a&gt; 'Current' tree. Also includes salixtools borrowed from &lt;a href="http://www.salixos.org/"&gt;Salix&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This release is available for both 32-bit and 64-bit systems. The 64-bit iso supports UEFI/EFI systems as well.&lt;/p&gt;

&lt;p&gt;The 64-bit iso image support booting on UEFI systems. &lt;br&gt;
Iso images are isohybrid.&lt;br&gt;
Iso images can be used as installation media.&lt;/p&gt;

&lt;p&gt;This release includes mozilla-firefox 121.0.1, mozilla-thunderbird 115.6.1, libreoffice 7.6.2, gimp 2.10.36, smtube 21.10.0, smplayer 23.12.0, mpv 0.34.1, MPlayer-20221009, exaile 4.1.1, brasero 3.12.2, isomaster 1.3.13, pidgin 2.14.12, transmission 2.94 and many more. It includes the flatpak so the user has access to dozens of apps to install.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gui tools developed in house also included:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/djemos/instonusb"&gt;instonusb&lt;/a&gt;&lt;/strong&gt; to create a live slackel usb stick with persistent encryption file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/djemos/multibootusb"&gt;multibootusb&lt;/a&gt;&lt;/strong&gt; to create a live usb including 32 and 64 bit live editions of slackel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/djemos/slackel-live-installer"&gt;Slackel Live Installer&lt;/a&gt;&lt;/strong&gt; (SLI) to install slackel to internal or external USB SSD or USB stick.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/djemos/install-upgrade-kernel-ext-usb-gtk"&gt;install-upgrade-kernel-ext-usb-gtk&lt;/a&gt;&lt;/strong&gt; gui tool to install or upgrade kernel for real installations on external usb stick or ssd disk.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/djemos/install-upgrade-kernel-gtk"&gt;install-upgrade-kernel-gtk&lt;/a&gt;&lt;/strong&gt; gui tool to install or upgrade kernel for real installations on internal hd or ssd or nvme disk.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can also use the script install_on_usb.sh existed in iso in boot folder to create the usb in any distribution. Read the respective instructions in this file:  &lt;a href="http://www.slackel.gr/isos/slackel-live/README_INSTALL_ON_USB.TXT"&gt;README_INSTALL_ON_USB.TXT&lt;/a&gt;&lt;br&gt;
Windows users can use the &lt;a href="https://rufus.ie/en/"&gt;rufus&lt;/a&gt; application which exists in the iso image in boot folder to transfer the iso to a USB stick under windows system. Be sure to name the usb label "LIVE" without quotes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slackel Live Installer&lt;/strong&gt; (SLI) can do a &lt;strong&gt;real installation&lt;/strong&gt; to an external usb stick or usb ssd or usb hard disk, creating the necessary initrd for booting. For this, just create a msdos partition table on /dev/sdb or /dev/sdc and a linux ext4 partition on /dev/sdb1 or on /dev/sdc1 where /dev/sdb is your first usb device, /dev/sdc the second usb plug in device. Sign the /dev/sdb1 or /dev/sdc1 bootable. (Note that if you have an nvme internal disk as in modern laptops then your first usb device will be /dev/sda1, the second /dev/sdb) &lt;br&gt;
Create also a linux swap partition to /dev/sdb2 or /dev/sdc2, with size 4 GB according the memory you have.&lt;br&gt;
Do not create a EFI partition.&lt;br&gt;
If you boot using a slackel live mate dvd then your external usb device will be recognized as /dev/sdb.&lt;br&gt;
If you boot using a slackel live mate usb then the second usb you will use for real installation it will be recognized as /dev/sdc. (or /dev/sdb if you have an nvme internal disk e.g. modern laptops)&lt;/p&gt;

&lt;p&gt;Of cource can create a gpt partition table, a fat32 partition (for EFI) on /dev/sdb1 which have to be signed esb,boot, an ext4 linux partition on /dev/sdb2 and a swap partition /dev/sdb3. This is the same installation as on internal ssd disk. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In details:&lt;br&gt;
Steps needed:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;boot with live iso or live usb. After we see live environment, plug in the usb stick or external ssd or hd disk where we like to install slackel.&lt;/li&gt;
&lt;li&gt;this external device will recognized as /dev/sdb or /dev/sdc as i mention above. Or /dev/sda if you have an nvme internal disk.&lt;/li&gt;
&lt;li&gt;run sli&lt;/li&gt;
&lt;li&gt;press gparted button and pick up sdb or sdc. Unmount any partitions if are mounted or usb had a previous installation. Then delete all partitions on this device.&lt;/li&gt;
&lt;li&gt;create a msdos partition table on this device (/dev/sdb or /dev/sdc) or /dev/sda1 if you have an nvme internal disk.&lt;/li&gt;
&lt;li&gt;create an ext4 partition where we will install the linux system and a 2 or 4 GB swap partition according the memory you have. Check the linux partition /dev/sdb1 or /dev/sdc1 bootable&lt;/li&gt;
&lt;li&gt;close the gparted and will return to sli. You will see on Install location "dev/sdb1" or "/dev/sdc1" or "/dev/sda1" if you have an nvme internal disk.&lt;/li&gt;
&lt;li&gt;check grub as bootloader.&lt;/li&gt;
&lt;li&gt;Set root password, user name and user password.&lt;/li&gt;
&lt;li&gt;choose full installation which is the default and click on "install live system"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;after installation finishes close sli.&lt;/p&gt;

&lt;p&gt;shutdown, unplug both usb's and plug in only the one where you installed the system.&lt;br&gt;
Power on.&lt;br&gt;
Then press fn+F12 (in my case for lenovo laptop) and from bios boot menu choose the usb to boot.&lt;br&gt;
To upgrade the kernel in the future, type in a mate-terminal&lt;br&gt;
sudo install-upgrade-kernel upgrade huge (This upgrades the kernel and also run update-grub. For internal or external installation)&lt;br&gt;
sudo make_initrd_update_grub (This needed only if we have installed on an external usb device, otherwise system will not boot. Do not use it if have installed on an internal hard disk or ssd e.g. /dev/sda)&lt;br&gt;
OR use from menus the &lt;strong&gt;install-upgrade-kernel-ext-usb-gtk  gui&lt;/strong&gt; tool to install or upgrade kernel for real installations on external usb stick or ssd disk.&lt;br&gt;
and &lt;strong&gt;install-upgrade-kernel-gtk&lt;/strong&gt; gui tool to install or upgrade kernel for real installations on internal hd or ssd or nvme disk.&lt;/p&gt;

&lt;p&gt;I hope that fans of mate  will find it useful.&lt;/p&gt;

&lt;p&gt;It is good to read the &lt;a href="http://www.slackel.gr/forum/viewtopic.php?f=7&amp;amp;t=580"&gt;Slackel Startup Guide&lt;/a&gt; before install Slackel MATE.&lt;/p&gt;

&lt;p&gt;To browse samba shares with caja type in a mate-terminal &lt;strong&gt;caja smb://ip-address/sharename&lt;/strong&gt; (e.g. caja smb://192.168.1.8/tmp)&lt;/p&gt;

&lt;p&gt;(The root password for the live CD is “live”. Standard user login is “one” with password: "one") (no quotation marks).&lt;br&gt;
&lt;strong&gt;For installation and for all work required administration privileges the super user "one" with password "one" is used.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minimum system requirements:&lt;/strong&gt; &lt;a href="https://distrowatch.com/?newsid=12044"&gt;Mate&lt;/a&gt; is much heavier than &lt;a href="https://distrowatch.com/?newsid=11964"&gt;openbox&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Minimum Core 2 Duo or Recommended Core i3 &lt;/li&gt;
&lt;li&gt;3GB (RAM) or 4GB (RAM) for libreoffice, firefox and other heavy applications.&lt;/li&gt;
&lt;li&gt;20 GB HDD&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Slackel 7.7 MATE maintains its user-friendly approach, combining the latest updates, convenient GUI tools, and enhanced compatibility. Whether you’re a seasoned user or new to Slackel, this release promises an enriched Linux experience.&lt;/p&gt;

&lt;p&gt;Elevate your open-source journey with Slackel 7.7 MATE – download now and explore the future of Linux computing!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can download Slackel 7.7 MATE iso image from the following links, using the Sourceforge servers.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live iso images:&lt;/strong&gt; Can be used also to install the system to hard disk or USB stick.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slackel64 7.7 "Live MATE"  (64-bit)&lt;/strong&gt;&lt;br&gt;
(size: 2853 MB, &lt;strong&gt;md5:&lt;/strong&gt; 6b2c91913d346fcdf72b265776989e26 &lt;strong&gt;sha1:&lt;/strong&gt; b5aecc68987c053f79d2f4f64e140379a196f805)&lt;br&gt;
Sourceforge: &lt;a href="https://sourceforge.net/projects/slackel/files/mate/slackellive64-mate-7.7.iso/download"&gt;slackellive64-mate-7.7.iso&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sourceforge.net/projects/slackel/files/mate/slackellive64-mate-7.7.pkglist/download"&gt;pkglist&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slackel 7.7 "Live MATE" (32-bit)&lt;/strong&gt;&lt;br&gt;
(size: 2798 MB, &lt;strong&gt;md5:&lt;/strong&gt; ea8fae13e6b264d6b1a80044092e37a5 &lt;strong&gt;sha1:&lt;/strong&gt; cdb0cb2886c10aa7578eef76e2c9f269438b14aa)&lt;br&gt;
Sourceforge: &lt;a href="https://sourceforge.net/projects/slackel/files/mate/slackellive-mate-7.7.iso/download"&gt;slackellive-mate-7.7.iso&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sourceforge.net/projects/slackel/files/mate/slackellive-mate-7.7.pkglist/download"&gt;pkglist&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have fun.&lt;br&gt;
Dimitris Tzemos&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqietulfcz2znjfuhm0qo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqietulfcz2znjfuhm0qo.png" alt="Slackel 7.7 Mate" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>slackel</category>
      <category>distribution</category>
      <category>linux</category>
      <category>desktop</category>
    </item>
    <item>
      <title>polytonic_to_monotonic.py (convert a polytonic ancient Greek document to monotonic)</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sun, 17 Nov 2019 19:43:27 +0000</pubDate>
      <link>https://dev.to/djemos/polytonictomonotonic-py-2nhb</link>
      <guid>https://dev.to/djemos/polytonictomonotonic-py-2nhb</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/djemos/polytonic_to_monotonic.py"&gt;https://github.com/djemos/polytonic_to_monotonic.py&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a python program to convert a polytonic ancient Greek document to monotonic&lt;/p&gt;

&lt;p&gt;Usage: python ./polytonic_to_monotonic.py polytonic_file monotonic_file&lt;/p&gt;

&lt;p&gt;Save your ancient Greek polytonic text to a file e.g. polyt.txt then run&lt;/p&gt;

&lt;p&gt;python ./remove_accents.py polyt.txt mono.txt&lt;br&gt;
The mono.txt file will contain the monotonic text.&lt;/p&gt;

&lt;p&gt;==Ancient Greek doc==&lt;br&gt;
Ὦ κοινὸν αὐτάδελφον Ἰσμήνης κάρα,&lt;br&gt;
ἆρ᾿ οἶσθ᾿ ὅ τι Ζεὺς τῶν ἀπ᾿ Οἰδίπου κακῶν&lt;br&gt;
ὁποῖον οὐχὶ νῷν ἔτι ζώσαιν τελεῖ&lt;br&gt;
Οὐδὲν γὰρ οὔτ᾿ ἀλγεινὸν οὔτ᾿ ἄτης ἄτερ&lt;br&gt;
οὔτ᾿ αἰσχρὸν οὔτ᾿ ἄτιμόν ἐσθ᾿ ὁποῖον οὐ&lt;br&gt;
τῶν σῶν τε κἀμῶν οὐκ ὄπωπ᾿ ἐγὼ κακῶν.&lt;br&gt;
Καὶ νῦν τί τοῦτ᾿ αὖ φασι πανδήμῳ πόλει&lt;br&gt;
κήρυγμα θεῖναι τὸν στρατηγὸν ἀρτίως;&lt;br&gt;
Ἔχεις τι κεἰσήκουσας; ἤ σε λανθάνει&lt;br&gt;
πρὸς τοὺς φίλους στείχοντα τῶν ἐχθρῶν κακά;&lt;/p&gt;

&lt;p&gt;==mono.txt==&lt;br&gt;
Ω κοινὸν αυτάδελφον Ισμήνης κάρα,&lt;br&gt;
αρ᾿ οίσθ᾿ ό τι Ζεὺς τών απ᾿ Οιδίπου κακών&lt;br&gt;
οποίον ουχὶ νων έτι ζώσαιν τελεί&lt;br&gt;
Ουδέν γὰρ ούτ᾿ αλγεινὸν ούτ᾿ άτης άτερ&lt;br&gt;
ούτ᾿ αισχρὸν ούτ᾿ άτιμόν εσθ᾿ οποίον ου&lt;br&gt;
τών σών τε καμών ουκ όπωπ᾿ εγὼ κακών.&lt;br&gt;
Καὶ νύν τί τούτ᾿ αύ φασι πανδήμω πόλει&lt;br&gt;
κήρυγμα θείναι τὸν στρατηγὸν αρτίως;&lt;br&gt;
Έχεις τι κεισήκουσας; ή σε λανθάνει&lt;br&gt;
πρὸς τοὺς φίλους στείχοντα τών εχθρών κακά;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>remove_accents.py (remove all accents from a polytonic Greek document)</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sun, 17 Nov 2019 19:41:59 +0000</pubDate>
      <link>https://dev.to/djemos/removeaccents-py-5dmd</link>
      <guid>https://dev.to/djemos/removeaccents-py-5dmd</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/djemos/remove_accents.py"&gt;https://github.com/djemos/remove_accents.py&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a python program to remove all accents from a polytonic ancient Greek document&lt;/p&gt;

&lt;p&gt;Usage: python ./remove_accents.py polytonic_file monotonic_file&lt;/p&gt;

&lt;p&gt;Save your ancient Greek polytonic text to a file e.g. polyt.txt then run&lt;/p&gt;

&lt;p&gt;python ./remove_accents.py polyt.txt mono.txt&lt;/p&gt;

&lt;p&gt;You will get the new text with no accents in the file mono.txt&lt;/p&gt;

&lt;p&gt;==Ancient Greek doc==&lt;br&gt;
Ὦ κοινὸν αὐτάδελφον Ἰσμήνης κάρα,&lt;br&gt;
ἆρ᾿ οἶσθ᾿ ὅ τι Ζεὺς τῶν ἀπ᾿ Οἰδίπου κακῶν&lt;br&gt;
ὁποῖον οὐχὶ νῷν ἔτι ζώσαιν τελεῖ&lt;br&gt;
Οὐδὲν γὰρ οὔτ᾿ ἀλγεινὸν οὔτ᾿ ἄτης ἄτερ&lt;br&gt;
οὔτ᾿ αἰσχρὸν οὔτ᾿ ἄτιμόν ἐσθ᾿ ὁποῖον οὐ&lt;br&gt;
τῶν σῶν τε κἀμῶν οὐκ ὄπωπ᾿ ἐγὼ κακῶν.&lt;br&gt;
Καὶ νῦν τί τοῦτ᾿ αὖ φασι πανδήμῳ πόλει&lt;br&gt;
κήρυγμα θεῖναι τὸν στρατηγὸν ἀρτίως;&lt;br&gt;
Ἔχεις τι κεἰσήκουσας; ἤ σε λανθάνει&lt;br&gt;
πρὸς τοὺς φίλους στείχοντα τῶν ἐχθρῶν κακά;&lt;/p&gt;

&lt;p&gt;==mono.txt==&lt;br&gt;
Ω κοινὸν αυτάδελφον Ισμήνης κάρα,&lt;br&gt;
αρ᾿ οισθ᾿ ό τι Ζεὺς τών απ᾿ Οιδίπου κακών&lt;br&gt;
οποίον ουχὶ νων έτι ζώσαιν τελεί&lt;br&gt;
Ουδέν γὰρ ούτ᾿ αλγεινὸν ούτ᾿ άτης άτερ&lt;br&gt;
ούτ᾿ αισχρὸν ούτ᾿ άτιμόν εσθ᾿ οποίον ου&lt;br&gt;
τών σών τε καμών ουκ όπωπ᾿ εγὼ κακών.&lt;br&gt;
Καὶ νυν τί τουτ᾿ αυ φασι πανδήμω πόλει&lt;br&gt;
κήρυγμα θείναι τὸν στρατηγὸν αρτίως;&lt;br&gt;
Έχεις τι κεισήκουσας; ή σε λανθάνει&lt;br&gt;
πρὸς τοὺς φίλους στείχοντα τών εχθρών κακά;&lt;/p&gt;

</description>
      <category>python</category>
      <category>ancient</category>
      <category>greek</category>
      <category>polytonic</category>
    </item>
    <item>
      <title>How to Greek polytonic on openbox</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sun, 11 Aug 2019 09:49:02 +0000</pubDate>
      <link>https://dev.to/djemos/how-to-greek-polytonic-on-openbox-55a2</link>
      <guid>https://dev.to/djemos/how-to-greek-polytonic-on-openbox-55a2</guid>
      <description>&lt;p&gt;There are not only Greek users but other users as well who want to write greek polytonic e.g. in universities. This might be helpful for anyone interesting.&lt;/p&gt;

&lt;p&gt;Writing greek polytonic, monotonic and ancient, modern spell checking on LibreOffice and Openbox.&lt;br&gt;
In slackel all these are set up in the live iso and after installing the system on hard disk or usb stick. So for slackel users there is no need to follow these steps.&lt;/p&gt;

&lt;p&gt;==set the key==&lt;br&gt;
Open with geany the file ~/.config/openbox/rc.xml&lt;br&gt;
e.g. geany ~/.config/openbox/rc.xml&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;go to line 342 (or find the last row with /keybind and add the lines bellow)&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          &amp;lt;keybind key="C-1"&amp;gt;
           &amp;lt;action name="Execute"&amp;gt;
            &amp;lt;command&amp;gt;sh ~/.polytonic&amp;lt;/command&amp;gt;
             &amp;lt;startupnotify&amp;gt;
              &amp;lt;enabled&amp;gt;yes&amp;lt;/enabled&amp;gt;
              &amp;lt;name&amp;gt;Polytonic/Monotonic&amp;lt;/name&amp;gt;
             &amp;lt;/startupnotify&amp;gt;
            &amp;lt;/action&amp;gt;
           &amp;lt;/keybind&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Save the file&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;==Create the polytonic file==&lt;br&gt;
Create the file ~/.polytonic&lt;/p&gt;

&lt;p&gt;geany ~/.polytonic and paste the lines&lt;/p&gt;

&lt;p&gt;#!/bin/sh&lt;br&gt;
   # Dimitris Tzemos &lt;a href="mailto:dijemos@gmail.com"&gt;dijemos@gmail.com&lt;/a&gt;&lt;br&gt;
   # Αρχείο για αλλαγή μονοτονικού πολυτονικού πληκτρολογίου&lt;br&gt;
   # για συγγραφή αρχαίων κειμένων&lt;br&gt;
   # File to change from greek monotonic to greek polytonic keyboard&lt;br&gt;
   # to type ancient greek documents.&lt;br&gt;
   #&lt;br&gt;
   check=$(setxkbmap -print | grep 'extended')&lt;br&gt;
   if [ -z "$check" ];then&lt;br&gt;
        setxkbmap us,el -variant ,extended&lt;br&gt;
        zenity --info --timeout 1 --text 'Μονοτονικό πληκτρολόγιο ενεργό' 1&lt;br&gt;
   else&lt;br&gt;
        setxkbmap us,el -variant ,polytonic&lt;br&gt;
        zenity --info --timeout 1 --text 'Πολυτονικό πληκτρολόγιο ενεργό' 1&lt;br&gt;
   fi&lt;br&gt;
   if [ -r /etc/X11/Xmodmap ];then xmodmap /etc/X11/Xmodmap;fi&lt;br&gt;
   if [ -r "$HOME"/.Xmodmap ];then xmodmap "$HOME"/.Xmodmap;fi&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save the file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;==Messages ==&lt;br&gt;
 Μονοτονικό πληκτρολόγιο ενεργό = Monotonic keyboard active&lt;br&gt;&lt;br&gt;
 Πολυτονικό πληκτρολόγιο ενεργό = Polytonic keyboard active&lt;br&gt;
 you can change greek messages with english ones above if you like.&lt;/p&gt;

&lt;p&gt;Now every time you press Ctrl+1 change between monotonic to polytonic and polytonic to monotonic&lt;/p&gt;

&lt;p&gt;==Libreoffice==&lt;br&gt;
 For greek spelling modern and/or ancient greek download these files and install them from libreoffice tools-&amp;gt; extensions&lt;/p&gt;

&lt;p&gt;modern greek&lt;br&gt;
 &lt;a href="http://sourceforge.net/projects/aoo-extensions/files/1411/2/el_gr_v110.oxt/download"&gt;http://sourceforge.net/projects/aoo-extensions/files/1411/2/el_gr_v110.oxt/download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ancient greek&lt;br&gt;
 &lt;a href="http://sourceforge.net/projects/aoo-extensions/files/2313/1/grc.oxt/download"&gt;http://sourceforge.net/projects/aoo-extensions/files/2313/1/grc.oxt/download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thats it!!!&lt;br&gt;
Now can write greek modern or polytonic in libreoffice and also have spell checking.&lt;/p&gt;

&lt;p&gt;To write greek polytonic press alt-shift to change keyboard and then press ctrl+1 to go to polytonic.&lt;/p&gt;

&lt;p&gt;==Keyboard typing for polytonic characters on LINUX==&lt;/p&gt;

&lt;p&gt;ά= τόνος + γράμμα (γιὰ ὁξεῖα)&lt;br&gt;
 ὰ=εἰσαγωγικά + γράμμα (γιὰ βαρεῖα)&lt;br&gt;
 ἁ=shift+εἰσαγωγικά+γράμμα&lt;br&gt;
 ἀ=shift+τόνος+γράμμα&lt;br&gt;
 ᾶ=ἀγκύλη ἀριστερή+γράμμα&lt;br&gt;
 ᾳ=ἀγκύλη δεξιά+γράμμα&lt;br&gt;
 ᾷ+αγκύλη δεξιά+ἀγκύλη ἀριστερή + γράμμα&lt;br&gt;
 ἆ=ἀγκύλη ἀριστερή+shift τόνος+γράμμα&lt;br&gt;
 ἇ=ἀγκύλη ἀριστερή+shift εἰσαγωγικά&lt;br&gt;
 ἄ=τόνος+shift τόνος+γράμμα&lt;br&gt;
 ἅ=shift εἰσαγωγικά+τόνος+γράμμα&lt;br&gt;
 ΐ=Alt Gr+τόνος σε μη πολυτονική γραμματοσειρά&lt;/p&gt;

&lt;p&gt;Accents&lt;/p&gt;

&lt;p&gt;; acute accent (ὀξεῖα)&lt;br&gt;
 ' grave accent (βαρεῖα)&lt;br&gt;
 [ circumflex (περισπωμένη)&lt;/p&gt;

&lt;p&gt;;a ά&lt;br&gt;
 'a ὰ&lt;br&gt;
 [a ᾶ&lt;/p&gt;

&lt;p&gt;Breathing&lt;/p&gt;

&lt;p&gt;: smooth breathing (ψιλὸν πνεῦμα)&lt;br&gt;
 " rough breathing (δασὺ πνεῦμα)&lt;/p&gt;

&lt;p&gt;:a ἀ&lt;br&gt;
 "a ἁ&lt;/p&gt;

&lt;p&gt;Diaresis&lt;/p&gt;

&lt;p&gt;{ diaresis (διαλυτικά)&lt;/p&gt;

&lt;p&gt;{i  ϊ&lt;/p&gt;

&lt;p&gt;Combining: Accent before breathing&lt;br&gt;
 [:a ἆ&lt;br&gt;
 ]:a ᾀ&lt;br&gt;
 ][:a ᾆ&lt;br&gt;
 ]"a ᾀ&lt;br&gt;
 ["a ἆ&lt;br&gt;
 ;:a ἄ&lt;br&gt;
 '"a ἃ&lt;br&gt;
 ':a ἅ&lt;br&gt;
 ":a ἂ&lt;/p&gt;

&lt;p&gt;== ancient Greek polytonic from Homer Iliad&lt;br&gt;
Μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος&lt;br&gt;
οὐλομένην, ἣ μυρί᾿ Ἀχαιοῖς ἄλγε᾿ ἔθηκε,&lt;br&gt;
πολλὰς δ᾿ ἰφθίμους ψυχὰς Ἄϊδι προΐαψεν&lt;br&gt;
ἡρώων, αὐτοὺς δὲ ἑλώρια τεῦχε κύνεσσιν&lt;br&gt;
οἰωνοῖσί τε πᾶσι· Διὸς δ᾿ ἐτελείετο βουλή,&lt;br&gt;
ἐξ οὗ δὴ τὰ πρῶτα διαστήτην ἐρίσαντε&lt;br&gt;
Ἀτρεΐδης τε ἄναξ ἀνδρῶν καὶ δῖος Ἀχιλλεύς.&lt;/p&gt;

&lt;p&gt;== above text in modern Greek monotonic (translation)&lt;br&gt;
Ψάλλε θεά, τον τρομερό θυμόν του Αχιλλέως&lt;br&gt;
Πώς έγινε στους Αχαιούς αρχή πολλών δακρύων.&lt;br&gt;
Που ανδράγαθες ροβόλησε πολλές ψυχές στον Άδη&lt;br&gt;
ηρώων, κι έδωκεν αυτούς αρπάγματα των σκύλων&lt;br&gt;
και των ορνέων – και η βουλή γενόταν του Κρονίδη,&lt;br&gt;
απ’ ότ’, εφιλονίκησαν κι εχωρισθήκαν πρώτα&lt;br&gt;
ο Ατρείδης, άρχος των ανδρών, και ο θείος Αχιλλέας.&lt;/p&gt;

&lt;p&gt;== Translation in English&lt;br&gt;
Sing, O goddess, the anger of Achilles son of Peleus,&lt;br&gt;
that brought countless ills upon the Achaeans.&lt;br&gt;
Many a brave soul did it send hurrying down to Hades,&lt;br&gt;
and many a hero did it yield a prey to dogs and vultures,&lt;br&gt;
for so were the counsels of Jove fulfilled from the day&lt;br&gt;
on which the son of Atreus, king of men, and great Achilles,&lt;br&gt;
first fell out with one another.&lt;/p&gt;

</description>
      <category>greek</category>
      <category>polytonic</category>
      <category>openbox</category>
      <category>libreoffice</category>
    </item>
    <item>
      <title>How to set up murmur server/mumble client</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sun, 11 Aug 2019 08:39:56 +0000</pubDate>
      <link>https://dev.to/djemos/how-to-set-up-murmur-server-mumble-client-3p1c</link>
      <guid>https://dev.to/djemos/how-to-set-up-murmur-server-mumble-client-3p1c</guid>
      <description>&lt;p&gt;This "Mumble &amp;amp; Murmur" voice chat application guide shows how to setup the murmur server on Slackel, Salix so a group of users can use &lt;br&gt;
mumble client to voice chat each other. Software used in this guide consists of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;murmur (the server application)&lt;/li&gt;
&lt;li&gt;mumble (a voice chat application for groups)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;== What is Mumble? ==&lt;br&gt;
Mumble is a voice chat application for groups. While it can be used for any kind of activity, it is primarily intended for gaming. &lt;br&gt;
It can be compared to programs like Ventrilo or TeamSpeak. People tend to simplify things, so when they talk about Mumble they either talk about "Mumble" &lt;br&gt;
the client application or about "Mumble &amp;amp; Murmur" the whole voice chat application suite.&lt;/p&gt;

&lt;p&gt;== What is Murmur? ==&lt;br&gt;
"Murmur" is the name of the server application. In any case, if anyone talks about Murmur it is for sure the server part.&lt;/p&gt;

&lt;p&gt;== Obtain a dyndns domain ==&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Obtain a DNS domain and create one with a dynamic dns provider (e.g. noip.com)&lt;/li&gt;
&lt;li&gt;Port forward  tcp, udp port 64738 using your router interface &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After that, we are ready to go on.&lt;/p&gt;

&lt;p&gt;== Getting and Installing Murmur and Mumble ==&lt;/p&gt;

&lt;p&gt;Install murmur and mumble with the usual commands:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   slapt-get -u
   slapt-get -i murmur
   slapt-get -i mumble
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;== Set Up murmur Server ==&lt;/p&gt;

&lt;p&gt;To make things easier for you just run the script on  /usr/doc/murmur-1.2.19/config-helper.sh to create mumble-server group and mumble-server user:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   sudo sh /usr/doc/murmur-1.2.19/config-helper.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The above script will also create: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/var/log/mumble-server &lt;/li&gt;
&lt;li&gt;/var/lib/mumble-server&lt;/li&gt;
&lt;li&gt;/var/run/mumble-server 
and chown these by mumble-server group,  mumble-server user&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next open as root /etc/murmur.ini&lt;br&gt;&lt;br&gt;
Change the following variables&lt;br&gt;
database=   to   database=/var/lib/mumble-server/mumble-server.sqlite&lt;br&gt;
      #logfile=murmur.log to logfile=/var/log/mumble-server/mumble-server.log&lt;br&gt;
      #pidfile= to pidfile=/var/run/mumble-server/mumble-server.pid&lt;br&gt;
The above variables are set up during installation, we just mention them here for users to know about them.&lt;br&gt;
      #welcometext=Welcome to this server running Murmur. Enjoy your stay! to welcometext="whatever you like!"&lt;br&gt;
It is important to set up this because it is the name your server will appear in public lists under your country flag&lt;br&gt;
     #registerPassword=secret to registerPassword=secret &lt;br&gt;
     #registerUrl=&lt;a href="http://mumble.sourceforge.net/"&gt;http://mumble.sourceforge.net/&lt;/a&gt; to registerUrl="your_dns_domain" (e.g. registerUrl=&lt;a href="http://myserver.noip.me"&gt;http://myserver.noip.me&lt;/a&gt;)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is important to set up this otherwise no one can finds you. &lt;/li&gt;
&lt;li&gt;It is your ip. Also put this in your router to be updated each time your ip changes. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;#uname= to uname=mumble-server &lt;/p&gt;

&lt;p&gt;this variable has also set up during installation&lt;br&gt;
Save the file /etc/murmur.ini &lt;br&gt;
and start murmur server as root&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      sudo chmod 755 /etc/rc.d/rc.murmur 
      sudo /etc/rc.d/rc.murmur  start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Even you start murmur server as root it will switch to mumble-server user ( Look above uname=mumble-server)&lt;/p&gt;

&lt;p&gt;After some minutes your murmur server will appear in  "Public Internet"  under your country flag with the name you have in registerName= variable&lt;/p&gt;

&lt;p&gt;===Setting SuperUser Password===&lt;/p&gt;

&lt;p&gt;Now you will need to set the SuperUser Password. The server should be running at this point. &lt;br&gt;
Open a terminal and write as root&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      sudo murmurd -ini /etc/murmur.ini -supw  your-password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;We will need this to set up rooms, register users, kick users etc&lt;/p&gt;

&lt;p&gt;== Set Up mumble client ==&lt;/p&gt;

&lt;p&gt;As user run mumble client. It is in Internet group of programs in menus.&lt;/p&gt;

&lt;p&gt;When mumble appears click on server --&amp;gt; connect&lt;/p&gt;

&lt;p&gt;A window appears. You will see your server name under LAN. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Right click on your server name and click "add to Favorite". &lt;/li&gt;
&lt;li&gt;Under "Favorite", Right click on your server name and click on "Edit" &lt;/li&gt;
&lt;li&gt;Delete the line next to "Address" and write there what there is in registerUrl  "without http://" (e.g. myserver.noip.me)&lt;/li&gt;
&lt;li&gt;Next to "Port" write 64738&lt;/li&gt;
&lt;li&gt;Next to "Username" write whatever nick you like &lt;/li&gt;
&lt;li&gt;Click on "OK"&lt;/li&gt;
&lt;li&gt;Click on "Connect"&lt;/li&gt;
&lt;li&gt;In the next warning message, accept the certificate. Click on "Yes"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Congratulations&lt;br&gt;
You have just connected to your murmur server.&lt;/p&gt;

&lt;p&gt;=== Connecting as SuperUser===&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;click on server -&amp;gt; connect &lt;/li&gt;
&lt;li&gt;Under "Favorite", Right click on your server name and click on "Edit" &lt;/li&gt;
&lt;li&gt;Delete the user name and write there SuperUser ( as i wrote it) &lt;/li&gt;
&lt;li&gt;Write the SuperUser password &lt;/li&gt;
&lt;li&gt;Click on "OK"&lt;/li&gt;
&lt;li&gt;Click on "Connect"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You are SuperUser. But SuperUser has no voice. So give to your previous user all SuperUser capabilities plus voice ability.&lt;/p&gt;

&lt;p&gt;=== Connecting as previous user ===&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;click on server -&amp;gt; connect &lt;/li&gt;
&lt;li&gt;Under Favorite, Right click on your server name and click on "Edit" &lt;/li&gt;
&lt;li&gt;Delete the Password &lt;/li&gt;
&lt;li&gt;Delete the SuperUser name and write there the previous user name
&lt;/li&gt;
&lt;li&gt;Click on "OK"&lt;/li&gt;
&lt;li&gt;Click on "Connect"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;== Make Your Server Public==&lt;/p&gt;

&lt;p&gt;===create a Certificate Authority (CA)===&lt;/p&gt;

&lt;p&gt;You do not have to do the following anymore. Server will registered as Public using murmur certificate. You can do these if you want to use your own certificate Authority.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;create a working directory&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   mkdir CAwork
    cd CAwork
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;first set yourself up as a CA. a CA can sign a certificate requests to create an SSL certificate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the command (a directory demoCA will be created under CAwork)&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;     /etc/ssl/misc/CA.pl -newca
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;hit enter to create CA certificate&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;enter the PEM pass phrase&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;renter the pass phrase&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;fill out the info asked for. Be sure to set all fields (for example )&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;     countryName  = GR
      stateOrProvinceName    = Some-State
      organizationName       = Internet Widgits Pty Ltd
      commonName             = ariadni.noip.me CA
      emailAddress           = webmaster@ariadni.noip.me
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make sure the commonName to be different from the commonName in the next step.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CA.pl will create a cacert.pem in the directory demoCA, the private CA key is in private/cakey.pem&lt;/p&gt;

&lt;p&gt;===Create a Certificate Request===&lt;br&gt;
next we will create a request for a server certificate.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          /etc/ssl/misc/CA.pl   -newreq-nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;some servers need a private certificate not protected by a pass phrase. the -nodes (note: no space between -newreq and -nodes) tells openssl to make an unpassword protected certificate.&lt;br&gt;
Be sure to set the Common Name to the dns name of the server that will be using it!&lt;/p&gt;

&lt;p&gt;Be sure to set all fields (for example )&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            countryName  = GR
            stateOrProvinceName  = Some-State
            organizationName     = Internet Widgits Pty Ltd
            commonName           = ariadni.noip.me
            emailAddress         = webmaster@ariadni.noip.me
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Make sure the commonName to be different from the commonName in the above step. e.g I have set the names ariadni.noip.me CA and ariadni.noip.me&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the request file will be created in the directory you're currently in  with a name of newreq.pem and the private key is in newkey.pem&lt;/p&gt;

&lt;p&gt;===Sign the request===&lt;/p&gt;

&lt;p&gt;next use your CA certificate to sign the certificate request: &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;           /etc/ssl/misc/CA.pl   -sign
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;you'll be prompted for your CA password. the info from the newreq.pem file will be displayed and you'll be asked if you want to sign it. After the certificate is signed, and you're prompted if you want to commit the certificate.&lt;/p&gt;

&lt;p&gt;The certificate is created, signed and stored in newcert.pem, in the same directory you're currently in.&lt;/p&gt;

&lt;p&gt;Now some more job and we are ready.&lt;br&gt;
The certificate has both the encoded version and a human-readable version in the same file. You can strip off the human-readable portion as follows: &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          cp demoCA/cacert.pem tmp.pem
          openssl x509 -in tmp.pem -out cert.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;cert.pem is our Root certificate&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          mv newcert.pem tmp.pem
          openssl x509 -in tmp.pem -out newcert.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;newcert.pem is our signed requested file from our Certificate Authority&lt;/p&gt;

&lt;p&gt;===Installing the Certificate and Key===&lt;br&gt;
Create a file mycert.pem with contents of both  Root Certificate Authority certificate (cert.pem) and signed certificate file (newcert.pem)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;          cat cert.pem newcert.pem &amp;gt; mycert.pem
          mv newkey.pem mykey.pem
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;After this step, you have two files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A private key in mykey.pem&lt;/li&gt;
&lt;li&gt;A combined Root Certificate Authority certificate and your signed certificate in mycert.pem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the file mycert.pem contains the certificate and mykey.pem contains the key. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;copy these two files to /etc/ where murmur.ini exists (you can copy them elsewhere but you have to put the path in murmur.ini)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Edit  /etc/murmur.ini uncomment and change the following two lines:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;         sslCert=mycert.pem
         sslKey=mykey.pem
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;===Restart murmur===&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             /etc/rc.d/rc.murmur restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Tell your friends about your murmur server and that they can found you under your country flag in Public Internet server list of mumble.&lt;br&gt;
In any case, give them your dyndns.org domain name to add it to "Favorite" (see above). &lt;br&gt;
And can connect and talk with you even your server do not appear in Public Internet server list of mumble.&lt;/p&gt;

</description>
      <category>murmur</category>
      <category>mumble</category>
      <category>chatvoice</category>
      <category>server</category>
    </item>
    <item>
      <title>How to configure my own dns server with my static ip</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sun, 11 Aug 2019 08:04:06 +0000</pubDate>
      <link>https://dev.to/djemos/how-to-configure-my-own-dns-server-with-my-static-ip-4m5f</link>
      <guid>https://dev.to/djemos/how-to-configure-my-own-dns-server-with-my-static-ip-4m5f</guid>
      <description>&lt;p&gt;Because a friend had to setup his own dns server using the static ip and installed the ubuntu on the server,&lt;br&gt;
so I set up the dns server.&lt;br&gt;
The instructions below are for any possible need to do the same.&lt;br&gt;
The domain here is my-domain.gr you replace it with your own.&lt;/p&gt;

&lt;p&gt;The following regulations apply to Ubuntu, in slackware, slackel, salix do the same in their respective files.&lt;br&gt;
The instructions are simple and not in the correct technical vocabulary to be understand from all.&lt;br&gt;
The following instructions work and of course someone else may use different settings.&lt;/p&gt;

&lt;p&gt;It is assumed that on the registrar, we maintain our domain name,  we have created a nameserver e.g. ns0.my-domain.gr giving it a static ip x1.x2.x3.x4&lt;br&gt;
We can define a second with the same static ip ns1.my-domain.gr&lt;br&gt;
Then in the domain name that we enshrine in the example my-domain.gr put as Domain Name Servers (nameservers) the ns0.my-domain.gr and ns1.my-domain.gr&lt;/p&gt;

&lt;p&gt;And also a few hours to 48 hours may need for the nameservers  to be updated with the ip corresponding to our ns0.my-domain.gr.&lt;br&gt;
So if you change the nameservers of your domain, the transition to the new hosting server will be completed in about 3 to 48 hours, depending on the company that provides you connect the Internet.&lt;br&gt;
So making a dig from any pc you will not find the domain if you do not first the nameservers around the world updated.&lt;/p&gt;

&lt;p&gt;The following we do in our own server if you run from home and have static ip or do after login to the  server we have in such a company, using ssh.&lt;br&gt;
Here as an example we use the domain my-domain.gr. You put your own which you have first-register.&lt;br&gt;
The static ip is x1.x2.x3.x4. &lt;br&gt;
x1.x2.x3.x4 replace it with your static ip&lt;br&gt;
The ip of the company's nameservers are k1.k2.k3.k4 m1.m2.m3.m4&lt;/p&gt;

&lt;p&gt;Below where is x1, x2, x3, x4, k1, k2, k3, k4, m1, m2, m3, m4 will put the corresponding numbers.&lt;/p&gt;

&lt;p&gt;== /etc/bind/named.conf.local ==&lt;br&gt;
'''A.''' file /etc/bind/named.conf.local should be: &lt;br&gt;
For slackware the file is /etc/named.conf&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;zone "my-domain.gr." IN {
  type master;
 file "/etc/bind/db.my-domain.gr"; // for slackware "/var/named/caching-example/db.my-domain.gr"
 };

  zone "x4.x3.x2.in-addr.arpa" {
  type master;
  file "/etc/bind/rev.x4.x3.x2.in-addr.arpa"; // for slackware "/var/named/caching-example/rev.x4.x3.x2.in-addr. arpa "
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;== /etc/bind/named.conf.options ==&lt;br&gt;
'''B.''' the file /etc/bind/named.conf.options should be:&lt;br&gt;&lt;br&gt;
For slackware put them in the above file /etc/named.conf&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    options {
    directory "/var/cache/bind"; // for slackware directory "/var/named";
    notify no;
    forward only;
    forwarders {k1.k2.k3.k4; m1.m2.m3.m4;}; // here we put our name servers that has given the company that runs the server.
    };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;==  /etc/resolv.conf ==&lt;br&gt;
'''C.''' the file /etc/resolv.conf &lt;br&gt;
the same for slackware &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;search my-domain.gr 
nameserver x1.x2.x3.x4
nameserver k1.k2.k3.k4
nameserver m1.m2.m3.m4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;== /etc/bind /db.my-domain.gr ==&lt;/p&gt;

&lt;p&gt;'''D.''' the file /etc/bind /db.my-domain.gr should be: &lt;br&gt;
On slackware the file is "/var/named/caching-example/db.my-domain.gr"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;;
$ TTL 604800
@ IN SOA ns0.my-domain.gr. my-domain.gr. (
                    2006081401
                     28800
                     3600
                     604800
                     38400
 )
                    IN NS ns0
                    IN NS ns1
 my-domain.gr. IN A x1.x2.x3.x4
 my-domain.gr. IN MX 10 mail.my-domain.gr.
 ns0 IN A x1.x2.x3.x4
 ns1 IN A x1.x2.x3.x4
 www IN A x1.x2.x3.x4
 mail IN A x1.x2.x3.x4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;==  /etc/bind/rev.x4.x3.x2.in-addr.arpa ==&lt;/p&gt;

&lt;p&gt;'''E.''' file /etc/bind/rev.x4.x3.x2.in-addr.arpa should be: &lt;br&gt;
On slackware the file is "/var/named/caching-example/rev.x4.x3. x2.in-addr.arpa "&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ TTL 1D 
@ IN SOA ns0.my-domain.gr. admin.my-domain.gr. (
                    2006081401 ;
                    28800 ;
                    604800 ;
                    604800 ;
                    86400
)
IN NS ns0.my-domain.gr.
x4 IN PTR my-domain.gr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;x4 is the same as the last number of the static ip (x1.x2.x3.x4)&lt;/p&gt;

&lt;p&gt;== test the server ==&lt;br&gt;
'''F.''' test the server &lt;/p&gt;

&lt;p&gt;named-checkzone-d x4.x3.x2.in-addr.arpa /etc/bind/rev.x4.x3.x2.in-addr.arpa // In slackware the file is "/var/named/caching- example/rev.x4.x3.x2.in-addr.arpa "&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  OUTPUT:
  loading "x4.x3.x2.in-addr.arpa" from "/etc/bind/rev.x4.x3.x2.in-addr.arpa" class "IN"
  zone x4.x3.x2.in-addr.arpa/IN: loaded serial 2006081401
  OK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;named-checkzone-d my-domain.gr /etc/bind/db.my-domain.gr // In slackware the file is "/var/named/caching-example/db.my-domain.gr"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  OUTPUT:
  loading "my-domain.gr" from "/etc/bind/db.my-domain.gr" class "IN"
  zone my-domain.gr/IN: loaded serial 2006081401
  OK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;== restart the bind ==&lt;br&gt;
'''G.''' We restart the bind &lt;br&gt;
/etc/init.d/bind9 restart &lt;br&gt;
For slackware /etc/rc.d/rc.bind restart or for slackel, salix "service restart bind"&lt;br&gt;
The following commands from the ssh shell should give us (instead of  x1.x2.x3.x4 put the numbers of your static ip.&lt;/p&gt;

&lt;p&gt;djemos [~] $ nslookup my-domain.gr&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Server: 192.168.1.254
  Address: 192.168.1.254 # 53
  Non-authoritative answer:
  Name: my-domain.gr
  Address: x1.x2.x3.x4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;djemos [~] $ nslookup &lt;a href="http://www.my-domain.gr"&gt;www.my-domain.gr&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Server: 192.168.1.254
 Address: 192.168.1.254 # 53
 Non-authoritative answer:
 Name: www.my-domain.gr
 Address: x1.x2.x3.x4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;djemos [~] $ nslookup mail.my-domain.gr&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Server: 192.168.1.254
 Address: 192.168.1.254 # 53
 Non-authoritative answer:
 Name: mail.my-domain.gr
 Address: x1.x2.x3.x4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;djemos [~] $ dig &lt;a href="http://www.my-domain.gr"&gt;www.my-domain.gr&lt;/a&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; ; &amp;lt;&amp;lt; &amp;gt;&amp;gt; DiG 9.7.0-P1 &amp;lt;&amp;lt; &amp;gt;&amp;gt; www.my-domain.gr
 ;; Global options: + cmd
 ;; Got answer:
 ;; - &amp;gt;&amp;gt; HEADER &amp;lt;&amp;lt; - opcode: QUERY, status: NOERROR, id: 29213
 ;; Flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
 ;; QUESTION SECTION:
 ; Www.my-domain.gr. IN A
 ;; ANSWER SECTION:
 www.my-domain.gr. 604800 IN A x1.x2.x3.x4
 ;; AUTHORITY SECTION:
 my-domain.gr. 604800 IN NS ns0.my-domain.gr.
 my-domain.gr. 604800 IN NS ns1.my-domain.gr.
;; ADDITIONAL SECTION:
ns0.my-domain.gr. 604800 IN A x1.x2.x3.x4
ns1.my-domain.gr. 604800 IN A x1.x2.x3.x4
;; Query time: 8 msec
;; SERVER: x1.x2.x3.x4 # 53 (x1.x2.x3.x4)
;; WHEN: Fri Jun 1 09:46:43 2012
;; MSG SIZE rcvd: 120
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>mail</category>
      <category>dnsserver</category>
      <category>staticip</category>
      <category>linux</category>
    </item>
    <item>
      <title>How to setup a streaming multimedia server (internet radio station)</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sat, 10 Aug 2019 20:15:32 +0000</pubDate>
      <link>https://dev.to/djemos/how-to-setup-a-streaming-multimedia-server-internet-radio-station-a2a</link>
      <guid>https://dev.to/djemos/how-to-setup-a-streaming-multimedia-server-internet-radio-station-a2a</guid>
      <description>&lt;p&gt;This is for slackel linux.&lt;br&gt;
Same settings can be used in any linux distribution. You have to install icecast, mpd and gmpc (optional) in your linux distribution.&lt;/p&gt;

&lt;p&gt;what is Icecast&lt;/p&gt;

&lt;p&gt;Icecast is free server software for streaming multimedia. Icecast, is a program that streams audio data to listeners.&lt;/p&gt;

&lt;p&gt;what is mpd&lt;/p&gt;

&lt;p&gt;mpd is a music player daemon - a daemon for playing music&lt;/p&gt;

&lt;p&gt;what is gmpc&lt;/p&gt;

&lt;p&gt;Gnome Music Player Client (gmpc) is a gui front-end for mpd&lt;/p&gt;

&lt;p&gt;Let begin:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Obtain a dns domain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;"Obtain a DNS domain" and create one with a dynamic dns provider (e.g. &lt;a href="https://www.noip.com"&gt;https://www.noip.com&lt;/a&gt; )&lt;br&gt;
  Port forward tcp, udp port 8000 using your router interface &lt;br&gt;
i hope you know how to do this. e.g. if your laptop has internal ip 192.168.2.4 for example you have to set router port forwarding 192.168.2.4 to 8000 port so users can reach you from outside to 192.168.2.4 internal ip&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Getting and Installing icecast mpd and its gui front-end gmpc&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; sudo slapt-get -u
 sudo slapt-get -i icecast mpd gmpc
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting up icecast config file&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open file /etc/icecast.xml and change some settings: &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;source-password&amp;gt;hackme&amp;lt;/source-password&amp;gt; to whatever you like
&amp;lt;relay-password&amp;gt;hackme&amp;lt;/relay-password&amp;gt; to whatever you like
&amp;lt;admin-user&amp;gt;admin&amp;lt;/admin-user&amp;gt; to whatever you like
&amp;lt;admin-password&amp;gt;hackme&amp;lt;/admin-password&amp;gt; to whatever you like
&amp;lt;shoutcast-mount&amp;gt;/live&amp;lt;/shoutcast-mount&amp;gt; to whatever you like, if it is not set then default /stream will be used e.g. set it to live

&amp;lt;hostname&amp;gt;localhost&amp;lt;/hostname&amp;gt; to your dynamic domain name e.g. mediaserver.noip.me

 &amp;lt;!-- add this if you want your station listing on icecast directory, so people all over the world can find you --&amp;gt;
 &amp;lt;directory&amp;gt;
    &amp;lt;yp-url-timeout&amp;gt;15&amp;lt;/yp-url-timeout&amp;gt;
    &amp;lt;yp-url&amp;gt;http://dir.xiph.org/cgi-bin/yp-cgi&amp;lt;/yp-url&amp;gt;
    &amp;lt;public&amp;gt;1&amp;lt;/public&amp;gt;
 &amp;lt;/directory&amp;gt;
 &amp;lt;security&amp;gt;
  &amp;lt;chroot&amp;gt;0&amp;lt;/chroot&amp;gt;
   &amp;lt;changeowner&amp;gt;
     &amp;lt;user&amp;gt;nobody&amp;lt;/user&amp;gt;
     &amp;lt;group&amp;gt;nogroup&amp;lt;/group&amp;gt;
   &amp;lt;/changeowner&amp;gt;
  &amp;lt;/security&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Save file /etc/icecast.xml &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;prepare your mp3 files directory&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;put your mp3 files under a directory e.g. ~/Desktop/mp3&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;create your .mpdconf&lt;br&gt;
run&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; mpd-initial.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;a file ~/.mpdconf will be created in your home directory&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Edit this file and change it as follows&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;music_directory     "~/Desktop/mp3"
playlist_directory      "~/.mpd/playlists"
log_file            "~/.mpd/log"
pid_file            "~/.mpd/pid"
state_file          "~/.mpd/state"
bind_to_address "localhost"
port                "6600"
input {
    plugin "curl"
 }
audio_output {
type        "shout"
encoding    "mp3"           # optional
name        "Ariadni Greek Radio"
host        "localhost"
port        "8000"
mount       "/live" # same as above in icecast.xml
password    "hackme" # password_same_as icecast_server_password_above"
bitrate     "128"
format      "44100:16:2"
description "Watever you like e.g Rock" # optional
url  "http://mediaserver.noip.me"   # optional but same as above in icecast.xml
genre   "your genre e.g. Greek"     # optional
public  "yes"     # optional
mixer_type    "software"  # optional
}
# Need this so that mpd still works if icecast is not running
audio_output {
type "alsa"
name "fake out"
driver "null"
mixer_type      "software"
}
# Character Encoding
# If file or directory names do not display correctly for your locale then you 
# may need to modify this setting.
#
filesystem_charset "UTF-8"
#
# This setting controls the encoding that ID3v1 tags should be converted from.
#
id3v1_encoding  "ISO-8859-1"
#
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;create a playlist&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;find ~/Desktop/mp3/*.mp3 &amp;gt; ~/.mpd/playlists/myplaylist.m3u
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;run icecast and mpd&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo icecast -c /etc/icecast.xml -b
mpd ~/.mpdconf
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;run gmpc from menus and stop or play the songs you like. &lt;br&gt;
check "Repeat mode" and "Random mode" under Control menu &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;tip:&lt;br&gt;
can create a file ~/icecast.sh including the lines&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    sudo icecast -c /etc/icecast.xml -b
    mpd ~/.mpdconf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;and run it to not have to type again every time want to run your media server. Just type&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    sh ~/icecast.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;You and your listeners can listen to your internet radio by typing in a browser or vlc or clementine or smplayer the url &lt;br&gt;
&lt;a href="http://mediaserver.noip.me:8000/live"&gt;http://mediaserver.noip.me:8000/live&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In slackel.gr site the ariadni radio &lt;a href="http://ariadni.noip.me:8000/live"&gt;http://ariadni.noip.me:8000/live&lt;/a&gt; has been set up as above and streaming from my laptop. &lt;/p&gt;

</description>
      <category>internetradio</category>
      <category>slackel</category>
      <category>mediaserver</category>
      <category>icecast</category>
    </item>
    <item>
      <title>Playing youtube videos on smplayer through smtube using the mpv player</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sat, 10 Aug 2019 14:15:54 +0000</pubDate>
      <link>https://dev.to/djemos/playing-youtube-videos-on-smplayer-through-smtube-using-the-mpv-player-56p5</link>
      <guid>https://dev.to/djemos/playing-youtube-videos-on-smplayer-through-smtube-using-the-mpv-player-56p5</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Playing youtube videos on smplayer through smtube using the mpv player&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have tried vlc, mplayer, smplayer tried to play youtube videos in ubuntu, slackel and other distributions as well. &lt;br&gt;
But upon moving the time slider to a new location within the video Smplayer crashes. Log file message reads...&lt;/p&gt;

&lt;p&gt;MPlayer interrupted by signal 11 in module: seek&lt;br&gt;
ID_SIGNAL=11&lt;/p&gt;

&lt;p&gt;I found that smtube and smplayer using mpv media player can play youtube videos without crashed. &lt;/p&gt;

&lt;p&gt;In slackel 7.2 can install smplayer, mpv and latest smtube plus libass which is a dependency.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    sudo slapt-get -u
    sudo slapt-get -i smplayer libass mpv smtube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;then run smplayer and check from options in menus that mpv player is default player.&lt;/p&gt;

</description>
      <category>video</category>
      <category>linux</category>
      <category>slackel</category>
    </item>
    <item>
      <title>cron and crontab: some classics are timeless</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sat, 10 Aug 2019 13:52:44 +0000</pubDate>
      <link>https://dev.to/djemos/cron-and-crontab-some-classics-are-timeless-3i7b</link>
      <guid>https://dev.to/djemos/cron-and-crontab-some-classics-are-timeless-3i7b</guid>
      <description>&lt;ul&gt;
&lt;li&gt;cron and crontab: some classics are timeless&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quite often we, as computer users, need to schedule applications or jobs to take place at a given time. Backups typically happen at night, virus scans might happen after dinner, system updates might take place first thing in the morning. It's often useful to have routine tasks performed automatically and at a time when we're not sitting in front of the machine. This week we're going to cover the cron daemon and demonstrate how it can be used to quickly set up periodic tasks.&lt;/p&gt;

&lt;p&gt;What does cron do? Well, once a minute the cron daemon checks the file /etc/crontab to see if any tasks are scheduled and, if it finds an applicable task, it runs a given program. The /etc/crontab file is a text file which we can open and examine in any text editor. Let's break down the information fields we will find in that file.&lt;/p&gt;

&lt;p&gt;Typically a crontab file will contain two or more lines setting variables. Usually we will see a line setting the path to a shell and another listing the paths where cron can find executable files. These may look like the following:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   SHELL=/bin/sh
   PATH=/sbin:/bin:/usr/sbin:/usr/bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Following these variables we will find lines specifying times and tasks to be run at those times. Let's look at an example of one of these scheduled tasks:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    15 * * * * root logrotate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The first five fields of the line are made up of numbers or stars. These fields represent a given point (or points) in time to let us know when the task will be run. From left to right the fields indicate the minute, hour, day of the month, month and day of the week when a task is to be run. Stars effectively mean "any" or "every". The sixth column indicates which user account will be used to run the task and the final field is the command to be run. In the above example we will run the logrotate command as the root user. This will happen 15 minutes into every hour of every day of every month, on every day of the week. In the following example we will run a backup script as the root user at noon on every Sunday:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   0 12 * * * 0 root my-backup-script
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;As you can see, we've set the minute field to zero, the hour to twelve (noon) and the day of the week to zero (Sunday). Cron associates Sunday with zero, Monday with one... through to Saturday which is six. Here is another example where we perform a clean-up of the /tmp directory at 6:30pm every evening from Monday through Friday. The dash character allows us to specify a range:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  30 18 * * 1-5 root rm -rf /tmp/*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;On most Linux systems it's not just the root user who can schedule tasks, regular user accounts can create their own cron jobs. These user-scheduled tasks are kept separate from the /etc/crontab jobs and can be accessed by running the command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    crontab -e
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The crontab command will open a text editor and allow us to create tasks specific to our account. The main difference between the user-specific schedules and the /etc/crontab file is that the user-specific schedules do not include a username. For example, the following entry in my crontab file will perform a backup of my Documents directory at 5:00am on the first day of each month:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    0 5 1 * * tar czf ~/mybackup.tar.gz ~/Documents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Should we wish to see all of the jobs we have scheduled in our cron file we can run&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   crontab -l
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;to get a complete list. Lastly, we can remove all of our user's scheduled tasks by running:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   crontab -r
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The cron program is a very flexible and powerful tool which can be used to automate processes and is particularly good for scheduling backups and system clean-ups. It's a very handy utility to know.&lt;/p&gt;

&lt;p&gt;Article first publiced at &lt;a href="https://distrowatch.com/weekly.php?issue=20120416&amp;amp;mode=68#qa"&gt;https://distrowatch.com/weekly.php?issue=20120416&amp;amp;mode=68#qa&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tips</category>
      <category>programming</category>
      <category>script</category>
      <category>linux</category>
    </item>
    <item>
      <title>Slackel Hellenic Linux Distribution</title>
      <dc:creator>Dimitris Tzemos</dc:creator>
      <pubDate>Sat, 10 Aug 2019 13:39:56 +0000</pubDate>
      <link>https://dev.to/djemos/slackel-hellenic-linux-distribution-1dea</link>
      <guid>https://dev.to/djemos/slackel-hellenic-linux-distribution-1dea</guid>
      <description>&lt;p&gt;Slackel 1.0 version was released on 2005 and it was a KDE edition. It was based on slackware 10.2 stable. It was reconfigured with greek language and applications i needed. Then i created a live iso with linux-live scripts 5.1.8 from slax. So i could install it without having to configure it again from the beginning.&lt;/p&gt;

&lt;p&gt;Slackel is now based on Slackware current tree and also use Salix tools for maintaining the system.&lt;/p&gt;

&lt;p&gt;Slackel can be used as a testing environment where new features can be tested which later can be used when current tree will become the next stable release of slackware.&lt;/p&gt;

&lt;p&gt;Slackel Live iso images are created with &lt;a href="http://www.slackel.gr/repo/source/slackel-source/slackware-live-0.5/0.5.4/"&gt;http://www.slackel.gr/repo/source/slackel-source/slackware-live-0.5/0.5.4/&lt;/a&gt; forked Slackware-Live scripts from LiNomad. &lt;br&gt;
The SLI gui live installer, of LiNomad further &lt;a href="http://www.slackel.gr/repo/source/slackel-source/slackware-live-installer-1.2.5/"&gt;http://www.slackel.gr/repo/source/slackel-source/slackware-live-installer-1.2.5/&lt;/a&gt; developed adding new features to easily install the system to hard disk or make a Live USB.&lt;br&gt;
There is also the &lt;a href="http://www.slackel.gr/isos/slackel-live/install_on_usb.sh%5Dinstall_on_usb.sh"&gt;http://www.slackel.gr/isos/slackel-live/install_on_usb.sh]install_on_usb.sh&lt;/a&gt; script to create a Live USB and a persistent file. &lt;br&gt;
make sure you read the respective instructions in this file:  &lt;a href="http://www.slackel.gr/isos/slackel-live/README_INSTALL_ON_USB.TXT"&gt;http://www.slackel.gr/isos/slackel-live/README_INSTALL_ON_USB.TXT&lt;/a&gt; README_INSTALL_ON_USB.TXT&lt;/p&gt;

&lt;p&gt;Slackel means Greek Slackware. Slackware + Hellenic (Greek).&lt;br&gt;
Slackel's goal is to be a stable, fast and light distribution. Slackel is multilingual.&lt;br&gt;
You can help in artwork. Develop new tools for system. Add more features to gui installer. Create a startup guide. Help in supporting other users. Create packages. Or whatever you think is useful.&lt;/p&gt;

&lt;p&gt;Forum is free and everyone can register and also send an email to &lt;a href="mailto:dijemos@gmail.com"&gt;dijemos@gmail.com&lt;/a&gt; to activate the account because of many spam fake registrations.&lt;/p&gt;

&lt;p&gt;Everyone is welcome to use Slackel for free. Slackel is a project that offers everything for free and is developed in free time. No income is generated by Slackel releases or support.&lt;br&gt;
Latest Slackel version on &lt;a href="http://www.slackel.gr/forum/viewtopic.php?f=3&amp;amp;t=564"&gt;http://www.slackel.gr/forum/viewtopic.php?f=3&amp;amp;t=564&lt;/a&gt;&lt;br&gt;
or Distrowatch &lt;a href="https://distrowatch.com/?newsid=10622"&gt;https://distrowatch.com/?newsid=10622&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dimitris Tzemos&lt;br&gt;
Slackel Founder &lt;a href="http://www.slackel.gr"&gt;http://www.slackel.gr&lt;/a&gt;&lt;br&gt;
Salix core team developer &lt;a href="https://docs.salixos.org/wiki/Salix_OS:Team"&gt;https://docs.salixos.org/wiki/Salix_OS:Team&lt;/a&gt;&lt;/p&gt;

</description>
      <category>slackel</category>
      <category>linux</category>
      <category>distribution</category>
    </item>
  </channel>
</rss>
