WEBVTT

00:00.000 --> 00:09.640
Okay, let's start the next presentation.

00:09.640 --> 00:16.760
Our next speaker is Ari Carmody and he will, they will talk about self hosting a student

00:16.760 --> 00:17.760
radio station.

00:17.760 --> 00:18.760
Welcome.

00:18.760 --> 00:19.760
Hello.

00:19.760 --> 00:20.760
Hello.

00:20.760 --> 00:21.760
Hello.

00:21.760 --> 00:22.760
Yeah.

00:22.760 --> 00:24.760
We're making a start.

00:24.760 --> 00:30.760
Oh, there we go.

00:30.760 --> 00:31.760
Hello.

00:31.760 --> 00:36.760
There's a lot more people here than I expected.

00:36.760 --> 00:38.760
I'm going to talk about self hosting a student radio station.

00:38.760 --> 00:43.760
I'm going to quickly clarify English is my first language, but I'm from rural Ireland,

00:43.760 --> 00:46.760
so that's actually not true.

00:47.760 --> 00:51.760
I'm just going to point out, in Ireland, university and college are interchangeable, so I will be using both of them.

00:51.760 --> 00:58.760
I know that's not the same system in the UK, and I don't know how student organizations work at the rest of Europe, but we call them societies.

00:58.760 --> 01:01.760
They're just clubs, but we don't do sports.

01:01.760 --> 01:02.760
And I want to have time for class.

01:02.760 --> 01:04.760
I may have time for questions.

01:04.760 --> 01:05.760
Let's find out.

01:05.760 --> 01:14.760
Radio Sock was originally based in Tallah, which is in the suburbs of Dublin, back when that college was IT Tallah.

01:15.760 --> 01:25.760
They actually broadcast on FM on broadcast radio, and they won a huge amount of awards over many, many years, and then they died over COVID.

01:25.760 --> 01:28.760
And then they didn't get the radio license back, so they don't do anything anymore.

01:28.760 --> 01:39.760
Since then, a bunch of smaller colleges in Dublin merged to form TU Dublin, which is the university that I go to, and we've since reformed the radio society, now in the city center broadcasting on the internet.

01:39.760 --> 01:42.760
We are currently slightly mid.

01:43.760 --> 01:46.760
The hardware we've got is some small stuff.

01:46.760 --> 01:48.760
We have a roadcaster, which is not in this picture.

01:48.760 --> 01:51.760
It's a little mixer, and just lets us mix our audio.

01:51.760 --> 01:56.760
We have some road mics, cheap DJ decks that I got in trouble for buying, because they were too bad.

01:56.760 --> 02:00.760
The manager of our society's office is a professional DJ.

02:00.760 --> 02:02.760
And that's basically it.

02:02.760 --> 02:04.760
That's all you really need to run a radio station.

02:04.760 --> 02:10.760
You just need a mixer, which you can do in software, and a DJ deck, which you can also do in software.

02:11.760 --> 02:13.760
And we're going to look at the software.

02:13.760 --> 02:16.760
Here is our creepy tunnel where the server is.

02:16.760 --> 02:22.760
If you saw Ruan's talk earlier, where my friend was talking about the HLCS plus is run, there's a nicer picture of it.

02:22.760 --> 02:26.760
There's three bits of software we use, a Zerakast, which is the actual streaming server.

02:26.760 --> 02:33.760
Mix, which is on my laptop, which is just a virtual DJ deck, and but, which stands for broadcast using this tool.

02:33.760 --> 02:36.760
And that is just a client.

02:37.760 --> 02:39.760
Zerakast is the main star of the show.

02:39.760 --> 02:40.760
We've been trying to get this working.

02:40.760 --> 02:45.760
I'll point out, up until now, we've been using radio cult, which we've been paying for streaming.

02:45.760 --> 02:48.760
But I don't like doing that, because the cloud is someone else's computer.

02:48.760 --> 02:50.760
So we're trying to get it working here.

02:50.760 --> 02:52.760
We have had issues with it.

02:52.760 --> 02:55.760
That's not to say that the Zerakast developers are bad.

02:55.760 --> 02:58.760
More that they're not the same as me.

02:58.760 --> 03:00.760
It is slightly over-complicated.

03:00.760 --> 03:04.760
You can probably just run ice cast on its own, which is the actual streaming protocol.

03:04.760 --> 03:09.760
But Zerakast includes a system for managing lots of radio stations.

03:09.760 --> 03:12.760
By default, it can handle about 50 stations simultaneously.

03:12.760 --> 03:14.760
And it includes everything you need.

03:14.760 --> 03:19.760
Ice cast, the streaming client, and liquid soap, which is a playlist programming system.

03:19.760 --> 03:22.760
Mix is used on the laptop.

03:22.760 --> 03:26.760
The way we stream is that each DJ or each host brings in their laptop,

03:26.760 --> 03:30.760
connects it up to everything, and then connects to the server.

03:30.760 --> 03:33.760
This causes problems that I will talk about later.

03:33.760 --> 03:36.760
But mix is great just as a general recommendation.

03:36.760 --> 03:37.760
It's open source.

03:37.760 --> 03:39.760
It has virtual DJ decks and a virtual mixer.

03:39.760 --> 03:44.760
If you want to get into music, you can try out DJing with this, although it is very difficult.

03:44.760 --> 03:45.760
And it does also stream on its own.

03:45.760 --> 03:49.760
You don't actually need to use but we use but because we do.

03:49.760 --> 03:50.760
But is there.

03:50.760 --> 03:52.760
That's not to say that it's bad.

03:52.760 --> 03:54.760
It just only does one thing, and it does it well.

03:54.760 --> 03:55.760
So I can't complain.

03:55.760 --> 03:58.760
It just connects to a streaming server.

03:58.760 --> 04:02.760
Getting this working will talk about this.

04:02.760 --> 04:09.760
Installing is there a cast requires running a bash script directly onto your server,

04:09.760 --> 04:12.760
which I don't like doing, and this is that it didn't like doing.

04:12.760 --> 04:14.760
But I convinced them to do it.

04:14.760 --> 04:16.760
Whoops, I forgot about CloudFlare.

04:16.760 --> 04:20.760
You can't use CloudFlare because CloudFlare proxy will interrupt the audio stream,

04:20.760 --> 04:22.760
so we have to go around that.

04:22.760 --> 04:26.760
Then there was too many firewalls because there's the node firewall, the cluster firewall,

04:26.760 --> 04:30.760
the ubiquity firewall, and then the Docker and the VM,

04:30.760 --> 04:35.760
and then the fact that we're connected to the university's internet, which is a whole other system.

04:35.760 --> 04:37.760
Okay, I think EngineX is the problem.

04:37.760 --> 04:43.760
So I think we're just going to have to forward the port because the reverse proxy isn't working.

04:43.760 --> 04:45.760
Oh, it's working now.

04:45.760 --> 04:48.760
This slide was made before we got it working.

04:48.760 --> 04:52.760
I was up two hours last night trying to actually get it working, and it's still not working.

04:52.760 --> 05:07.760
I think our server is just really not set up the way it should be for it.

05:07.760 --> 05:13.760
But problems we have still been like streaming on radio calls using our old system.

05:13.760 --> 05:18.760
And a lot of things I've learned about actually running the station don't have dead air.

05:18.760 --> 05:22.760
This is the main thing that you will hear about running a radio station.

05:22.760 --> 05:24.760
And seriously, it's actually awful.

05:24.760 --> 05:30.760
The actual chairperson of the society who is not me doesn't see this as much of an issue as it actually is.

05:30.760 --> 05:34.760
But it's very annoying if you're trying to listen to the radio station,

05:34.760 --> 05:38.760
and you connect to it, and then you hear nothing, and you don't know if your phone is broken,

05:38.760 --> 05:41.760
or if they're just in the middle of switching laptops.

05:41.760 --> 05:42.760
Which is the problem.

05:42.760 --> 05:46.760
You have to stop the stream, unplug the laptop, someone else comes into the studio,

05:46.760 --> 05:48.760
set the laptop up, and then it won't connect for some reason.

05:48.760 --> 05:52.760
We have to keep plugging it in and out until it eventually connects, and then it does work.

05:52.760 --> 05:54.760
But that takes like 10 minutes.

05:54.760 --> 05:58.760
Sometimes the roadcaster just doesn't work, but I don't know, road or weird.

05:58.760 --> 06:00.760
You just have to keep changing ports.

06:00.760 --> 06:05.760
Please get pop filters if you're going to be doing streaming, and you have money.

06:05.760 --> 06:06.760
It's really annoying.

06:06.760 --> 06:10.760
I've did by pop filters, but they're actually the wrong shape, and they don't go on their rights properly.

06:10.760 --> 06:12.760
And seriously, don't have dead air.

06:12.760 --> 06:14.760
So fixing them.

06:14.760 --> 06:16.760
The best thing you can do about dead air.

06:16.760 --> 06:18.760
I found is dead air playlist.

06:18.760 --> 06:24.760
This is a feature in liquid soap, which manages the actual stream on the actual audio stream.

06:24.760 --> 06:28.760
You can set it up in a zerk house, so that when there is no live audio source,

06:28.760 --> 06:32.760
it just simply goes back onto a fallback playlist, and it will run through that.

06:32.760 --> 06:38.760
So that instead of just 10 minutes of silence, you get 10 minutes of some random song,

06:38.760 --> 06:40.760
which then gets interrupted by the live broadcast.

06:41.760 --> 06:44.760
Ideally, we would have a shared PC, but we can't afford them.

06:44.760 --> 06:48.760
And yeah, for the roadcaster, just changing the USB ports eventually works.

06:48.760 --> 06:50.760
And we take a pop filters, but I got the wrong ones.

06:50.760 --> 06:52.760
But it's still work, and yeah, the dead air.

06:52.760 --> 06:54.760
Don't have dead air.

06:54.760 --> 06:56.760
Where can you listen to this amazing station?

06:56.760 --> 06:58.760
You can listen to it at radio.sociities.au,

06:58.760 --> 07:02.760
slash public slash to ut radio, because I haven't set the URL up correctly.

07:02.760 --> 07:04.760
Or you can listen to it on neocities.org.

07:04.760 --> 07:07.760
This was not created by me, the people who run the society

07:07.760 --> 07:09.760
to have no computer science experience at all.

07:09.760 --> 07:13.760
We've been begging them to change it, and also you can follow us on Instagram.

07:13.760 --> 07:17.760
We do live broadcast every Thursday and Friday when it's working.

07:17.760 --> 07:21.760
And we should, we are setting up the auto DJ to play music for the rest of the week.

07:21.760 --> 07:25.760
If you have questions, I have scheduled this talk tonight to run for a flight,

07:25.760 --> 07:28.760
but I will actually be outside for a few minutes at least.

07:28.760 --> 07:32.760
And you can email my university email there.

07:32.760 --> 07:35.760
This is a great of comments.

07:35.760 --> 07:38.760
And also, thanks to Rouen and Tyler for helping me set up the server.

07:38.760 --> 07:40.760
James and Thomas were setting the society.

07:40.760 --> 07:42.760
No, the hug and my great girlfriend who was watching right now.

07:42.760 --> 07:45.760
And Katie Behan for running society's office.

07:45.760 --> 07:49.760
A four person job being done by one person because we're in middle hiring freeze.

07:49.760 --> 07:51.760
And I've duplicated the slide.

07:51.760 --> 07:52.760
And that's it.

07:52.760 --> 07:57.760
So I'm going to do a little bit of a live demo here,

07:57.760 --> 07:58.760
because it is somewhat working.

07:58.760 --> 08:01.760
And dear girl, the hyperland doesn't play nice with the projector.

08:02.760 --> 08:04.760
This is what Zercast looks like.

08:04.760 --> 08:06.760
So here we have, I can't duplicate it.

08:06.760 --> 08:09.760
Here we have our dashboard.

08:09.760 --> 08:10.760
So this is to your radio.

08:10.760 --> 08:12.760
You can see it's playing the playlist right now.

08:12.760 --> 08:13.760
But I just set up a test.

08:13.760 --> 08:15.760
You can set up streams in different quality.

08:15.760 --> 08:17.760
You can set up different pages.

08:17.760 --> 08:18.760
You can have podcasts.

08:18.760 --> 08:19.760
You can schedule.

08:19.760 --> 08:21.760
You can really do proper good stuff with this.

08:21.760 --> 08:24.760
Ice casting connective for the actual live streaming when it works.

08:24.760 --> 08:27.760
And it even supports song requests, which is kind of fun.

08:28.760 --> 08:32.760
And I believe let's see how much storage I was given on the staging server.

08:32.760 --> 08:34.760
I think we were given 100 gigabytes.

08:34.760 --> 08:36.760
No, 30.

08:36.760 --> 08:39.760
Ron's being stingy with the server today.

08:39.760 --> 08:41.760
So this is our main page here.

08:41.760 --> 08:43.760
I had to get this working last night.

08:43.760 --> 08:44.760
But it is actually playing music.

08:44.760 --> 08:49.760
So at the very least, if you do want to run a just a simple DJing station,

08:49.760 --> 08:51.760
it's actually very easy to set up.

08:51.760 --> 08:54.760
Because the incoming connection was the problem that we were having.

08:54.760 --> 09:00.760
It's the outgoing connection is actually just proxy through the HTTP and HTTPS ports.

09:00.760 --> 09:03.760
So any web browser can easily access it.

09:03.760 --> 09:06.760
I believe is going through CloudFlare and NGNX.

09:06.760 --> 09:09.760
And I guess I have time for a few questions.

09:09.760 --> 09:10.760
You.

09:10.760 --> 09:25.760
I think I was talking too fast.

09:25.760 --> 09:30.760
Hi.

09:30.760 --> 09:36.760
Question and then getting the mic mustered on.

09:36.760 --> 09:38.760
Do you integrate?

09:38.760 --> 09:44.760
Can you show up your the songs that are playing in some way?

09:44.760 --> 09:48.760
Our says feed, the but client, whatever.

09:48.760 --> 09:50.760
Not that I know of, but you probably can.

09:50.760 --> 09:53.760
I believe it does support embedding on websites.

09:53.760 --> 09:55.760
If I actually go to.

09:55.760 --> 10:01.760
That works.

10:01.760 --> 10:07.760
We do have our website here and you can integrate on websites with HTML and you can have an embedded

10:07.760 --> 10:08.760
player in there.

10:08.760 --> 10:11.760
But I don't know but I don't know but I don't use it on.

10:11.760 --> 10:14.760
I'm looking into it though.

10:14.760 --> 10:15.760
Any more questions?

10:15.760 --> 10:16.760
Yep.

10:16.760 --> 10:18.760
Question from the back here.

10:18.760 --> 10:23.760
So with all the reverse proxy stuff, how does ice cast listener count work?

10:23.760 --> 10:26.760
That's a problem I run into pretty regularly with ice cast.

10:26.760 --> 10:28.760
Because it just doesn't like proxies.

10:28.760 --> 10:29.760
Yeah, it doesn't.

10:29.760 --> 10:30.760
I have no idea.

10:30.760 --> 10:32.760
It's not working.

10:32.760 --> 10:33.760
So.

10:33.760 --> 10:36.760
Do you have more questions?

10:36.760 --> 10:37.760
Yep.

10:37.760 --> 10:39.760
I was going to.

10:39.760 --> 10:41.760
The mic is there one second.

10:41.760 --> 10:42.760
Yeah.

10:42.760 --> 10:43.760
Thank you.

10:43.760 --> 10:45.760
I was looking for the room.

10:45.760 --> 10:46.760
I'm not late.

10:46.760 --> 10:48.760
Maybe this is out of scope.

10:48.760 --> 10:49.760
Please let me know if it is.

10:49.760 --> 10:52.760
I was going to ask about the licensing and stuff about hosting.

10:52.760 --> 10:57.760
Radio online and broadcasting the songs.

10:57.760 --> 11:01.760
Because I emailed the media authority in Germany.

11:01.760 --> 11:05.760
In the state, they said for a small radio, it's not required.

11:05.760 --> 11:10.760
But I'm afraid, again, to publicly share.

11:10.760 --> 11:11.760
I don't know.

11:11.760 --> 11:15.760
I would not recommend doing anything commercial with other people's music.

11:15.760 --> 11:17.760
We're probably violating copyright.

11:17.760 --> 11:18.760
Yeah.

11:18.760 --> 11:19.760
Not commercial.

11:19.760 --> 11:20.760
Like a hobby project.

11:20.760 --> 11:21.760
No ads.

11:21.760 --> 11:22.760
No customized fits.

11:22.760 --> 11:24.760
Did you have some experience in that?

11:24.760 --> 11:25.760
I have no experience.

11:25.760 --> 11:27.760
You probably won't get in trouble.

11:27.760 --> 11:30.760
But fast them does not endorse that statement.

11:30.760 --> 11:31.760
That's so political answer.

11:31.760 --> 11:33.760
I wasn't waiting for that.

11:33.760 --> 11:34.760
Thank you.

11:34.760 --> 11:35.760
Good work.

11:35.760 --> 11:36.760
Hi.

11:36.760 --> 11:49.760
Did you happen to evaluate like Libra time or airtime as a station program in management?

11:50.760 --> 11:51.760
I actually haven't heard of it.

11:51.760 --> 11:53.760
What did you say the name was?

11:53.760 --> 11:55.760
It was airtime some time ago.

11:55.760 --> 11:58.760
But then it was forked as a Libra time.

11:58.760 --> 12:00.760
I haven't heard of it.

12:00.760 --> 12:02.760
I have been looking into other alternatives.

12:02.760 --> 12:03.760
I just haven't stumbled on it.

12:03.760 --> 12:05.760
Is there a chance to just say that?

12:05.760 --> 12:08.760
It should be where mix is, I think.

12:08.760 --> 12:09.760
Interesting.

12:09.760 --> 12:11.760
I will look into that.

12:11.760 --> 12:13.760
Thank you.

12:13.760 --> 12:14.760
One more.

12:14.760 --> 12:18.760
I'm just curious.

12:18.760 --> 12:20.760
How do you handle bandwidth?

12:20.760 --> 12:24.760
Are you using any CDN or who I best?

12:24.760 --> 12:27.760
That would be a sadman question that I don't know the answer to.

12:27.760 --> 12:28.760
I'm sorry.

12:28.760 --> 12:32.760
I can pass it to one of the systems if you like.

12:32.760 --> 12:33.760
Is it wrong there?

12:33.760 --> 12:36.760
We will one day do a bit length because a double exchange.

12:36.760 --> 12:37.760
If we just give them everything.

12:37.760 --> 12:38.760
Thank you.

12:38.760 --> 12:41.760
Please repeat the answer, maybe.

12:41.760 --> 12:47.760
We have one gigabit link through the Dublin Exchange and all of the services are just given everything.

12:47.760 --> 12:51.760
We only have about five services running on the CSS++ service.

12:51.760 --> 12:52.760
So it's not a big deal.

12:52.760 --> 12:54.760
And about four of those are websites.

12:54.760 --> 12:56.760
And one Minecraft server.

12:56.760 --> 12:59.760
I can probably do one more.

12:59.760 --> 13:04.760
Or I think it's all.

13:04.760 --> 13:06.760
Let's thank this speaker again.

13:06.760 --> 13:13.760
Thank you very much.

13:13.760 --> 13:17.760
Thank you very much.

