Setup your own Internet music radio station using Shoutcast in Linux
Posted by danielDec 7
Besides a website, the server running this blog also hosts an Internet Music broadcasting radio. Do you see the “Listen Music” Link on the home page, top right corner of the page – http://danasmera.com:8000/listen.pls?sid=1 ? It is running on an AWS ec2 microinstance, which does not cost much. So how do you turn your public facing server into an internet radio, accessible from your pc, laptop or mobile phone. It is quite simple, some of the most popular solutions are Ice cast and shoutcast. Here is how you can setup an Internet broadcast radio using shoutcast.
1. Add shoutcast user
#useradd shoutcast or #adduser shoutcast cd /home/shoutcast
2. Download shoutcast
Go to http://www.shoutcast.com/broadcast-tools and download SHOUTcast Distributed Network Audio Server(DNAS).
#wget -c http://download.nullsoft.com/shoutcast/tools/sc_serv2_linux_x64_07_31_2011.tar.gz
(for 64-bit linux machine)
#wget -c http://download.nullsoft.com/shoutcast/tools/sc_serv2_linux_07_31_2011.tar.gz
(for 32-bit linux machine)
If you plan to broadcast mp3 format, you will need the SHOUTcast Transcoder (SC_TRANS)
#wget -c http://download.nullsoft.com/shoutcast/tools/sc_trans_linux_x64_10_07_2011.tar.gz
(for 64-bit linux machine)
#wget -c http://download.nullsoft.com/shoutcast/tools/sc_trans_linux_10_07_2011.tar.gz
(for 32-bit linux machine)
3. uncompress and untar the shoutcast programs (In my case, it is the 64-bit version)
#tar xzvf sc_serv2_linux_x64_07_31_2011.tar.gz #tar xzvf http://download.nullsoft.com/shoutcast/tools/sc_trans_linux_x64_10_07_2011.tar.gz
4. Time to edit two important config files: sc_serv_basic.conf and sc_trans_basic.conf
a. sc_serv_basic.conf
logfile=logs/sc_serv.log w3clog=logs/sc_w3c.log banfile=control/sc_serv.ban ripfile=control/sc_serv.rip publicserver=always</code> <code>password=yourpasswordhere</code> #this password is used by sc_trans, make sure to use same password in sc_trans_basic.conf <code>adminpassword=yourpasswordhereagain</code> #this password is used to access the admin page through your browser <code>streamid=1 streampath=/test.aac
streamauthhash_1=AcMnKLMrYVmK2NlR9W8j
#unique for each station, Needed if you plan to make your station publicly available.
b. sc_trans_basic.conf
logfile=logs/sc_trans.log calendarrewrite=0 encoder_1=aacp</code> ## uploaded mp3 music files will be played as AAC <code>bitrate_1=56000 outprotocol_1=3 serverip_1=127.0.0.1</code> ##listen only on loopback interface <code>serverport_1=8000 uvoxauth_1=yourpasswordhere </code> ## This password has to be the same as 'password' in sc_serv_basic.conf <code>uvoxstreamid_1=1 endpointname_1=/Bob streamtitle=Eritrean and Ethiopian Guayla streamurl=http://danasmera.com:8000/listen.pls?sid=1 genre=Tigrigna Guayla playlistfile=playlists/main.lst</code> ## the file contaning the path to individual music files, we will populate this later. <code>adminport=7999 adminuser=administrator adminpassword=yourdminpasshere
5. Upload your music files
Upload all your music files to the /home/shoutcast/music directory. Use any sftp client, such as winscp or filezilla for this task. Sample output –
root@danasmera:/home/shoutcast# ls -al /home/shoutcast/music/ -rw-r--r-- 1 shoutcast shoutcast 6418432 2011-09-07 02:13 abrahamAF.mp3 -rw-r--r-- 1 shoutcast shoutcast 7345261 2011-11-22 23:41 Abreham-vol2.mp3 -rw-r--r-- 1 shoutcast shoutcast 6222993 2011-11-22 23:41 asmera.mp3 -rw-r--r-- 1 shoutcast shoutcast 3197056 2011-09-13 02:56 Bebizelenayo.mp3 -rw-r--r-- 1 shoutcast shoutcast 5890765 2011-11-22 23:41 Bereket1.mp3
6. Populate your playlists file i.e. /home/shoutcast/playlists.lst with full path of all the music files you have on the server.
a. All music files in specific directory eg. /home/shoutcast/music, assuming mp3 file format.
#find /home/shoutcast/music/ -type f -name "*.mp3" -exec ls -1 {} \; > /home/shoutcast/playlists/playlist.lst
b. Music files are locate in different directories in the server, assuming mp3 file format.
#find / -type f -name "*.mp3" -exec ls -1 {} \; > /home/shoutcast/playlists/playlist.lst
7. File permissions and firewall
a. File permissions
Make sure all files under /home/shoutcast are owned by the shoutcast user, otherwise shoutcast will encounter permission denied errors when it tries to play the files.
#chown -R shoutcast:shoutcast /home/shoutcast
b. Open port 8000 and 8001
#iptables -A INPUT -p tcp -i eth0 --dport 8000 -m state --state NEW -j ACCEPT
(-i: might be different depending on your NIC interface such as eth1, eth2 …)
#iptables -A INPUT -p tcp -i eth0 --dport 8001 -m state --state NEW -j ACCEPT
In case of Amazon ec2 servers, you need to open up port 8000 for the specific security group under which the server is running. It is accessible in AWS web management console.
8. Run shoutcast services
#cd /home/shoutcast #./sc_serv sc_serv_basic.conf > /dev/null 2>&1 & #./sc_trans sc_trans_basic.conf > /dev/null 2>&1 &
Test if shoutcast is listening on the specified ports using netstat
root@danasmera:/home/shoutcast# netstat -talpn |grep sc_ tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 1075/sc_serv tcp 0 0 0.0.0.0:8001 0.0.0.0:* LISTEN 1075/sc_serv
9. Register your shoutcast radio with yp.shoucast.com to make it publicly available station.
Follow the instructions on this wiki on how to do this – http://wiki.winamp.com/wiki/SHOUTcast_Authhash_Management
In short – Go to your admin page eg. http://yourip-or-domain:8000/admin.cgi
Click the “Create Authhash” link, and after filling out the form, make sure the appropriate entry is added to the streamauthhash_1 parameter in your sc_serv_basic.conf file.
10. Enjoy the music!
One way to listen the music is by directly browsing to the link as in http://danasmera.com:8000/listen.pls?sid=1 or http://yourip-or-hostname:8000/listen.pls?sid=1 in its generic form. But the most convenient one is to use your mobile phone app to search for your station in the shoutcast yellow pages, and add it to your favorites list. In Android mobile phones – download “A Online Radio” app from the Market, open it and search for a keyword. In my case it could be “tigrigna” or “guayla”, that is the keyword i added when registering my station to the yellow pages. The stations pops up in the search results, just click to play it. For an iphone, you can use the ‘shoutcast’ app.
Finally, keep an eye on the log files in /home/shoutcast/logs, some of the information you will find there includes the music files played, your listeners ip addresses etc. You might use the following command for instance to sort out the IP addresses of the listeners –
#less sc_serv* | grep -i client | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr
Last but not least, know the copyright laws in your country before you start broadcasting other people’s work!
View all posts in this blog – https://linuxfreelancer.com/all-posts
No comments
You must be logged in to post a comment.