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.
scoobybejesus 781aebc6ad Remove duplicate requirement. 4 months ago
data Initial commit 1 year ago
ircradio switch from youtube-dl to yt-dlp 7 months ago
.gitignore Initial commit 1 year ago Updated README 1 year ago
requirements.txt Remove duplicate requirement. 4 months ago Initial commit 1 year ago
settings.py_example Add JSON API for searches. Introduces new config option 'enable_search_route' 1 year 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.