School radio system

openvpn javascript windows server linux

For about a week, the students from the class above have been working on the school radio system.

Apka

An app for voting on desktop and mobile.


The application was written in JavaScript using the spotify-api.js library and, as you might have guessed, it uses the Spotify API.

The site consists of two parts:
– The first part is a regular player that plays the music on a server connected to the speakers throughout the school.
– The second part is a subpage where students can vote for their favorite songs from their phones. The votes are stored in a simple MariaDB database and are split in half every day at midnight so that students constantly have to fight for the position of their songs.

Everything worked fine while they were testing the app on their home network and connecting via local IP. However, when they set up the server at school, it turned out that the entire application crashes immediately after launch…

OSE

OSE - how the road to hell is paved with good intentions.


Those who attended any IT school in Poland after 2019 could probably guess the reason for the app’s self-destruction as soon as it was connected to the school internet. The reason, as always, is the Ogólnopolska Sieć Edukacyjna (Polish National Education Network), a dedicated internet service for schools, which in theory is free, fast, and provides protection against online threats.

In practice, however, it mostly just prevents installing drivers or, as is case here, connecting to the Spotify API. =]

However, OSE is a huge topic, so we won’t dwell on it. We need to find a way around it.

VPN

It just so happened that I had an unused computer at home, and my home internet had a public IP. I set up a server on my private network using OpenVPN and forwarded all incoming and outgoing traffic to the server at school.

Mapping

Mapping on the home router.


Routing

Routing on the home server.


In this quick and dirty way, the school server now has access to the internet and can function without OSE restrictions. At least until we come up with something better.


Dziala

My home IP on the school server.


Front

Success!