Updated November 2026: rewritten for the current SHOUTcast server (DNAS 2.6.1) on a Linux VPS. The big change since I first wrote this guide: the SHOUTcast Transcoder (sc_trans), which was the AutoDJ in my original setup, is no longer available for download, so the AutoDJ is now Liquidsoap. The original Windows + Winamp setup is summarized at the end. Plans, prices and download links are as of November 2026.
Quick Answer
- sc_serv (SHOUTcast DNAS, now called Shoutcast Server Software) is the streaming server. It is free to self-host, runs on Linux and Windows (32 and 64-bit), listens on port 8000 by default and has a web admin page at
/admin.cgi. - A source sends audio to the server. For a 24/7 station that is an AutoDJ: software that plays your playlist forever. Liquidsoap is the free, maintained choice and speaks the SHOUTcast protocol natively.
- Run both as services (systemd on Linux, Windows services on Windows) so the station comes back by itself after a reboot.
- Open ports 8000 and 8001. Listeners use 8000; classic SHOUTcast (v1) sources such as Liquidsoap connect to port 8000 + 1.

What You Need
- A VPS. sc_serv and Liquidsoap are light; 1 GB of RAM is plenty for one station. I now use Ubuntu LTS (the commands below), but the same pieces work on Windows Server.
- Enough bandwidth. Each listener of a 128 kbps stream uses 128 kbps, about 57.6 MB per hour. 100 listeners at once need about 12.8 Mbps of upload. Check the plan's monthly transfer allowance before anything else.
- Music you are allowed to broadcast. My station plays songs from artists who gave me permission, plus rebroadcast podcasts. Commercial music needs performance licenses (see Licensing).
Step 1: Install the SHOUTcast Server on Linux
Nullsoft still hosts the current build at a stable "latest" URL. Run sc_serv as its own unprivileged user:
# Ubuntu/Debian VPS, as a sudo user
sudo useradd --system --home /opt/shoutcast --shell /usr/sbin/nologin shoutcast
sudo mkdir -p /opt/shoutcast && cd /opt/shoutcast
# Official 64-bit Linux build (DNAS 2.6.1 as of November 2026)
sudo curl -fLO https://download.nullsoft.com/shoutcast/tools/sc_serv2_linux_x64-latest.tar.gz
sudo tar -xzf sc_serv2_linux_x64-latest.tar.gz
# sc_serv won't create these folders itself
sudo mkdir -p logs control
sudo chown -R shoutcast:shoutcast /opt/shoutcast
The archive includes the sc_serv binary, example configs and the full documentation (docs/), which is now the best reference: the old SHOUTcast wiki and help center are offline.
Step 2: Configure sc_serv.conf
Create /opt/shoutcast/sc_serv.conf. Relative paths are relative to the sc_serv folder:
; /opt/shoutcast/sc_serv.conf - one private stream
logfile=logs/sc_serv.log
w3clog=logs/sc_w3c.log
banfile=control/sc_serv.ban
ripfile=control/sc_serv.rip
portbase=8000
; Source password (what the AutoDJ uses). A ':' is not allowed in it.
password=CHANGE_ME_source
; Admin page password (user name: admin)
adminpassword=CHANGE_ME_admin
maxuser=100
; Directory listing: never = private. See "Getting Listed" below.
publicserver=never
requirestreamconfigs=1
streamid_1=1
streampath_1=/stream
Use two different, long passwords. maxuser caps simultaneous listeners so a traffic spike can't exhaust your bandwidth allowance.
Step 3: Run sc_serv as a Service
sc_serv has a built-in daemon mode (./sc_serv daemon sc_serv.conf), but on a modern Linux server I let systemd supervise it in the foreground so it restarts after a crash or reboot:
# /etc/systemd/system/shoutcast.service
[Unit]
Description=SHOUTcast DNAS (sc_serv)
After=network-online.target
Wants=network-online.target
[Service]
User=shoutcast
WorkingDirectory=/opt/shoutcast
ExecStart=/opt/shoutcast/sc_serv /opt/shoutcast/sc_serv.conf
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now shoutcast
sudo systemctl status shoutcast --no-pager
tail -n 20 /opt/shoutcast/logs/sc_serv.log
# Open the listener port and the v1 source port (portbase + 1)
sudo ufw allow 8000/tcp
sudo ufw allow 8001/tcp
Now open http://YOUR_SERVER_IP:8000/admin.cgi and log in as admin with your adminpassword. The stream shows as offline until a source connects.
Step 4: Add a 24/7 AutoDJ With Liquidsoap
In my original setup the SHOUTcast Transcoder (sc_trans) was the AutoDJ, unlocked with a $5 MP3 license. sc_trans is no longer offered for download and has had no updates for years, so I use Liquidsoap instead. Install it with sudo apt install liquidsoap, or get a newer build from Liquidsoap's GitHub releases (the script below uses Liquidsoap 2.x syntax).
# /etc/liquidsoap/autodj.liq - shuffle a folder of MP3s to SHOUTcast forever
# reload_mode="watch" picks up files you add or remove without a restart
music = playlist(reload_mode = "watch", "/srv/radio/music")
# mksafe plays silence instead of stopping if the playlist is ever empty
radio = mksafe(music)
output.shoutcast(
%mp3(bitrate=128),
host = "127.0.0.1",
port = 8000, # Liquidsoap connects to port + 1 (8001) itself
password = "CHANGE_ME_source",
icy_id = 1, # matches streamid_1 in sc_serv.conf
name = "My Radio",
genre = "Various",
url = "https://radio.example.com",
public = false,
radio
)
# /etc/systemd/system/autodj.service
[Unit]
Description=Liquidsoap AutoDJ for SHOUTcast
After=network-online.target shoutcast.service
Wants=network-online.target
[Service]
User=radio
ExecStart=/usr/bin/liquidsoap /etc/liquidsoap/autodj.liq
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo useradd --system --no-create-home --shell /usr/sbin/nologin radio
sudo mkdir -p /srv/radio/music && sudo chown -R radio:radio /srv/radio
# Upload MP3s with scp/sftp into /srv/radio/music, then:
sudo systemctl daemon-reload
sudo systemctl enable --now autodj
journalctl -u autodj -n 30 --no-pager
Within a few seconds the admin page should show the stream as up, with the current song. Listen at http://YOUR_SERVER_IP:8000/stream. If systemctl status autodj shows a connection error, the source password in the script doesn't match password= in sc_serv.conf, or port 8001 is blocked.
Step 5: Live DJing
Live shows were part of my original plan: an automated playlist most of the time, and me chiming in when I want. With Liquidsoap the cleanest way is to let the DJ connect to Liquidsoap, which switches to the live show and falls back to the playlist when the DJ disconnects. Replace the radio = ... line in the script with:
# Live DJs connect here (Icecast protocol) on port 8005, mount /live
live = input.harbor("live", port = 8005, password = "CHANGE_ME_dj")
# Live show when connected, otherwise the AutoDJ playlist
radio = mksafe(fallback(track_sensitive = false, [live, music]))
Open port 8005, then point a broadcasting app such as BUTT or Mixxx at your server: server type Icecast, port 8005, mount /live, and the DJ password. Listeners never notice the switch because the SHOUTcast stream itself never drops.
Step 6: HTTPS and a Player on Your Website
If your website uses HTTPS, browsers block a plain http:// stream on it. SHOUTcast 2.6 has native SSL options, but they were tied to a premium license; the simplest route is to put nginx with a free Let's Encrypt certificate in front:
# /etc/nginx/sites-available/radio.example.com (after certbot has issued the cert)
server {
listen 443 ssl;
server_name radio.example.com;
ssl_certificate /etc/letsencrypt/live/radio.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/radio.example.com/privkey.pem;
location /stream {
proxy_pass http://127.0.0.1:8000/stream;
proxy_buffering off; # send audio to listeners as it arrives
proxy_read_timeout 1h;
}
}
Then any modern browser can play it with a standard audio tag (no Flash, no plugin):
<audio controls preload="none" src="https://radio.example.com/stream"></audio>
preload="none" keeps browsers from downloading audio until someone presses play, which saves bandwidth.
Getting Listed in the SHOUTcast Directory
The directory is SHOUTcast's main advantage over Icecast: some radio apps use it to find stations. A private station needs nothing more. To be listed:
- Set
publicserver=alwaysinsc_serv.confandpublic = truein the Liquidsoap output, then restart both. - With the source connected, open
/admin.cgiand use Create Authhash for the stream. sc_serv saves it asstreamauthhash_1. Treat it like a password.
Two things to know as of November 2026. Shoutcast's pricing page says the free self-hosted "Basic" plan requires pre-roll advertising to be activated. And Shoutcast's Radio Manager dashboard is offline while it moves "to a new home", according to its own site; existing stations keep streaming and stay listed. If authhash creation fails, that is the likely reason.
Prefer Hosted SHOUTcast?
If you don't want to run a server, Shoutcast sells hosted stations ("Shoutcast Easy", from €50 per year per station as of November 2026, with ads), and many hosting companies sell SHOUTcast hosting with a control panel and AutoDJ. For a free self-hosted control panel, AzuraCast gives you a web dashboard, AutoDJ, DJ accounts and statistics in one install; I cover it in how to start an internet radio station on a VPS.
Licensing
Running the software is the easy part. Playing commercial music to the public generally requires performance licenses: in the US, internet radio usually needs licenses from the performing rights organizations (ASCAP, BMI, SESAC, GMR) and from SoundExchange for the sound recordings. Rules differ by country. Without licenses, stick to music you own, have written permission to play, or that is released under a license allowing broadcast. (This is general information, not legal advice.)
The Original 2013 Setup: Windows VPS + Winamp
When I first built this station I used a $15/month Windows Server 2012 VPS from Softsys, with Winamp, SHOUTcast DNAS 2.0, the SHOUTcast Transcoder and the SHOUTcast DSP plug-in for Winamp all installed on the server. I connected over Remote Desktop to change playlists, and Winamp's DSP plug-in let me go live from a microphone.
That approach still partly works on Windows today:
- sc_serv has current Windows builds (
sc_serv2_win64-latest.exefrom the same Nullsoft download folder) and installs as a Windows service, exactly as before:
# Windows: install sc_serv as a service (0 0 = run as Local System)
cd "C:\Program Files\SHOUTcast"
.\sc_serv.exe install sc_serv 0 0 .\sc_serv.conf
Start-Service sc_serv
# Remove it again
.\sc_serv.exe uninstall sc_serv
# Allow listeners and v1 sources through Windows Firewall
New-NetFirewallRule -DisplayName "SHOUTcast" -Direction Inbound -Protocol TCP -LocalPort 8000,8001 -Action Allow
- sc_trans (the transcoder/AutoDJ) and its MP3 license are gone, so the old
sc_trans.exe installstep no longer applies. Use Liquidsoap or a Windows playout app as the source instead. - Winamp + the SHOUTcast DSP plug-in still works as a manual source, but it needs someone logged in to the server, so it is not true 24/7 automation.
- Flash players are gone; use the HTML5 audio tag above.
Frequently Asked Questions
Is SHOUTcast server free?
Yes. The self-hosted Shoutcast Server Software (DNAS) is free to download and run on Linux or Windows. As of November 2026 Shoutcast lists it as the free "Basic" plan and says pre-roll ads must be activated. Hosted plans are paid.
Does SHOUTcast have an AutoDJ?
Not anymore. The SHOUTcast Transcoder (sc_trans) used to be the AutoDJ but is no longer distributed. Use Liquidsoap (free) with output.shoutcast, AzuraCast, or a host that includes an AutoDJ.
What port does a SHOUTcast server use?
Port 8000 by default (portbase). Listeners and SHOUTcast 2 sources use 8000; SHOUTcast 1 (legacy) sources, including Liquidsoap, connect to portbase + 1, so open 8001 too.
Where can I download the SHOUTcast transcoder?
Nowhere official: Nullsoft no longer hosts sc_trans, and old copies are unsupported. Liquidsoap does the same job (playlists, scheduling, live fallback) and is actively maintained.
SHOUTcast or Icecast?
Both stream MP3 and AAC to the same players. SHOUTcast's draw is its directory; Icecast is open source with no ads or accounts. If you don't need the directory, Icecast (often through AzuraCast) is the simpler choice.
Summary
A SHOUTcast station on a VPS is two services: sc_serv to stream, and an AutoDJ to feed it. The server is still free and still a single binary; the AutoDJ is now Liquidsoap instead of sc_trans. Add nginx for HTTPS, an HTML5 player, an authhash if you want to be in the directory, and keep an eye on bandwidth and licensing.
Related: starting an internet radio station with AzuraCast or Icecast and developing and automating a podcast radio station.

