-
Notifications
You must be signed in to change notification settings - Fork 16
Home
Cadence is a fully-featured REST API web radio software suite.
It ships everything needed to run a web radio station, including:
- an API server with search, request, now playing, artwork, and stream information
- an interactive browser UI
- an autopopulating music-metadata database
- custom built-in Icecast and Liquidsoap integration
These features allow your audiences to interact with your web radio much like a traditional call-in radio station. The project ships all components pre-configured to work with each each other so there is hardly any configuration to do.
To start your own instance of Cadence, set a target directory containing your music, set a few service passwords and hostnames, and you're good to go! All components have multi-architecture containers, and a Compose file will set the entire radio stack up in minutes.
See a live demo on cadenceradio.com!
Cadence Browser UI
Cadence Architecture
Warning: The way this repo currently handles configuration involves adding passwords to files which you may accidentally commit, so be careful.
- You must have Docker Compose installed.
- Edit the
cadence/config/cadence.env
file:- Set the
CSERVER_MUSIC_DIR
value to an absolute path of a directory on your local system which you want to play music. The target is not recursively searched. The default location is/music/
. - Set the
CSERVER_REQRATELIMIT
to the number of seconds you wish to timeout users after they make song requests. Setting this value to0
will disable rate limiting.
- Set the
- Configure the
cadence_icecast2/config/cadence.xml
file.- Change all instances of
hackme
to a new password. - Set the
<hostname>
value to the endpoint you expect your audience to connect to. Cadence uses this value to set the stream source in the UI. This can be a DNS name, an IP address, or leave it defaultlocalhost
to run locally.
- Change all instances of
- Configure the
cadence_liquidsoap/config/cadence.liq
file.- Change all instances of
hackme
to a new password.
- Change all instances of
-
docker compose up
.
That's all. All Cadence services will start up linked with each other.
- The UI is accessible in a browser by default at
localhost:8080
. - API server requests may sent to the
localhost:8080
path by default. See API Documentation below. - The stream endpoint is accessible at
localhost:8000/cadence1
by default.
If you are developing and need to rebuild all services exactly as you have locally:
docker compose up --build
See Cadence's GitHub Wiki for API Documentation or the API
tab on https://cadenceradio.com for complete details and request/response examples.