logo

blog

My website can't be that messy, right? git clone https://anongit.hacktivis.me/git/blog.git/

Mise en place d’un relai icecast.xhtml (5545B)


  1. <!--
  2. Copyright © 2014 Haelwenn (lanodan) Monnier
  3. SPDX-License-Identifier: LAL-1.3
  4. -->
  5. <article lang="fr" class="h-entry">
  6. <h1 class="p-name"><a class="u-url" href="/articles/Mise%20en%20place%20d%E2%80%99un%20relai%20icecast">Mise en place d’un relai icecast</a></h1>
  7. <p>Mis en place pour faire relai de <a href="http://zad.nadir.org/spip.php?rubrique71">radio klaxon</a> de la <abbr title="Zone À Défendre">ZAD</abbr> de <abbr title="Notre Dame Des Landes">NDDL</abbr> qui ne tenait apparement plus la charge, et pour un peu de crypto+annonymat. Ci-dessous, la config icecast, puis la config nginx.</p>
  8. <p>Config pour icecast:</p>
  9. <pre><code>
  10. &lt;icecast&gt;
  11. &lt;limits&gt;
  12. &lt;clients&gt;500&lt;/clients&gt;
  13. &lt;sources&gt;2&lt;/sources&gt;
  14. &lt;queue-size&gt;524288&lt;/queue-size&gt;
  15. &lt;client-timeout&gt;30&lt;/client-timeout&gt;
  16. &lt;header-timeout&gt;15&lt;/header-timeout&gt;
  17. &lt;source-timeout&gt;10&lt;/source-timeout&gt;
  18. &lt;burst-on-connect&gt;1&lt;/burst-on-connect&gt;
  19. &lt;burst-size&gt;65535&lt;/burst-size&gt;
  20. &lt;/limits&gt;
  21. &lt;hostname&gt;pouet.hacktivis.me&lt;/hostname&gt;
  22. &lt;listen-socket&gt;
  23. &lt;port&gt;8000&lt;/port&gt;
  24. &lt;!-- &lt;bind-address&gt;127.0.0.1&lt;/bind-address&gt; --&gt;
  25. &lt;/listen-socket&gt;
  26. &lt;relay&gt;
  27. &lt;server&gt;radio.antirep.net&lt;/server&gt;
  28. &lt;port&gt;8000&lt;/port&gt;
  29. &lt;mount&gt;/RadioKlaxon&lt;/mount&gt;
  30. &lt;local-mount&gt;/RadioKlaxon&lt;/local-mount&gt;
  31. &lt;on-demand&gt;0&lt;/on-demand&gt;
  32. &lt;relay-shoutcast-metadata&gt;1&lt;/relay-shoutcast-metadata&gt;
  33. &lt;/relay&gt;
  34. &lt;relay&gt;
  35. &lt;server&gt;radio.antirep.net&lt;/server&gt;
  36. &lt;port&gt;8000&lt;/port&gt;
  37. &lt;mount&gt;/RadioKlaxonOff&lt;/mount&gt;
  38. &lt;local-mount&gt;/RadioKlaxonOff&lt;/local-mount&gt;
  39. &lt;on-demand&gt;0&lt;/on-demand&gt;
  40. &lt;relay-shoutcast-metadata&gt;1&lt;/relay-shoutcast-metadata&gt;
  41. &lt;/relay&gt;
  42. &lt;fileserve&gt;1&lt;/fileserve&gt;
  43. &lt;paths&gt;
  44. &lt;basedir&gt;/usr/share/icecast&lt;/basedir&gt;
  45. &lt;logdir&gt;/var/log/icecast&lt;/logdir&gt;
  46. &lt;webroot&gt;/srv/web/pouet.hacktivis.me&lt;/webroot&gt;
  47. &lt;adminroot&gt;/usr/share/icecast/admin&lt;/adminroot&gt;
  48. &lt;alias source="/" dest="/status.xsl"/&gt;
  49. &lt;/paths&gt;
  50. &lt;logging&gt;
  51. &lt;errorlog&gt;error.log&lt;/errorlog&gt;
  52. &lt;loglevel&gt;2&lt;/loglevel&gt; &lt;!-- 4 Debug, 3 Info, 2 Warn, 1 Error --&gt;
  53. &lt;logsize&gt;10000&lt;/logsize&gt; &lt;!-- Max size of a logfile --&gt;
  54. &lt;/logging&gt;
  55. &lt;security&gt;
  56. &lt;chroot&gt;0&lt;/chroot&gt;
  57. &lt;changeowner&gt;
  58. &lt;user&gt;icecast&lt;/user&gt;
  59. &lt;group&gt;nogroup&lt;/group&gt;
  60. &lt;/changeowner&gt;
  61. &lt;/security&gt;
  62. &lt;/icecast&gt;
  63. </code></pre>
  64. <p>Config pour nginx:</p>
  65. <pre><code>
  66. server {
  67. listen 80;
  68. listen [::]:80;
  69. listen 8000;
  70. listen [::]:8000;
  71. server_name pouet.hacktivis.me;
  72. location / {
  73. return 301 https://$server_name$request_uri;
  74. }
  75. }
  76. server {
  77. listen 443 ssl http2;
  78. listen [::]:443 ssl http2;
  79. server_name pouet.hacktivis.me;
  80. large_client_header_buffers 4 16k;
  81. root /srv/web/pouet.hacktivis.me/;
  82. ssl_certificate certificates/pouet.hacktivis.me.pem;
  83. ssl_certificate_key certificates/pouet.hacktivis.me.key;
  84. ssl_ciphers 'EECDH+CHACHA20:EECDH+AESGCM'; # or EECDH+CHACHA20:EECDH+AES:DHE+CHACHA20:DHE+AES:+SHA
  85. ssl_prefer_server_ciphers on; # Parceque les clients on une config TLS toute pouritte
  86. ssl_protocols TLSv1.2; # POODLE sur ≤TLS1.1
  87. ssl_ecdh_curve X25519:sect571r1:secp521r1:secp384r1;
  88. ssl_stapling on;
  89. ssl_stapling_verify on;
  90. ssl_session_cache shared:SSL:10m;
  91. ssl_session_timeout 10m;
  92. add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload'; # Garder l’https pendant 6 mois et inclure les sous-domaines
  93. #add_header Public-Key-Pins 'pin-sha256="nL2KrUGakuCVVOeO152WRynVeJs+clhS+02EiIbDrPQ="; pin-sha256="9kgt0my3CzTv4sK5TsYJmEw5FzYLLUrFJr86Vmhbb4k="; max-age=5184000';
  94. add_header X-Frame-Options "DENY"; # Deny framing
  95. add_header X-Content-Type-Options "nosniff";
  96. add_header X-XSS-Protection "1; mode=block";
  97. #add_header Content-Security-Policy "default-src 'none'; script-src 'none'; style-src 'self'; img-src 'self'; media-src 'self';";
  98. add_header Referrer-Policy "no-referrer";
  99. add_header X-Clacks-Overhead "GNU Rémi Fraisse";
  100. location @icecast2 {
  101. proxy_buffering off;
  102. proxy_ignore_client_abort off;
  103. proxy_intercept_errors on;
  104. proxy_next_upstream error timeout invalid_header;
  105. proxy_redirect off;
  106. proxy_set_header X-Host $http_host;
  107. proxy_set_header X-Forwarded-For $remote_addr;
  108. proxy_connect_timeout 60;
  109. proxy_send_timeout 21600;
  110. proxy_read_timeout 21600;
  111. proxy_pass http://localhost:8000;
  112. }
  113. location / {
  114. try_files $uri @icecast2;
  115. }
  116. }
  117. </code></pre>
  118. </article>