Sander a47d9b0784
Merge pull request #4 from scoobybejesus/patch-3
Add sources req'd for search.js
2021-09-10 17:11:53 +02:00
2021-06-17 03:44:15 +02:00
2021-09-09 20:56:50 -04:00
2021-06-17 03:44:15 +02:00
2021-06-30 21:08:22 +02:00
2021-06-17 03:44:15 +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!

![](https://i.imgur.com/MsGaSr3.png)

### Stack

IRC!Radio aims to be minimalistic/small using:

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

## Command list

```text
- !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`:

```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.
Description
IRC!Radio is a radio station for IRC channels.
Readme 3.7 MiB
Languages
Python 76.8%
HTML 19.2%
Jinja 1.8%
CSS 1.5%
JavaScript 0.7%