Create a Radio Station
Server Training - Ubuntu Server Administration

Create Your Own Radio Station Online

This tutorial will help you build an online radio station so that you can stream music over the Internet. You will learn how to set up a Shoutcast server on Ubuntu Gutsy and also to set up Icecast 0.4. Please note that some of the settings for this project may require you to make decisions on copywrite issues, please observer all copyright issues.

Ubuntu radio


Download the shoutcast server (latest version):

http://www.shoutcast.com/download/files.phtml

Copy it to the /usr directory and create a folder called shout:

sudo cp sc_serv_1.9.8_Linux.tar.gz

sudo mkdir shout

cd /usr/shout

tar zxvf sc_serv_1.9.8_Linux.tar.gz

chmod 755 sc_serv


Edit the config File:

vim sc_serv.conf

Now the important part is changing the password line. So you will see the work Password, make sure you change it to a good password.

Password=MakeANewPassword

Start the Server:

sudo ./sc_serv

You should see that it is running.

Create a way to feed Music Into the Server
This will use ices0.4 so you will be able to use mp3s.

 

 

Linux Server Training Options -- CentOS or Ubuntu Courses

Linux Server Management - Live Course with 550 pg. Manual, Practice Server, Instructor

Linux Server Daemons - Live Course with 550 pg. Manual, Practice Server, Instructor

Linux Server Management - Self-Taught Course, 550 pg. Manual, Movies

Linux Server Daemons - Self Taught Course, 550 pg. Manual, Movies

Live Training Network - Choose from 10 Courses Each Week

 

 

Ubuntu radio station

http://downloads.us.xiph.org/releases/ices/ices-0.4.tar.gz

Save the file to the /usr directory.

sudo tar -zxvf ices-0.4.tar.gz

This will create a folder called ices-0.4. Move into this folder.

cd ices-0.4

 

Install Needed Applications

Make sure your /etc/apt/sources.lst has these sources as you will need them to download the files you need.


deb http://archive.ubuntu.com/ubuntu gutsy main restricted
deb-src http://archive.ubuntu.com/ubuntu gutsy main restricted

deb http://archive.ubuntu.com/ubuntu gutsy-updates main restricted
deb-src http://archive.ubuntu.com/ubuntu gutsy-updates main restricted

deb http://archive.ubuntu.com/ubuntu gutsy universe
deb-src http://archive.ubuntu.com/ubuntu gutsy universe

deb http://security.ubuntu.com/ubuntu gutsy-security main restricted
deb-src http://security.ubuntu.com/ubuntu gutsy-security main restricted

deb http://security.ubuntu.com/ubuntu gutsy-security universe
deb-src http://security.ubuntu.com/ubuntu gutsy-security universe

deb http://archive.ubuntu.com/ubuntu gutsy multiverse
deb-src http://archive.ubuntu.com/ubuntu gutsy multiverse

deb http://archive.ubuntu.com/ubuntu gutsy-backports main restricted universe multiverse

deb http://archive.canonical.com/ubuntu gutsy partner

deb http://packages.medibuntu.org/ gutsy free non-free

It is important you have all of these resources in order to get the applications you need. Be sure to update and then install several required applications.

sudo apt-get update

sudo apt-get install libshout3 libshout3-dev liblame-dev libxml-dev

Make sure you have a compiler.

sudo apt-get install gcc g++ make

Compile ices

Move into the directory that you created.

cd /usr/ices-0.4

./configure --with-lame

If you do not have errors then continue, if you do have errors then download the needed dependencies. Your whole process will fail if you do not resolve these dependencies.

make

sudo make install


Create a mp3 Directory

You can create the directory anywhere but one good location might be /mp3.

sudo mkdir /mp3

Copy your mp3s into that location. Now create your playlist of the mp3s that you have in the directory.

find /mp3 -type f -name “*.mp3” > /mp3/playlist.txt

Now edit your config file for ices.

sudo vim /usr/local/etc/ices.conf.dist

Individual topics that must be changed are listed and then you can see how they look in the text file below.


Change the Playlist to /mp3
You will need to enter the whoe path to the playlist.txt.

playlist handler. -->
<File>/mp3/playlst.txt<File>

Change the Hostname
You may have to run the command:

hostname

This should provide the hostname that you should enter for your server.

<!-- Hostname or ip of the icecast server you want to connect to -->
<Hostname>radio/Hostname>

Change the Password

<!-- Encoder password on the icecast server -->
<Password>AGoodPassword</Password>

Change Protocol to icy

<!-- Header protocol to use when communicating with the server.
Shoutcast servers need "icy", icecast 1.x needs "xaudiocast", and
icecast 2.x needs "http". -->
<Protocol>icy</Protocol>

 

l<?xml version="1.0"?>
<ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices">
<Playlist>
<!-- This is the filename used as a playlist when using the builtin
playlist handler. -->
<File>/mp3/playlst.txt<File>
<!-- Set this to 0 if you don't want to randomize your playlist, and to
1 if you do. -->
<Randomize>1</Randomize>
<!-- One of builtin, perl, or python. -->
<Type>builtin</Type>
<!-- Module name to pass to the playlist handler if using perl or python.
If you use the builtin playlist handler then this is ignored -->
<Module>ices</Module>
<!-- Set this to the number of seconds to crossfade between tracks.
Leave out or set to zero to disable crossfading (the default).
<Crossfade>5</Crossfade>
-->
</Playlist>

<Execution>
<!-- Set this to 1 if you want ices to launch in the background as a
daemon -->
"/usr/local/etc/ices.conf.dist" 78L, 3143C
daemon -->
<Background>0</Background>
<!-- Set this to 1 if you want to see more verbose output from ices -->
<Verbose>0</Verbose>
<!-- This directory specifies where ices should put the logfile, cue file
and pid file (if daemonizing). Don't use /tmp if you have l33t h4x0rz
on your server. -->
<BaseDirectory>/tmp</BaseDirectory>
</Execution>

<Stream>
<Server>
<!-- Hostname or ip of the icecast server you want to connect to -->
<Hostname>radio/Hostname>
<!-- Port of the same -->
<Port>8000</Port>
<!-- Encoder password on the icecast server -->
<Password>AGoodPassword</Password>
<!-- Header protocol to use when communicating with the server.
Shoutcast servers need "icy", icecast 1.x needs "xaudiocast", and
icecast 2.x needs "http". -->
<Protocol>icy</Protocol>
</Server>


<!-- The name of the mountpoint on the icecast server -->
<Mountpoint>/ices</Mountpoint>
<!-- The name of the dumpfile on the server for your stream. DO NOT set
this unless you know what you're doing.
<Dumpfile>ices.dump</Dumpfile>
-->
<!-- The name of you stream, not the name of the song! -->
<Name>Default stream</Name>
<!-- Genre of your stream, be it rock or pop or whatever -->
<Genre>Default genre</Genre>
<!-- Longer description of your stream -->
<Description>Default description</Description>
<!-- URL to a page describing your stream -->
<URL>http://localhost/</URL>
<!-- 0 if you don't want the icecast server to publish your stream on
the yp server, 1 if you do -->
<Public>0</Public>

<!-- Stream bitrate, used to specify bitrate if reencoding, otherwise
just used for display on YP and on the server. Try to keep it
accurate -->
<Bitrate>128</Bitrate>
<Genre>Default genre</Genre>
<!-- Longer description of your stream -->
<Description>Default description</Description>
<!-- URL to a page describing your stream -->
<URL>http://localhost/</URL>
<!-- 0 if you don't want the icecast server to publish your stream on
the yp server, 1 if you do -->
<Public>0</Public>

<!-- Stream bitrate, used to specify bitrate if reencoding, otherwise
just used for display on YP and on the server. Try to keep it
accurate -->
<Bitrate>128</Bitrate>
<!-- If this is set to 1, and ices is compiled with liblame support,
ices will reencode the stream on the fly to the stream bitrate. -->
<Reencode>0</Reencode>
<!-- Number of channels to reencode to, 1 for mono or 2 for stereo -->
<!-- Sampe rate to reencode to in Hz. Leave out for LAME's best choice
<Samplerate>44100</Samplerate>
-->
<Channels>2</Channels>
</Stream>
</ices:Configuration>

Start up the program and it should be working.

ices -c /usr/local/etc/ices.conf.dist