#+TITLE:
#+AUTHOR: Bob Mottram
#+EMAIL: bob@freedombone.net
#+KEYWORDS: freedombone, icecast
#+DESCRIPTION: How to use Icecast
#+OPTIONS: ^:nil toc:nil
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="freedombone.css" />

#+BEGIN_CENTER
[[file:images/logo.png]]
#+END_CENTER

#+BEGIN_EXPORT html
<center>
<h1>Icecast</h1>
</center>
#+END_EXPORT

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.

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.

* Installation
Log into your system with:

#+begin_src bash
ssh myusername@mydomain -p 2222
#+end_src

Using cursor keys, space bar and Enter key select *Administrator controls* and type in your password. Select *Add/Remove Apps* then *icecast*.

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.

* Adding files to be streamed
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.

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 or uploading them via ssh.

** From a USB drive
Create a directory on the USB drive named *icestream* and copy your files into there. Plug the drive into your server.

Go to the *Administrator control panel*, select *App settings*, then *icecast*, then *Import stream files from USB drive*.

** Via ssh
Make a directory named *icestream* and copy your files into it. Then copy the directory to your server.

#+begin_src bash
scp -r -P 2222 icestream myusername@mydomain:/home/myusername
#+end_src

Log into your server with:

#+begin_src bash
ssh myusername@mydomain -p 2222
#+end_src

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.

* Access controls
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.

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.
