IRC!Radio is a radio station for IRC channels.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dsc 077ce3f3b7
Merge pull request 'Add SHOW_PREVIOUS_TRACKS env var. Subtle style change. Launch new tabs on history/library.' (#4) from scoobybejesus/ircradio:script-or into master
11 months ago
data Initial commit 2 years ago
ircradio Subtle style change, plus launch new tabs on history/library. 11 months ago
.gitignore Initial commit 2 years ago Updated README 2 years ago
requirements.txt Remove duplicate requirement. 11 months ago Initial commit 2 years ago
settings.py_example Add SHOW_PREVIOUS_TRACKS env var, and use in base.html and index.html 11 months ago


IRC!Radio is a radio station for IRC channels. You hang around on IRC, adding YouTube songs to the bot, listening to it with all your friends. Great fun!


IRC!Radio aims to be minimalistic/small using:

  • Python >= 3.7
  • SQLite
  • LiquidSoap >= 1.4.3
  • Icecast2
  • Quart web framework

Command list

- !np         - current song
- !tune       - upvote song
- !boo        - downvote song
- !request    - search and queue a song by title or YouTube id
- !dj+        - add a YouTube ID to the radiostream
- !dj-        - remove a YouTube ID
- !ban+       - ban a YouTube ID and/or nickname
- !ban-       - unban a YouTube ID and/or nickname
- !skip       - skips current song
- !listeners  - show current amount of listeners
- !queue      - show queued up music
- !queue_user - queue a random song by user
- !search     - search for a title
- !stats      - stats

Ubuntu installation

No docker. The following assumes you have a VPS somewhere with root access.

1. Requirements

As root:

apt install -y liquidsoap icecast2 nginx python3-certbot-nginx python3-virtualenv libogg-dev ffmpeg sqlite3
ufw allow 80
ufw allow 443

When the installation asks for icecast2 configuration, skip it.

2. Create system user

As root:

adduser radio

2. Clone this project

As radio:

su radio
cd ~/

git clone
cd ircradio/
virtualenv -p /usr/bin/python3 venv
source venv/bin/activate

pip install -r requirements.txt

3. Generate some configs

cp settings.py_example

Look at and configure it to your liking:

  • Change icecast2_hostname to your hostname, i.e:
  • Change irc_host, irc_port, irc_channels, and irc_admins_nicknames
  • Change the passwords under icecast2_
  • Change the liquidsoap_description to whatever

When you are done, execute this command:

python run generate

This will write icecast2/liquidsoap/nginx configuration files into data/.

4. Applying configuration

As root, copy the following files:

cp data/icecast.xml /etc/icecast2/
cp data/liquidsoap.service /etc/systemd/system/
cp data/radio_nginx.conf /etc/nginx/sites-enabled/

5. Starting some stuff

As root 'enable' icecast2/liquidsoap/nginx, this is to make sure these applications start when the server reboots.

sudo systemctl enable liquidsoap
sudo systemctl enable nginx
sudo systemctl enable icecast2

And start them:

sudo systemctl start icecast2
sudo systemctl start liquidsoap

Reload & start nginx:

systemctl reload nginx
sudo systemctl start nginx

6. Run the webif and IRC bot:

As radio, issue the following command:

python3 run webdev

Run it in screen or tux to keep it up, or write a systemd unit file for it.

7. Generate HTTPs certificate

certbot --nginx

Pick "Yes" for redirects.