2021-06-17 01:27:35 +02:00
|
|
|
# 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!
|
|
|
|
|
2021-06-30 21:08:22 +02:00
|
|
|
![](https://i.imgur.com/MsGaSr3.png)
|
|
|
|
|
2021-06-17 01:27:35 +02:00
|
|
|
### Stack
|
|
|
|
|
|
|
|
IRC!Radio aims to be minimalistic/small using:
|
|
|
|
|
|
|
|
- Python >= 3.7
|
|
|
|
- SQLite
|
|
|
|
- LiquidSoap >= 1.4.3
|
|
|
|
- Icecast2
|
|
|
|
- Quart web framework
|
|
|
|
|
2021-06-17 04:03:40 +02:00
|
|
|
## Command list
|
|
|
|
|
|
|
|
```text
|
|
|
|
- !np - current song
|
|
|
|
- !tune - upvote song
|
|
|
|
- !boo - downvote song
|
2021-06-17 04:05:11 +02:00
|
|
|
- !request - search and queue a song by title or YouTube id
|
2021-06-17 04:03:40 +02:00
|
|
|
- !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
|
|
|
|
```
|
|
|
|
|
2021-06-17 01:27:35 +02:00
|
|
|
## 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`:
|
|
|
|
|
|
|
|
```text
|
|
|
|
adduser radio
|
|
|
|
```
|
|
|
|
|
|
|
|
#### 2. Clone this project
|
|
|
|
|
|
|
|
As `radio`:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
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
|
|
|
|
|
|
|
|
```bash
|
|
|
|
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:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
python run generate
|
|
|
|
```
|
|
|
|
|
|
|
|
This will write icecast2/liquidsoap/nginx configuration files into `data/`.
|
|
|
|
|
|
|
|
#### 4. Applying configuration
|
|
|
|
|
|
|
|
As `root`, copy the following files:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
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.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
sudo systemctl enable liquidsoap
|
|
|
|
sudo systemctl enable nginx
|
|
|
|
sudo systemctl enable icecast2
|
|
|
|
```
|
|
|
|
|
|
|
|
And start them:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
sudo systemctl start icecast2
|
|
|
|
sudo systemctl start liquidsoap
|
|
|
|
```
|
|
|
|
|
|
|
|
Reload & start nginx:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
systemctl reload nginx
|
|
|
|
sudo systemctl start nginx
|
|
|
|
```
|
|
|
|
|
|
|
|
### 6. Run the webif and IRC bot:
|
|
|
|
|
|
|
|
As `radio`, issue the following command:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
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
|
|
|
|
|
|
|
|
```bash
|
|
|
|
certbot --nginx
|
|
|
|
```
|
|
|
|
|
|
|
|
Pick "Yes" for redirects.
|