Kaynağa Gözat

Icecast documentation

Bob Mottram 7 yıl önce
ebeveyn
işleme
426da7a6e3
4 değiştirilmiş dosya ile 565 ekleme ve 109 silme
  1. 64
    0
      doc/EN/app_icecast.org
  2. 4
    0
      doc/EN/apps.org
  3. 376
    0
      website/EN/app_icecast.html
  4. 121
    109
      website/EN/apps.html

+ 64
- 0
doc/EN/app_icecast.org Dosyayı Görüntüle

@@ -0,0 +1,64 @@
1
+#+TITLE:
2
+#+AUTHOR: Bob Mottram
3
+#+EMAIL: bob@freedombone.net
4
+#+KEYWORDS: freedombone, icecast
5
+#+DESCRIPTION: How to use Icecast
6
+#+OPTIONS: ^:nil toc:nil
7
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />
8
+
9
+#+BEGIN_CENTER
10
+[[file:images/logo.png]]
11
+#+END_CENTER
12
+
13
+#+BEGIN_EXPORT html
14
+<center>
15
+<h1>Icecast</h1>
16
+</center>
17
+#+END_EXPORT
18
+
19
+Icecast enables you to run something like an internet radio station. So if you have multiple audio files and want to be able to stream those in sequence from a web site then this can be useful.
20
+
21
+This system is available only via an onion address, which should mitigate the potential for copyright disputes over streamed content. By default it's only set up to stream to a small number of users so that it doesn't put too much stress on CPU or memory requirements, although you can increase the maximum limit if you have a more powerful system and enough bandwidth.
22
+
23
+* Installation
24
+Log into your system with:
25
+
26
+#+begin_src bash
27
+ssh myusername@mydomain -p 2222
28
+#+end_src
29
+
30
+Using cursor keys, space bar and Enter key select *Administrator controls* and type in your password.
31
+
32
+Select *Add/Remove Apps*. If Vim is selected then you might want to unselect and uninstall it first, then select *icecast*.
33
+
34
+If you then go to the *About* screen you'll see the onion address for Icecast and can navigate to it in a Tor compatible browser.
35
+
36
+* Adding files to be streamed
37
+There are two ways to get files onto the system: either via ssh or via a USB drive. File types can be *ogg, ogv, mp3 or mp4* format.
38
+
39
+It may take a while for the files to import, especially on a low power single board computer, since any mp3 or mp4 files will be converted to ogg or ogv. If you want to speed this up then you could do this conversion manually on a laptop with ffmpeg before storing files onto the USB drive.
40
+
41
+** From a USB drive
42
+Create a directory on the USB drive named *icestream* and copy your files into there. Plug the drive into your server.
43
+
44
+Go to the *Administrator control panel*, select *App settings*, then *icecast*, then *Import stream files from USB drive*.
45
+
46
+** Via ssh
47
+Make a directory named *icestream* and copy your file into it. Then copy the directory to your server.
48
+
49
+#+begin_src bash
50
+scp -r -P 2222 icestream myusername@mydomain:/home/myusername
51
+#+end_src
52
+
53
+Log into your server with:
54
+
55
+#+begin_src bash
56
+ssh myusername@mydomain -p 2222
57
+#+end_src
58
+
59
+Select *Administrator controls*, enter your password, then go to *App settings* followed by *icecast* and *Import stream files*. Choose the directory with up and down cursors and space bar to select.
60
+
61
+* Access controls
62
+By default anyone who happens to find your Icecast onion address can listen to your stream. If you only want it to be available to a few friends or family then you can add an extra login password.
63
+
64
+Go to the *Administrator control panel*, select *App settings*, then *icecast*, then *Enable login for stream users*. Take a note of the password and you can give that out to whoever needs access, preferably via an encrypted chat app or sneakernet. If you need to copy and paste then hold the shift key while highlighting the password.

+ 4
- 0
doc/EN/apps.org Dosyayı Görüntüle

@@ -68,6 +68,10 @@ Databaseless blogging system. Quite simple and with a markdown-like format.
68 68
 Web publishing platform with social network like features and good privacy controls so that it's possible to specify who can see which content. Includes photo albums, calendar, wiki and file storage.
69 69
 
70 70
 [[./app_hubzilla.html][How to use it]]
71
+* Icecast media stream
72
+Make your own internet radio station.
73
+
74
+[[./app_icecast.html][How to use it]]
71 75
 * IRC Server (ngirc)
72 76
 Run your own IRC chat channel which can be secured with a password and accessible via an onion address. A bouncer is included so that you can receive messages sent while you were offline. Works with Hexchat and other popular clients.
73 77
 

+ 376
- 0
website/EN/app_icecast.html Dosyayı Görüntüle

@@ -0,0 +1,376 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5
+<head>
6
+<!-- 2017-11-27 Mon 12:28 -->
7
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
+<meta name="viewport" content="width=device-width, initial-scale=1" />
9
+<title>&lrm;</title>
10
+<meta name="generator" content="Org mode" />
11
+<meta name="author" content="Bob Mottram" />
12
+<meta name="description" content="How to use Icecast"
13
+ />
14
+<meta name="keywords" content="freedombone, icecast" />
15
+<style type="text/css">
16
+ <!--/*--><![CDATA[/*><!--*/
17
+  .title  { text-align: center;
18
+             margin-bottom: .2em; }
19
+  .subtitle { text-align: center;
20
+              font-size: medium;
21
+              font-weight: bold;
22
+              margin-top:0; }
23
+  .todo   { font-family: monospace; color: red; }
24
+  .done   { font-family: monospace; color: green; }
25
+  .priority { font-family: monospace; color: orange; }
26
+  .tag    { background-color: #eee; font-family: monospace;
27
+            padding: 2px; font-size: 80%; font-weight: normal; }
28
+  .timestamp { color: #bebebe; }
29
+  .timestamp-kwd { color: #5f9ea0; }
30
+  .org-right  { margin-left: auto; margin-right: 0px;  text-align: right; }
31
+  .org-left   { margin-left: 0px;  margin-right: auto; text-align: left; }
32
+  .org-center { margin-left: auto; margin-right: auto; text-align: center; }
33
+  .underline { text-decoration: underline; }
34
+  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
35
+  p.verse { margin-left: 3%; }
36
+  pre {
37
+    border: 1px solid #ccc;
38
+    box-shadow: 3px 3px 3px #eee;
39
+    padding: 8pt;
40
+    font-family: monospace;
41
+    overflow: auto;
42
+    margin: 1.2em;
43
+  }
44
+  pre.src {
45
+    position: relative;
46
+    overflow: visible;
47
+    padding-top: 1.2em;
48
+  }
49
+  pre.src:before {
50
+    display: none;
51
+    position: absolute;
52
+    background-color: white;
53
+    top: -10px;
54
+    right: 10px;
55
+    padding: 3px;
56
+    border: 1px solid black;
57
+  }
58
+  pre.src:hover:before { display: inline;}
59
+  /* Languages per Org manual */
60
+  pre.src-asymptote:before { content: 'Asymptote'; }
61
+  pre.src-awk:before { content: 'Awk'; }
62
+  pre.src-C:before { content: 'C'; }
63
+  /* pre.src-C++ doesn't work in CSS */
64
+  pre.src-clojure:before { content: 'Clojure'; }
65
+  pre.src-css:before { content: 'CSS'; }
66
+  pre.src-D:before { content: 'D'; }
67
+  pre.src-ditaa:before { content: 'ditaa'; }
68
+  pre.src-dot:before { content: 'Graphviz'; }
69
+  pre.src-calc:before { content: 'Emacs Calc'; }
70
+  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
71
+  pre.src-fortran:before { content: 'Fortran'; }
72
+  pre.src-gnuplot:before { content: 'gnuplot'; }
73
+  pre.src-haskell:before { content: 'Haskell'; }
74
+  pre.src-hledger:before { content: 'hledger'; }
75
+  pre.src-java:before { content: 'Java'; }
76
+  pre.src-js:before { content: 'Javascript'; }
77
+  pre.src-latex:before { content: 'LaTeX'; }
78
+  pre.src-ledger:before { content: 'Ledger'; }
79
+  pre.src-lisp:before { content: 'Lisp'; }
80
+  pre.src-lilypond:before { content: 'Lilypond'; }
81
+  pre.src-lua:before { content: 'Lua'; }
82
+  pre.src-matlab:before { content: 'MATLAB'; }
83
+  pre.src-mscgen:before { content: 'Mscgen'; }
84
+  pre.src-ocaml:before { content: 'Objective Caml'; }
85
+  pre.src-octave:before { content: 'Octave'; }
86
+  pre.src-org:before { content: 'Org mode'; }
87
+  pre.src-oz:before { content: 'OZ'; }
88
+  pre.src-plantuml:before { content: 'Plantuml'; }
89
+  pre.src-processing:before { content: 'Processing.js'; }
90
+  pre.src-python:before { content: 'Python'; }
91
+  pre.src-R:before { content: 'R'; }
92
+  pre.src-ruby:before { content: 'Ruby'; }
93
+  pre.src-sass:before { content: 'Sass'; }
94
+  pre.src-scheme:before { content: 'Scheme'; }
95
+  pre.src-screen:before { content: 'Gnu Screen'; }
96
+  pre.src-sed:before { content: 'Sed'; }
97
+  pre.src-sh:before { content: 'shell'; }
98
+  pre.src-sql:before { content: 'SQL'; }
99
+  pre.src-sqlite:before { content: 'SQLite'; }
100
+  /* additional languages in org.el's org-babel-load-languages alist */
101
+  pre.src-forth:before { content: 'Forth'; }
102
+  pre.src-io:before { content: 'IO'; }
103
+  pre.src-J:before { content: 'J'; }
104
+  pre.src-makefile:before { content: 'Makefile'; }
105
+  pre.src-maxima:before { content: 'Maxima'; }
106
+  pre.src-perl:before { content: 'Perl'; }
107
+  pre.src-picolisp:before { content: 'Pico Lisp'; }
108
+  pre.src-scala:before { content: 'Scala'; }
109
+  pre.src-shell:before { content: 'Shell Script'; }
110
+  pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
111
+  /* additional language identifiers per "defun org-babel-execute"
112
+       in ob-*.el */
113
+  pre.src-cpp:before  { content: 'C++'; }
114
+  pre.src-abc:before  { content: 'ABC'; }
115
+  pre.src-coq:before  { content: 'Coq'; }
116
+  pre.src-groovy:before  { content: 'Groovy'; }
117
+  /* additional language identifiers from org-babel-shell-names in
118
+     ob-shell.el: ob-shell is the only babel language using a lambda to put
119
+     the execution function name together. */
120
+  pre.src-bash:before  { content: 'bash'; }
121
+  pre.src-csh:before  { content: 'csh'; }
122
+  pre.src-ash:before  { content: 'ash'; }
123
+  pre.src-dash:before  { content: 'dash'; }
124
+  pre.src-ksh:before  { content: 'ksh'; }
125
+  pre.src-mksh:before  { content: 'mksh'; }
126
+  pre.src-posh:before  { content: 'posh'; }
127
+  /* Additional Emacs modes also supported by the LaTeX listings package */
128
+  pre.src-ada:before { content: 'Ada'; }
129
+  pre.src-asm:before { content: 'Assembler'; }
130
+  pre.src-caml:before { content: 'Caml'; }
131
+  pre.src-delphi:before { content: 'Delphi'; }
132
+  pre.src-html:before { content: 'HTML'; }
133
+  pre.src-idl:before { content: 'IDL'; }
134
+  pre.src-mercury:before { content: 'Mercury'; }
135
+  pre.src-metapost:before { content: 'MetaPost'; }
136
+  pre.src-modula-2:before { content: 'Modula-2'; }
137
+  pre.src-pascal:before { content: 'Pascal'; }
138
+  pre.src-ps:before { content: 'PostScript'; }
139
+  pre.src-prolog:before { content: 'Prolog'; }
140
+  pre.src-simula:before { content: 'Simula'; }
141
+  pre.src-tcl:before { content: 'tcl'; }
142
+  pre.src-tex:before { content: 'TeX'; }
143
+  pre.src-plain-tex:before { content: 'Plain TeX'; }
144
+  pre.src-verilog:before { content: 'Verilog'; }
145
+  pre.src-vhdl:before { content: 'VHDL'; }
146
+  pre.src-xml:before { content: 'XML'; }
147
+  pre.src-nxml:before { content: 'XML'; }
148
+  /* add a generic configuration mode; LaTeX export needs an additional
149
+     (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
150
+  pre.src-conf:before { content: 'Configuration File'; }
151
+
152
+  table { border-collapse:collapse; }
153
+  caption.t-above { caption-side: top; }
154
+  caption.t-bottom { caption-side: bottom; }
155
+  td, th { vertical-align:top;  }
156
+  th.org-right  { text-align: center;  }
157
+  th.org-left   { text-align: center;   }
158
+  th.org-center { text-align: center; }
159
+  td.org-right  { text-align: right;  }
160
+  td.org-left   { text-align: left;   }
161
+  td.org-center { text-align: center; }
162
+  dt { font-weight: bold; }
163
+  .footpara { display: inline; }
164
+  .footdef  { margin-bottom: 1em; }
165
+  .figure { padding: 1em; }
166
+  .figure p { text-align: center; }
167
+  .inlinetask {
168
+    padding: 10px;
169
+    border: 2px solid gray;
170
+    margin: 10px;
171
+    background: #ffffcc;
172
+  }
173
+  #org-div-home-and-up
174
+   { text-align: right; font-size: 70%; white-space: nowrap; }
175
+  textarea { overflow-x: auto; }
176
+  .linenr { font-size: smaller }
177
+  .code-highlighted { background-color: #ffff00; }
178
+  .org-info-js_info-navigation { border-style: none; }
179
+  #org-info-js_console-label
180
+    { font-size: 10px; font-weight: bold; white-space: nowrap; }
181
+  .org-info-js_search-highlight
182
+    { background-color: #ffff00; color: #000000; font-weight: bold; }
183
+  .org-svg { width: 90%; }
184
+  /*]]>*/-->
185
+</style>
186
+<link rel="stylesheet" type="text/css" href="freedombone.css" />
187
+<script type="text/javascript">
188
+/*
189
+@licstart  The following is the entire license notice for the
190
+JavaScript code in this tag.
191
+
192
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
193
+
194
+The JavaScript code in this tag is free software: you can
195
+redistribute it and/or modify it under the terms of the GNU
196
+General Public License (GNU GPL) as published by the Free Software
197
+Foundation, either version 3 of the License, or (at your option)
198
+any later version.  The code is distributed WITHOUT ANY WARRANTY;
199
+without even the implied warranty of MERCHANTABILITY or FITNESS
200
+FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
201
+
202
+As additional permission under GNU GPL version 3 section 7, you
203
+may distribute non-source (e.g., minimized or compacted) forms of
204
+that code without the copy of the GNU GPL normally required by
205
+section 4, provided you include this license notice and a URL
206
+through which recipients can access the Corresponding Source.
207
+
208
+
209
+@licend  The above is the entire license notice
210
+for the JavaScript code in this tag.
211
+*/
212
+<!--/*--><![CDATA[/*><!--*/
213
+ function CodeHighlightOn(elem, id)
214
+ {
215
+   var target = document.getElementById(id);
216
+   if(null != target) {
217
+     elem.cacheClassElem = elem.className;
218
+     elem.cacheClassTarget = target.className;
219
+     target.className = "code-highlighted";
220
+     elem.className   = "code-highlighted";
221
+   }
222
+ }
223
+ function CodeHighlightOff(elem, id)
224
+ {
225
+   var target = document.getElementById(id);
226
+   if(elem.cacheClassElem)
227
+     elem.className = elem.cacheClassElem;
228
+   if(elem.cacheClassTarget)
229
+     target.className = elem.cacheClassTarget;
230
+ }
231
+/*]]>*///-->
232
+</script>
233
+</head>
234
+<body>
235
+<div id="preamble" class="status">
236
+<a name="top" id="top"></a>
237
+</div>
238
+<div id="content">
239
+<div class="org-center">
240
+
241
+<div class="figure">
242
+<p><img src="images/logo.png" alt="logo.png" />
243
+</p>
244
+</div>
245
+</div>
246
+
247
+<center>
248
+<h1>Icecast</h1>
249
+</center>
250
+
251
+<p>
252
+Icecast enables you to run something like an internet radio station. So if you have multiple audio files and want to be able to stream those in sequence from a web site then this can be useful.
253
+</p>
254
+
255
+<p>
256
+This system is available only via an onion address, which should mitigate the potential for copyright disputes over streamed content. By default it's only set up to stream to a small number of users so that it doesn't put too much stress on CPU or memory requirements, although you can increase the maximum limit if you have a more powerful system and enough bandwidth.
257
+</p>
258
+
259
+<div id="outline-container-org8c8f8ae" class="outline-2">
260
+<h2 id="org8c8f8ae">Installation</h2>
261
+<div class="outline-text-2" id="text-org8c8f8ae">
262
+<p>
263
+Log into your system with:
264
+</p>
265
+
266
+<div class="org-src-container">
267
+<pre class="src src-bash">ssh myusername@mydomain -p 2222
268
+</pre>
269
+</div>
270
+
271
+<p>
272
+Using cursor keys, space bar and Enter key select <b>Administrator controls</b> and type in your password.
273
+</p>
274
+
275
+<p>
276
+Select <b>Add/Remove Apps</b>. If Vim is selected then you might want to unselect and uninstall it first, then select <b>icecast</b>.
277
+</p>
278
+
279
+<p>
280
+If you then go to the <b>About</b> screen you'll see the onion address for Icecast and can navigate to it in a Tor compatible browser.
281
+</p>
282
+</div>
283
+</div>
284
+
285
+<div id="outline-container-org00ccd42" class="outline-2">
286
+<h2 id="org00ccd42">Adding files to be streamed</h2>
287
+<div class="outline-text-2" id="text-org00ccd42">
288
+<p>
289
+There are two ways to get files onto the system: either via ssh or via a USB drive. File types can be <b>ogg, ogv, mp3 or mp4</b> format.
290
+</p>
291
+
292
+<p>
293
+It may take a while for the files to import, especially on a low power single board computer, since any mp3 or mp4 files will be converted to ogg or ogv. If you want to speed this up then you could do this conversion manually on a laptop with ffmpeg before storing files onto the USB drive.
294
+</p>
295
+</div>
296
+
297
+<div id="outline-container-org96ee1e5" class="outline-3">
298
+<h3 id="org96ee1e5">From a USB drive</h3>
299
+<div class="outline-text-3" id="text-org96ee1e5">
300
+<p>
301
+Create a directory on the USB drive named <b>icestream</b> and copy your files into there. Plug the drive into your server.
302
+</p>
303
+
304
+<p>
305
+Go to the <b>Administrator control panel</b>, select <b>App settings</b>, then <b>icecast</b>, then <b>Import stream files from USB drive</b>.
306
+</p>
307
+</div>
308
+</div>
309
+
310
+<div id="outline-container-org487d744" class="outline-3">
311
+<h3 id="org487d744">Via ssh</h3>
312
+<div class="outline-text-3" id="text-org487d744">
313
+<p>
314
+Make a directory named <b>icestream</b> and copy your file into it. Then copy the directory to your server.
315
+</p>
316
+
317
+<div class="org-src-container">
318
+<pre class="src src-bash">scp -r -P 2222 icestream myusername@mydomain:/home/myusername
319
+</pre>
320
+</div>
321
+
322
+<p>
323
+Log into your server with:
324
+</p>
325
+
326
+<div class="org-src-container">
327
+<pre class="src src-bash">ssh myusername@mydomain -p 2222
328
+</pre>
329
+</div>
330
+
331
+<p>
332
+Select <b>Administrator controls</b>, enter your password, then go to <b>App settings</b> followed by <b>icecast</b> and <b>Import stream files</b>. Choose the directory with up and down cursors and space bar to select.
333
+</p>
334
+</div>
335
+</div>
336
+</div>
337
+
338
+<div id="outline-container-org9612135" class="outline-2">
339
+<h2 id="org9612135">Access controls</h2>
340
+<div class="outline-text-2" id="text-org9612135">
341
+<p>
342
+By default anyone who happens to find your Icecast onion address can listen to your stream. If you only want it to be available to a few friends or family then you can add an extra login password.
343
+</p>
344
+
345
+<p>
346
+Go to the <b>Administrator control panel</b>, select <b>App settings</b>, then <b>icecast</b>, then <b>Enable login for stream users</b>. Take a note of the password and you can give that out to whoever needs access, preferably via an encrypted chat app or sneakernet. If you need to copy and paste then hold the shift key while highlighting the password.
347
+</p>
348
+</div>
349
+</div>
350
+</div>
351
+<div id="postamble" class="status">
352
+
353
+<style type="text/css">
354
+.back-to-top {
355
+    position: fixed;
356
+    bottom: 2em;
357
+    right: 0px;
358
+    text-decoration: none;
359
+    color: #000000;
360
+    background-color: rgba(235, 235, 235, 0.80);
361
+    font-size: 12px;
362
+    padding: 1em;
363
+    display: none;
364
+}
365
+
366
+.back-to-top:hover {
367
+    background-color: rgba(135, 135, 135, 0.50);
368
+}
369
+</style>
370
+
371
+<div class="back-to-top">
372
+<a href="#top">Back to top</a> | <a href="mailto:bob@freedombone.net">E-mail me</a>
373
+</div>
374
+</div>
375
+</body>
376
+</html>

+ 121
- 109
website/EN/apps.html Dosyayı Görüntüle

@@ -3,7 +3,7 @@
3 3
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 4
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
5 5
 <head>
6
-<!-- 2017-11-08 Wed 14:34 -->
6
+<!-- 2017-11-27 Mon 12:30 -->
7 7
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8 8
 <meta name="viewport" content="width=device-width, initial-scale=1" />
9 9
 <title>&lrm;</title>
@@ -264,9 +264,9 @@ The base install of the system just contains an email server and Mutt client, bu
264 264
 </div>
265 265
 </div>
266 266
 
267
-<div id="outline-container-orge2d5b23" class="outline-2">
268
-<h2 id="orge2d5b23">CryptPad</h2>
269
-<div class="outline-text-2" id="text-orge2d5b23">
267
+<div id="outline-container-org6976750" class="outline-2">
268
+<h2 id="org6976750">CryptPad</h2>
269
+<div class="outline-text-2" id="text-org6976750">
270 270
 <p>
271 271
 Collaborate on editing documents, presentations and source code, or vote on things. All with a good level of security.
272 272
 </p>
@@ -276,9 +276,9 @@ Collaborate on editing documents, presentations and source code, or vote on thin
276 276
 </p>
277 277
 </div>
278 278
 </div>
279
-<div id="outline-container-org535af0a" class="outline-2">
280
-<h2 id="org535af0a">DLNA</h2>
281
-<div class="outline-text-2" id="text-org535af0a">
279
+<div id="outline-container-org034a81a" class="outline-2">
280
+<h2 id="org034a81a">DLNA</h2>
281
+<div class="outline-text-2" id="text-org034a81a">
282 282
 <p>
283 283
 Enables you to use the system as a music server which any DLNA compatible devices can connect to within your home network.
284 284
 </p>
@@ -288,9 +288,9 @@ Enables you to use the system as a music server which any DLNA compatible device
288 288
 </p>
289 289
 </div>
290 290
 </div>
291
-<div id="outline-container-org61623e3" class="outline-2">
292
-<h2 id="org61623e3">Dokuwiki</h2>
293
-<div class="outline-text-2" id="text-org61623e3">
291
+<div id="outline-container-orgd4981e7" class="outline-2">
292
+<h2 id="orgd4981e7">Dokuwiki</h2>
293
+<div class="outline-text-2" id="text-orgd4981e7">
294 294
 <p>
295 295
 A databaseless wiki system.
296 296
 </p>
@@ -300,9 +300,9 @@ A databaseless wiki system.
300 300
 </p>
301 301
 </div>
302 302
 </div>
303
-<div id="outline-container-orge0257ac" class="outline-2">
304
-<h2 id="orge0257ac">Emacs</h2>
305
-<div class="outline-text-2" id="text-orge0257ac">
303
+<div id="outline-container-org5c87cff" class="outline-2">
304
+<h2 id="org5c87cff">Emacs</h2>
305
+<div class="outline-text-2" id="text-org5c87cff">
306 306
 <p>
307 307
 If you use the Mutt client to read your email then this will set it up to use emacs for composing new mail.
308 308
 </p>
@@ -312,9 +312,9 @@ If you use the Mutt client to read your email then this will set it up to use em
312 312
 </p>
313 313
 </div>
314 314
 </div>
315
-<div id="outline-container-orgb24d6db" class="outline-2">
316
-<h2 id="orgb24d6db">Etherpad</h2>
317
-<div class="outline-text-2" id="text-orgb24d6db">
315
+<div id="outline-container-org8f6c5e6" class="outline-2">
316
+<h2 id="org8f6c5e6">Etherpad</h2>
317
+<div class="outline-text-2" id="text-org8f6c5e6">
318 318
 <p>
319 319
 Collaborate on creating documents in real time. Maybe you're planning a holiday with other family members or creating documentation for a Free Software project along with other volunteers. Etherpad is hard to beat for simplicity and speed. Only users of the system will be able to access it.
320 320
 </p>
@@ -324,9 +324,9 @@ Collaborate on creating documents in real time. Maybe you're planning a holiday
324 324
 </p>
325 325
 </div>
326 326
 </div>
327
-<div id="outline-container-orgb3d24df" class="outline-2">
328
-<h2 id="orgb3d24df">Friendica</h2>
329
-<div class="outline-text-2" id="text-orgb3d24df">
327
+<div id="outline-container-orgbda9945" class="outline-2">
328
+<h2 id="orgbda9945">Friendica</h2>
329
+<div class="outline-text-2" id="text-orgbda9945">
330 330
 <p>
331 331
 Federated social network system.
332 332
 </p>
@@ -336,9 +336,9 @@ Federated social network system.
336 336
 </p>
337 337
 </div>
338 338
 </div>
339
-<div id="outline-container-org80e709f" class="outline-2">
340
-<h2 id="org80e709f">Ghost</h2>
341
-<div class="outline-text-2" id="text-org80e709f">
339
+<div id="outline-container-orgfe1de94" class="outline-2">
340
+<h2 id="orgfe1de94">Ghost</h2>
341
+<div class="outline-text-2" id="text-orgfe1de94">
342 342
 <p>
343 343
 Modern looking blogging system.
344 344
 </p>
@@ -348,9 +348,9 @@ Modern looking blogging system.
348 348
 </p>
349 349
 </div>
350 350
 </div>
351
-<div id="outline-container-orge6cfb69" class="outline-2">
352
-<h2 id="orge6cfb69">GNU Social</h2>
353
-<div class="outline-text-2" id="text-orge6cfb69">
351
+<div id="outline-container-orgdd6af7e" class="outline-2">
352
+<h2 id="orgdd6af7e">GNU Social</h2>
353
+<div class="outline-text-2" id="text-orgdd6af7e">
354 354
 <p>
355 355
 Federated social network based on the OStatus protocol. You can "<i>remote follow</i>" other users within the GNU Social federation.
356 356
 </p>
@@ -360,9 +360,9 @@ Federated social network based on the OStatus protocol. You can "<i>remote follo
360 360
 </p>
361 361
 </div>
362 362
 </div>
363
-<div id="outline-container-org41197ed" class="outline-2">
364
-<h2 id="org41197ed">Gogs</h2>
365
-<div class="outline-text-2" id="text-org41197ed">
363
+<div id="outline-container-org8f2e173" class="outline-2">
364
+<h2 id="org8f2e173">Gogs</h2>
365
+<div class="outline-text-2" id="text-org8f2e173">
366 366
 <p>
367 367
 Lightweight git project hosting system. You can mirror projects from Github, or if Github turns evil then just host your own projects while retaining the familiar <i>fork-and-pull</i> workflow. If you can use Github then you can also use Gogs.
368 368
 </p>
@@ -372,9 +372,9 @@ Lightweight git project hosting system. You can mirror projects from Github, or
372 372
 </p>
373 373
 </div>
374 374
 </div>
375
-<div id="outline-container-orgca785f7" class="outline-2">
376
-<h2 id="orgca785f7">HTMLy</h2>
377
-<div class="outline-text-2" id="text-orgca785f7">
375
+<div id="outline-container-org8fd1e52" class="outline-2">
376
+<h2 id="org8fd1e52">HTMLy</h2>
377
+<div class="outline-text-2" id="text-org8fd1e52">
378 378
 <p>
379 379
 Databaseless blogging system. Quite simple and with a markdown-like format.
380 380
 </p>
@@ -384,9 +384,9 @@ Databaseless blogging system. Quite simple and with a markdown-like format.
384 384
 </p>
385 385
 </div>
386 386
 </div>
387
-<div id="outline-container-org86037c8" class="outline-2">
388
-<h2 id="org86037c8">Hubzilla</h2>
389
-<div class="outline-text-2" id="text-org86037c8">
387
+<div id="outline-container-org70040fe" class="outline-2">
388
+<h2 id="org70040fe">Hubzilla</h2>
389
+<div class="outline-text-2" id="text-org70040fe">
390 390
 <p>
391 391
 Web publishing platform with social network like features and good privacy controls so that it's possible to specify who can see which content. Includes photo albums, calendar, wiki and file storage.
392 392
 </p>
@@ -396,9 +396,21 @@ Web publishing platform with social network like features and good privacy contr
396 396
 </p>
397 397
 </div>
398 398
 </div>
399
-<div id="outline-container-org8a61ba6" class="outline-2">
400
-<h2 id="org8a61ba6">IRC Server (ngirc)</h2>
401
-<div class="outline-text-2" id="text-org8a61ba6">
399
+<div id="outline-container-org64ccd5e" class="outline-2">
400
+<h2 id="org64ccd5e">Icecast media stream</h2>
401
+<div class="outline-text-2" id="text-org64ccd5e">
402
+<p>
403
+Make your own internet radio station.
404
+</p>
405
+
406
+<p>
407
+<a href="./app_icecast.html">How to use it</a>
408
+</p>
409
+</div>
410
+</div>
411
+<div id="outline-container-org73319d7" class="outline-2">
412
+<h2 id="org73319d7">IRC Server (ngirc)</h2>
413
+<div class="outline-text-2" id="text-org73319d7">
402 414
 <p>
403 415
 Run your own IRC chat channel which can be secured with a password and accessible via an onion address. A bouncer is included so that you can receive messages sent while you were offline. Works with Hexchat and other popular clients.
404 416
 </p>
@@ -408,18 +420,18 @@ Run your own IRC chat channel which can be secured with a password and accessibl
408 420
 </p>
409 421
 </div>
410 422
 </div>
411
-<div id="outline-container-org5fb058b" class="outline-2">
412
-<h2 id="org5fb058b">Jitsi Meet</h2>
413
-<div class="outline-text-2" id="text-org5fb058b">
423
+<div id="outline-container-orgd03beb7" class="outline-2">
424
+<h2 id="orgd03beb7">Jitsi Meet</h2>
425
+<div class="outline-text-2" id="text-orgd03beb7">
414 426
 <p>
415 427
 Experimental WebRTC video conferencing system, similar to Google Hangouts. This may not be fully functional, but is hoped to be in the near future.
416 428
 </p>
417 429
 </div>
418 430
 </div>
419 431
 
420
-<div id="outline-container-org34dd27a" class="outline-2">
421
-<h2 id="org34dd27a">KanBoard</h2>
422
-<div class="outline-text-2" id="text-org34dd27a">
432
+<div id="outline-container-org4b6a6a3" class="outline-2">
433
+<h2 id="org4b6a6a3">KanBoard</h2>
434
+<div class="outline-text-2" id="text-org4b6a6a3">
423 435
 <p>
424 436
 A simple kanban system for managing projects or TODO lists.
425 437
 </p>
@@ -429,9 +441,9 @@ A simple kanban system for managing projects or TODO lists.
429 441
 </p>
430 442
 </div>
431 443
 </div>
432
-<div id="outline-container-orgd752c61" class="outline-2">
433
-<h2 id="orgd752c61">Key Server</h2>
434
-<div class="outline-text-2" id="text-orgd752c61">
444
+<div id="outline-container-orge157028" class="outline-2">
445
+<h2 id="orge157028">Key Server</h2>
446
+<div class="outline-text-2" id="text-orge157028">
435 447
 <p>
436 448
 An OpenPGP key server for storing and retrieving GPG public keys.
437 449
 </p>
@@ -441,9 +453,9 @@ An OpenPGP key server for storing and retrieving GPG public keys.
441 453
 </p>
442 454
 </div>
443 455
 </div>
444
-<div id="outline-container-orgd209174" class="outline-2">
445
-<h2 id="orgd209174">Koel</h2>
446
-<div class="outline-text-2" id="text-orgd209174">
456
+<div id="outline-container-org090bd37" class="outline-2">
457
+<h2 id="org090bd37">Koel</h2>
458
+<div class="outline-text-2" id="text-org090bd37">
447 459
 <p>
448 460
 Access your music collection from any internet connected device.
449 461
 </p>
@@ -453,9 +465,9 @@ Access your music collection from any internet connected device.
453 465
 </p>
454 466
 </div>
455 467
 </div>
456
-<div id="outline-container-orgfa62348" class="outline-2">
457
-<h2 id="orgfa62348">Lychee</h2>
458
-<div class="outline-text-2" id="text-orgfa62348">
468
+<div id="outline-container-org1c5934b" class="outline-2">
469
+<h2 id="org1c5934b">Lychee</h2>
470
+<div class="outline-text-2" id="text-org1c5934b">
459 471
 <p>
460 472
 Make your photo albums available on the web.
461 473
 </p>
@@ -465,9 +477,9 @@ Make your photo albums available on the web.
465 477
 </p>
466 478
 </div>
467 479
 </div>
468
-<div id="outline-container-org05fc470" class="outline-2">
469
-<h2 id="org05fc470">Mailpile</h2>
470
-<div class="outline-text-2" id="text-org05fc470">
480
+<div id="outline-container-org3cf360f" class="outline-2">
481
+<h2 id="org3cf360f">Mailpile</h2>
482
+<div class="outline-text-2" id="text-org3cf360f">
471 483
 <p>
472 484
 Modern email client which supports GPG encryption.
473 485
 </p>
@@ -477,9 +489,9 @@ Modern email client which supports GPG encryption.
477 489
 </p>
478 490
 </div>
479 491
 </div>
480
-<div id="outline-container-orga3887ed" class="outline-2">
481
-<h2 id="orga3887ed">Matrix</h2>
482
-<div class="outline-text-2" id="text-orga3887ed">
492
+<div id="outline-container-org62684b4" class="outline-2">
493
+<h2 id="org62684b4">Matrix</h2>
494
+<div class="outline-text-2" id="text-org62684b4">
483 495
 <p>
484 496
 Multi-user chat with some security and moderation controls.
485 497
 </p>
@@ -489,9 +501,9 @@ Multi-user chat with some security and moderation controls.
489 501
 </p>
490 502
 </div>
491 503
 </div>
492
-<div id="outline-container-org98a5590" class="outline-2">
493
-<h2 id="org98a5590">Mediagoblin</h2>
494
-<div class="outline-text-2" id="text-org98a5590">
504
+<div id="outline-container-org67c8d9c" class="outline-2">
505
+<h2 id="org67c8d9c">Mediagoblin</h2>
506
+<div class="outline-text-2" id="text-org67c8d9c">
495 507
 <p>
496 508
 Publicly host video and audio files so that you don't need to use YouTube/Vimeo/etc.
497 509
 </p>
@@ -501,9 +513,9 @@ Publicly host video and audio files so that you don't need to use YouTube/Vimeo/
501 513
 </p>
502 514
 </div>
503 515
 </div>
504
-<div id="outline-container-orgf91b078" class="outline-2">
505
-<h2 id="orgf91b078">Mumble</h2>
506
-<div class="outline-text-2" id="text-orgf91b078">
516
+<div id="outline-container-org35f9d59" class="outline-2">
517
+<h2 id="org35f9d59">Mumble</h2>
518
+<div class="outline-text-2" id="text-org35f9d59">
507 519
 <p>
508 520
 The popular VoIP and text chat system. Say goodbye to old-fashioned telephony conferences with silly dial codes. Also works well on mobile.
509 521
 </p>
@@ -513,9 +525,9 @@ The popular VoIP and text chat system. Say goodbye to old-fashioned telephony co
513 525
 </p>
514 526
 </div>
515 527
 </div>
516
-<div id="outline-container-orga31496f" class="outline-2">
517
-<h2 id="orga31496f">NextCloud</h2>
518
-<div class="outline-text-2" id="text-orga31496f">
528
+<div id="outline-container-org4e83692" class="outline-2">
529
+<h2 id="org4e83692">NextCloud</h2>
530
+<div class="outline-text-2" id="text-org4e83692">
519 531
 <p>
520 532
 Store files on your server and sync them with laptops or mobile devices. Includes many plugins including videoconferencing and collaborative document editing.
521 533
 </p>
@@ -525,9 +537,9 @@ Store files on your server and sync them with laptops or mobile devices. Include
525 537
 </p>
526 538
 </div>
527 539
 </div>
528
-<div id="outline-container-org4565812" class="outline-2">
529
-<h2 id="org4565812">PI-Hole</h2>
530
-<div class="outline-text-2" id="text-org4565812">
540
+<div id="outline-container-org38f233d" class="outline-2">
541
+<h2 id="org38f233d">PI-Hole</h2>
542
+<div class="outline-text-2" id="text-org38f233d">
531 543
 <p>
532 544
 The black hole for web adverts. Block adverts at the domain name level within your local network. It can significantly reduce bandwidth, speed up page load times and protect your systems from being tracked by spyware.
533 545
 </p>
@@ -537,9 +549,9 @@ The black hole for web adverts. Block adverts at the domain name level within yo
537 549
 </p>
538 550
 </div>
539 551
 </div>
540
-<div id="outline-container-orgdb572b6" class="outline-2">
541
-<h2 id="orgdb572b6">Pleroma</h2>
542
-<div class="outline-text-2" id="text-orgdb572b6">
552
+<div id="outline-container-orgc0768d8" class="outline-2">
553
+<h2 id="orgc0768d8">Pleroma</h2>
554
+<div class="outline-text-2" id="text-orgc0768d8">
543 555
 <p>
544 556
 Pleroma is an OStatus-compatible social networking server, compatible with GNU Social, PostActiv and Mastodon. It is high-performance and so is especially well suited for running on low power single board computers without much RAM.
545 557
 </p>
@@ -549,9 +561,9 @@ Pleroma is an OStatus-compatible social networking server, compatible with GNU S
549 561
 </p>
550 562
 </div>
551 563
 </div>
552
-<div id="outline-container-org5d51ff5" class="outline-2">
553
-<h2 id="org5d51ff5">PostActiv</h2>
554
-<div class="outline-text-2" id="text-org5d51ff5">
564
+<div id="outline-container-orgb849d85" class="outline-2">
565
+<h2 id="orgb849d85">PostActiv</h2>
566
+<div class="outline-text-2" id="text-orgb849d85">
555 567
 <p>
556 568
 An alternative federated social networking system compatible with GNU Social, Pleroma and Mastodon. It includes some optimisations and fixes currently not available within the main GNU Social project.
557 569
 </p>
@@ -561,9 +573,9 @@ An alternative federated social networking system compatible with GNU Social, Pl
561 573
 </p>
562 574
 </div>
563 575
 </div>
564
-<div id="outline-container-org6e223d1" class="outline-2">
565
-<h2 id="org6e223d1">Profanity</h2>
566
-<div class="outline-text-2" id="text-org6e223d1">
576
+<div id="outline-container-org1eccd38" class="outline-2">
577
+<h2 id="org1eccd38">Profanity</h2>
578
+<div class="outline-text-2" id="text-org1eccd38">
567 579
 <p>
568 580
 A shell based XMPP client which you can run on the Freedombone server via ssh.
569 581
 </p>
@@ -573,9 +585,9 @@ A shell based XMPP client which you can run on the Freedombone server via ssh.
573 585
 </p>
574 586
 </div>
575 587
 </div>
576
-<div id="outline-container-orga15f077" class="outline-2">
577
-<h2 id="orga15f077">Riot Web</h2>
578
-<div class="outline-text-2" id="text-orga15f077">
588
+<div id="outline-container-org7ba8023" class="outline-2">
589
+<h2 id="org7ba8023">Riot Web</h2>
590
+<div class="outline-text-2" id="text-org7ba8023">
579 591
 <p>
580 592
 A browser based user interface for the Matrix federated communications system, including WebRTC audio and video chat.
581 593
 </p>
@@ -585,9 +597,9 @@ A browser based user interface for the Matrix federated communications system, i
585 597
 </p>
586 598
 </div>
587 599
 </div>
588
-<div id="outline-container-org1d66f8e" class="outline-2">
589
-<h2 id="org1d66f8e">SearX</h2>
590
-<div class="outline-text-2" id="text-org1d66f8e">
600
+<div id="outline-container-orge5ba7bf" class="outline-2">
601
+<h2 id="orge5ba7bf">SearX</h2>
602
+<div class="outline-text-2" id="text-orge5ba7bf">
591 603
 <p>
592 604
 A metasearch engine for customised and private web searches.
593 605
 </p>
@@ -597,9 +609,9 @@ A metasearch engine for customised and private web searches.
597 609
 </p>
598 610
 </div>
599 611
 </div>
600
-<div id="outline-container-org255b78b" class="outline-2">
601
-<h2 id="org255b78b">tt-rss</h2>
602
-<div class="outline-text-2" id="text-org255b78b">
612
+<div id="outline-container-org1ddca20" class="outline-2">
613
+<h2 id="org1ddca20">tt-rss</h2>
614
+<div class="outline-text-2" id="text-org1ddca20">
603 615
 <p>
604 616
 Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via an onion address. Have "<i>the right to read</i>" without the Surveillance State knowing what you're reading. Also available with a user interface suitable for viewing on mobile devices via a browser such as OrFox.
605 617
 </p>
@@ -609,9 +621,9 @@ Private RSS reader. Pulls in RSS/Atom feeds via Tor and is only accessible via a
609 621
 </p>
610 622
 </div>
611 623
 </div>
612
-<div id="outline-container-orgf2f850c" class="outline-2">
613
-<h2 id="orgf2f850c">Syncthing</h2>
614
-<div class="outline-text-2" id="text-orgf2f850c">
624
+<div id="outline-container-org2602a28" class="outline-2">
625
+<h2 id="org2602a28">Syncthing</h2>
626
+<div class="outline-text-2" id="text-org2602a28">
615 627
 <p>
616 628
 Possibly the best way to synchronise files across all of your devices. Once it has been set up it "just works" with no user intervention needed.
617 629
 </p>
@@ -621,9 +633,9 @@ Possibly the best way to synchronise files across all of your devices. Once it h
621 633
 </p>
622 634
 </div>
623 635
 </div>
624
-<div id="outline-container-org05328a6" class="outline-2">
625
-<h2 id="org05328a6">Tahoe-LAFS</h2>
626
-<div class="outline-text-2" id="text-org05328a6">
636
+<div id="outline-container-org80ed846" class="outline-2">
637
+<h2 id="org80ed846">Tahoe-LAFS</h2>
638
+<div class="outline-text-2" id="text-org80ed846">
627 639
 <p>
628 640
 Robust and encrypted storage of files on one or more server.
629 641
 </p>
@@ -633,9 +645,9 @@ Robust and encrypted storage of files on one or more server.
633 645
 </p>
634 646
 </div>
635 647
 </div>
636
-<div id="outline-container-orgf736869" class="outline-2">
637
-<h2 id="orgf736869">Tox</h2>
638
-<div class="outline-text-2" id="text-orgf736869">
648
+<div id="outline-container-orgdc397e9" class="outline-2">
649
+<h2 id="orgdc397e9">Tox</h2>
650
+<div class="outline-text-2" id="text-orgdc397e9">
639 651
 <p>
640 652
 Client and bootstrap node for the Tox chat/VoIP system.
641 653
 </p>
@@ -645,9 +657,9 @@ Client and bootstrap node for the Tox chat/VoIP system.
645 657
 </p>
646 658
 </div>
647 659
 </div>
648
-<div id="outline-container-orga2e1cdb" class="outline-2">
649
-<h2 id="orga2e1cdb">Turtl</h2>
650
-<div class="outline-text-2" id="text-orga2e1cdb">
660
+<div id="outline-container-org588d32f" class="outline-2">
661
+<h2 id="org588d32f">Turtl</h2>
662
+<div class="outline-text-2" id="text-org588d32f">
651 663
 <p>
652 664
 A system for privately creating and sharing notes and images, similar to Evernote but without the spying.
653 665
 </p>
@@ -657,18 +669,18 @@ A system for privately creating and sharing notes and images, similar to Evernot
657 669
 </p>
658 670
 </div>
659 671
 </div>
660
-<div id="outline-container-org0fd91b2" class="outline-2">
661
-<h2 id="org0fd91b2">Vim</h2>
662
-<div class="outline-text-2" id="text-org0fd91b2">
672
+<div id="outline-container-org248d732" class="outline-2">
673
+<h2 id="org248d732">Vim</h2>
674
+<div class="outline-text-2" id="text-org248d732">
663 675
 <p>
664 676
 If you use the Mutt client to read your email then this will set it up to use vim for composing new mail.
665 677
 </p>
666 678
 </div>
667 679
 </div>
668 680
 
669
-<div id="outline-container-org378fc24" class="outline-2">
670
-<h2 id="org378fc24">Virtual Private Network (VPN)</h2>
671
-<div class="outline-text-2" id="text-org378fc24">
681
+<div id="outline-container-org880e1f3" class="outline-2">
682
+<h2 id="org880e1f3">Virtual Private Network (VPN)</h2>
683
+<div class="outline-text-2" id="text-org880e1f3">
672 684
 <p>
673 685
 Set up a VPN on your server so that you can bypass local internet censorship.
674 686
 </p>
@@ -678,9 +690,9 @@ Set up a VPN on your server so that you can bypass local internet censorship.
678 690
 </p>
679 691
 </div>
680 692
 </div>
681
-<div id="outline-container-orgf7ad415" class="outline-2">
682
-<h2 id="orgf7ad415">XMPP</h2>
683
-<div class="outline-text-2" id="text-orgf7ad415">
693
+<div id="outline-container-org3697e9f" class="outline-2">
694
+<h2 id="org3697e9f">XMPP</h2>
695
+<div class="outline-text-2" id="text-org3697e9f">
684 696
 <p>
685 697
 Chat server which can be used together with client such as Gajim or Conversations to provide end-to-end content security and also onion routed metadata security. Includes advanced features such as <i>client state notification</i> to save battery power on your mobile devices, support for seamless roaming between networks and <i>message carbons</i> so that you can receive the same messages while being simultaneously logged in to your account on more than one device.
686 698
 </p>