CSS Python HTML JavaScript Shell PLpgSQL Other
Failed to load latest commit information.
admin Streamline init_db and init_test_db setup Feb 2, 2017
bigquery-writer Make improvements to the pagination of listens. Interim commit Sep 4, 2016
db Merge pull request #107 from paramsingh/improve-sql Feb 10, 2017
docker Oops, closed PR before final push. :( Feb 19, 2017
docs Update requirements for documentation Jul 22, 2016
influx-writer Rename INFLUX_DB to INFLUX_DB_NAME Feb 1, 2017
listenstore Move testing to a dedicated container and volume less containers. Feb 1, 2017
redis-consumer Finish debugging the new pub sub class Aug 29, 2016
tests Finish implementing the test for pubsub Sep 3, 2016
webserver Import time to fix bug in get_listens. Feb 18, 2017
.dockerignore Split up Docker Compose file into two: for development and production Jul 28, 2016
.gitignore Added a HACKING file for short cuts to common commands. Minor other f… Aug 31, 2016
.kitchen.yml make sure we install pg 9.4 correctly Sep 16, 2015
API_compatible_README.md Update description for API_compat usage + Cleanup Jul 28, 2016
HACKING.md Fix existing tests. Sep 1, 2016
LICENSE Re-adding the LICENSE and README files Sep 5, 2015
README.md Fixed a flag and removed vagrant doc section. Feb 18, 2017
config.py.sample Bring Dockerfile.test back, other minor fixes Feb 3, 2017
develop.sh Move prod files to non-prod files, since prod is not used in actual p… Feb 18, 2017
fabfile.py Add fabric Sep 6, 2015
integration-test.sh Bare bones integration setup is working and all the containers requir… Feb 8, 2017
listen.py Attempting to fix more tests and make the listenstore fully consisten… Sep 6, 2016
manage.py Convert tabs to spaces in manage.py Feb 8, 2017
pytest.ini Finish implementing the test for pubsub Sep 3, 2016
redis_pubsub.py batch size, batch timeout, whatever. added two more static page tests Sep 4, 2016
requirements.txt Hook up the webserver to the influx listenstore. Almost done, but not… Aug 31, 2016
set_rate_limits.py Fix the order of reported limits Aug 31, 2016
test.sh Modify test script to be used interactively and noninteractively Feb 7, 2017



Server for the ListenBrainz project.


These instructions are meant to get you started quickly with development process. Installation process in production environment might be different.


In order to install ListenBrainz onto your machine or a VM, you will need to install:

Configuration file

Copy the file config.py.sample to config.py:

$ cp config.py.sample config.py

Next, register for a MusicBrainz application:


During registration set the callback url to


Where is the DNS name or IP address of the machine running ListenBrainz.

Then set the MUSICBRAINZ_CLIENT_ID and MUSICBRAINZ_CLIENT_SECRET in config.py to the OAuth Client ID and OAuth Client Secret of your application.

Start the services

$ ./develop.sh

This will automatically download all the needed software and build and start the necessary containers needed to run ListenBrainz.

Database initialization

To initialize the database (create user, tables, etc.) run these commands:

$ docker exec -it listenbrainz_web_1 python manage.py init_db --create-db
$ docker exec -it listenbrainz_web_1 python manage.py init_msb_db --create-db
$ docker exec -it listenbrainz_influx_writer_1 python admin/influx/create_db.py

After that server should be ready to go. Go to http://localhost:8000 and load the ListenBrainz home page.

Running tests

In order to run the tests for ListenBrainz, simply run:

$ ./test.sh

This will build and run the containers needed to run the tests. Each of these containers will not use volumes that link to data outside of the containers and thus will not interfere with production databases.


Documentation for the ListenBrainz API is available at https://listenbrainz.readthedocs.org. You can build the documentation yourself:

$ cd ~/listenbrainz/docs
$ make clean html