AcoustID Server


On Ubuntu you can install all dependencies using the following commands (as root):

sudo apt-get install postgresql postgresql-contrib
sudo apt-get install redis-server
sudo apt-get install python python-dev python-virtualenv

You will also need one custom PostgreSQL extension:

echo "deb `lsb_release -c -s` main" | sudo tee /etc/apt/sources.list.d/oxygene.list
sudo apt-get update
sudo apt-get install postgresql-9.X-acoustid

(You can also compile it yourself from sources.)

Setup Python virtual environment:

virtualenv e
source e/bin/activate
pip install -r requirements.txt

Prepare the configuration file:

cp acoustid.conf.dist acoustid.conf
vim acoustid.conf

Create the PostgreSQL database:

sudo -u postgres createuser acoustid
sudo -u postgres createdb -O acoustid acoustid

Install extensions into the newly created database:

sudo -u postgres psql acoustid -c 'CREATE EXTENSION intarray;'
sudo -u postgres psql acoustid -c 'CREATE EXTENSION pgcrypto;'
sudo -u postgres psql acoustid -c 'CREATE EXTENSION acoustid;'

Create the database structure:

./ <sql/CreateTables.sql
./ <sql/CreatePrimaryKeys.sql
./ <sql/CreateFKConstraints.sql
./ <sql/CreateIndexes.sql

Setup a MusicBrainz slave database (without custom extensions):

cd /path/to/mbslave
cp mbslave.conf.default mbslave.conf
vim mbslave.conf
echo 'CREATE SCHEMA musicbrainz;' | ./
sed 's/cube/text/i' sql/CreateTables.sql | ./
./ mbdump.tar.bz2 mbdump-derived.tar.bz2
./ <sql/CreatePrimaryKeys.sql
vim sql/CreateFunctions.sql # remove functions that mention "cube"
./ <sql/CreateFunctions.sql
grep -vE '(collate|page_index|gist)' sql/CreateIndexes.sql | ./
./ <sql/CreateViews.sql
./ <sql/CreateSimpleViews.sql



You can use the provided Vagrantfile to quickly set up a development instance:

vagrant up
vagrant ssh

Create an empty database:

./admin/dev/ -c acoustid.conf --drop --create

You can start the web application like this:

./ --host=

If you want to test it with HTTP enabled, use this:

./ --ssl

Then setup forwarding from the standard HTTPS port 443 to the application port:

sudo redir --lport=443 --cport=5000

Add to your /etc/hosts file and then you can see the development version of the application at

Database migrations

Upgrading the database schema online:

alembic upgrade head

Upgrading the database schema offline:

alembic upgrade <previous-rev>:head --sql

Generating a new database schema change:

alembic revision --autogenerate -m "my message"

Unit tests

Before you can run the test suite, you need to create a configuration file called acoustid-test.conf. This should use a separate database from the one you use for development, but it should have the same structure. The simplest way to create it is to copy your development database.

You can then run the test suite like this:

nosetests -v

The first thing it does is setting up the database. Normally you shouldn't need to do this more than once, so the next time you can run the test suite without the database setup code:

SKIP_DB_SETUP=1 nosetests -v