ircradio/README.md
2021-06-17 04:05:11 +02:00

2.9 KiB

IRC!Radio

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!

Stack

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 https://git.wownero.com/dsc/ircradio.git
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 settings.py

Look at settings.py and configure it to your liking:

  • Change icecast2_hostname to your hostname, i.e: radio.example.com
  • 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.