Mise en place d’un relai icecast

Mis en place pour faire relai de radio klaxon de la ZAD de NDDL qui ne tenait apparement plus la charge, et pour un peu de crypto+annonymat. Ci-dessous, la config icecast, puis la config nginx.

Config pour icecast:


<icecast>
    <limits>
        <clients>500</clients>
        <sources>2</sources>
        <queue-size>524288</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>10</source-timeout>
        <burst-on-connect>1</burst-on-connect>
        <burst-size>65535</burst-size>
    </limits>
    <hostname>pouet.hacktivis.me</hostname>
    <listen-socket>
        <port>8000</port>
        <!-- <bind-address>127.0.0.1</bind-address> -->
    </listen-socket>
    <relay>
        <server>radio.antirep.net</server>
        <port>8000</port>
        <mount>/RadioKlaxon</mount>
        <local-mount>/RadioKlaxon</local-mount>
        <on-demand>0</on-demand>

        <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
    </relay>
    <relay>
        <server>radio.antirep.net</server>
        <port>8000</port>
        <mount>/RadioKlaxonOff</mount>
        <local-mount>/RadioKlaxonOff</local-mount>
        <on-demand>0</on-demand>

        <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
    </relay>
    <fileserve>1</fileserve>
    <paths>
        <basedir>/usr/share/icecast</basedir>
        <logdir>/var/log/icecast</logdir>
        <webroot>/srv/web/pouet.hacktivis.me</webroot>
        <adminroot>/usr/share/icecast/admin</adminroot>
        <alias source="/" dest="/status.xsl"/>
    </paths>

    <logging>
        <errorlog>error.log</errorlog>
        <loglevel>2</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
        <logsize>10000</logsize> <!-- Max size of a logfile -->
    </logging>

    <security>
        <chroot>0</chroot>
        <changeowner>
            <user>icecast</user>
            <group>nogroup</group>
        </changeowner>
    </security>
</icecast>

Config pour nginx:


server {
        listen 80;
        listen [::]:80;
        listen 8000;
        listen [::]:8000;

        server_name pouet.hacktivis.me;

        location / {
                return 301 https://$server_name$request_uri;
        }
}
server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name pouet.hacktivis.me;
        large_client_header_buffers 4 16k;

        root /srv/web/pouet.hacktivis.me/;

        ssl_certificate     certificates/pouet.hacktivis.me.pem;
        ssl_certificate_key certificates/pouet.hacktivis.me.key;

        ssl_ciphers 'EECDH+CHACHA20:EECDH+AESGCM'; # or EECDH+CHACHA20:EECDH+AES:DHE+CHACHA20:DHE+AES:+SHA
        ssl_prefer_server_ciphers on; # Parceque les clients on une config TLS toute pouritte
        ssl_protocols TLSv1.2; # POODLE sur ≤TLS1.1
        ssl_ecdh_curve X25519:sect571r1:secp521r1:secp384r1;
        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;

        add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload'; # Garder l’https pendant 6 mois et inclure les sous-domaines
        #add_header Public-Key-Pins           'pin-sha256="nL2KrUGakuCVVOeO152WRynVeJs+clhS+02EiIbDrPQ="; pin-sha256="9kgt0my3CzTv4sK5TsYJmEw5FzYLLUrFJr86Vmhbb4k="; max-age=5184000';
        add_header X-Frame-Options           "DENY"; # Deny framing
        add_header X-Content-Type-Options    "nosniff";
        add_header X-XSS-Protection          "1; mode=block";
        #add_header Content-Security-Policy   "default-src 'none'; script-src 'none'; style-src 'self'; img-src 'self'; media-src 'self';";
        add_header Referrer-Policy           "no-referrer";
        add_header X-Clacks-Overhead         "GNU Rémi Fraisse";

        location @icecast2 {
                proxy_buffering           off;
                proxy_ignore_client_abort off;
                proxy_intercept_errors    on;
                proxy_next_upstream       error timeout invalid_header;
                proxy_redirect            off;
                proxy_set_header          X-Host $http_host;
                proxy_set_header          X-Forwarded-For $remote_addr;
                proxy_connect_timeout     60;
                proxy_send_timeout        21600;
                proxy_read_timeout        21600;
                proxy_pass http://localhost:8000;
        }
        location / {
                try_files $uri @icecast2;
        }
}