/QuaverV2

Primary LanguageKotlinGNU General Public License v3.0GPL-3.0

Quaver

Quaver is an open-source self-hostable music player and music library manager. It's meant to be used via the browser but exposes an API so alternative frontends like smartphone or desktop app can use it. Quaver is made to run in a docker container but can be installed bare metal. It runs with NodeJs and therefore is cross-plateform.

Features

  • Music player
  • Visualisation of your library, songs, albums, artists
  • Like/dislike songs
  • Automatic fetching of album covers

Planned Features

  • Automatic fetching of songs metadata
  • Upload from the frontend
  • Automatic update of the metadatas
  • Research songs in the frontend
  • And more...

Installation

Docker

#Start a MongoDb container
docker run -d --name DB_NAME -v DB_PATH:/data/db -e MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME -e MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD mongo

#Start Quaver
docker run -d --name quaver -p 8080:8080 -v $MUSIC_PATH:/music -v $MUSIC_IMAGES:/images -e QUAVER_DB_USER=$MONGO_USERNAME -e QUAVER_DB_PASSWORD=$MONGO_PASSWORD -e QUAVER_SESSION_SECRET=$SESSION_SECRET --link $DB_NAME:mongo dplouc/quaver

Make sure to replace those fields

  • $DB_NAME: The name of the MongoDb container
  • $DB_PATH: The path to where you want to store the database data for persistent storage
  • $MONGO_USERNAME: The username for the root user of the database
  • $MONGO_PASSWORD: The password for the root user of the database
  • $MUSIC_PATH: The path to your music library in the host
  • $MUSIC_IMAGES: The path where the album's cover will be stored
  • $SESSION_SECRET: The secret used to sign the session ID cookie

Note that "--link" is a depreciated feature of docker. You may want to use docker networking.

Docker-compose

docker-compose.yaml

version: "3.4"
services:
  quaver:
    container_name: quaver
    image: dplouc/quaver
    ports:
      - 8080:8080
    volumes:
      - $MUSIC_PATH:/music
      - $IMAGES_PATH:/data/images
    environment:
      - QUAVER_DB_USER=$MONGO_USERNAME
      - QUAVER_DB_PASSWORD=$MONGO_PASSWORD
      - QUAVER_SESSION_SECRET=$SESSION_SECRET
    depends_on:
      - mongo

  mongo:
    image: mongo
    volumes:
      - $DB_PATH:/data/db
    environment:
      - MONGO_INITDB_ROOT_USERNAME=$MONGO_USERNAME
      - MONGO_INITDB_ROOT_PASSWORD=$MONGO_PASSWORD

Make sure to replace those fields

  • $MUSIC_PATH: The path to your music library in the host
  • $MUSIC_IMAGES: The path where the album's cover will be stored
  • $MONGO_USERNAME: The username for the root user of the database
  • $MONGO_PASSWORD: The password for the root user of the database
  • $SESSION_SECRET: The secret used to sign the session ID cookie
  • $DB_PATH: The path to where you want to store the database data for persistent storage

Bare Metal

  • Install Chromaprint (For simplicity's sake you can make sure it's in your PATH, but it's optional)

  • Install NodeJs

  • Download the latest release of Quaver

  • Install MongoDB and start it

  • In dist/ run npm run start with the following environment variables

    • QUAVER_DB_IP: The ip or hostname where the Mongo instance is (Optional if Quaver and MongoDb are hosted on the same machine)
    • QUAVER_DB_PORT: The port configured to access Mongo (Optional if the default port is in use)
    • QUAVER_DB_USER: The username for the root user of the database
    • QUAVER_DB_PASSWORD: The password for the root user of the database
    • QUAVER_SESSION_SECRET: The secret used to sign the session ID cookie
    • QUAVER_PORT: The port used to access Quaver (Optional if you want to use the default port: 8080)
    • QUAVER_MUSIC_PATH: The path to your music library
    • QUAVER_IMAGES_PATH: The path where the album covers will be stored
    • QUAVER_FPCALC_PATH: The path to chromaprint (Optional if chromaprint is in your PATH)
  • Go to http://localhost:8080 (Change the address and the port according to your configuration)

For more advanced configuration refere to the wiki