Auddly Music Server

May 30, 2022 ยท View on GitHub

Auddly Music Server

Discord

Getting Started

Auddly has built docker images. You can use docker compose to run all the required services.

Using Docker-Compose

version: "3"
services:
  app:
    container_name: auddly-server
    restart: always
    build: 
      context: https://github.com/Wellenline/auddly-server.git
    environment:
      - MONGO_URL=mongodb://auddly:SUPER_SECRET_PASSWORD@mongodb/auddly?authSource=admin
      - MUSIC_PATH=/music
      - CACHE_PATH=/cache
      - SPOTIFY_ID= # YOUR SPOTIFY ID
      - SPOTIFY_SECRET= # YOUR SPOTIFY SECRET
      - LAST_FM_API_KEY=YOUR_LAST_FM_CREDENTIALS
      - LAST_FM_API_SECRET=YOUR_LAST_FM_CREDENTIALS
      - LAST_FM_USERNAME=YOUR_LAST_FM_CREDENTIALS
      - LAST_FM_PASSWORD=YOUR_LAST_FM_CREDENTIALS
      - PORT=5000
      - HOST=http://127.0.0.1:5000
	  - ADMIN_EMAIL=YOUR_ADMIN_EMAIL
	  - ADMIN_PASSWORD=YOUR_ADMIN_PASSWORD
	  - JWT_SECRET=YOUR_JWT_SECRET
    volumes:
      - ./CHANGE_THIS_TO_YOUR_MUSIC_PATH:/music # Mount your music inside docker
      - ./cache:/cache # Cache to store album art and transcoded audio
    ports:
      - 5000:5000
    links:
      - mongodb
    depends_on:
      - mongodb
  mongodb:
    image: mongo:latest
    container_name: "auddly-mongo"
    environment:
      - MONGO_DATA_DIR=/data
      - MONGO_LOG_DIR=/dev/null
      - MONGO_INITDB_ROOT_USERNAME=auddly
      - MONGO_INITDB_ROOT_PASSWORD=SUPER_SECRET_PASSWORD # Replace this
    volumes:
      - ./data/mongo:/data
    ports:
      - 27018:27017
    command: mongod --auth --logpath=/dev/null
docker-compose up -d

Building From Source

You'll need NPM and MongoDB installed before continuing.

Clone the repo:

git clone https://github.com/wellenline/auddly-server.git
cd auddly-server

Initialize the build using NPM:

npm i
npm run build
npm start

Sample .env file:

MONGO_URL=YOUR_MONGO_DB
MUSIC_PATH=PATH_TO_YOUR_MUSIC
CACHE_PATH=./cache
SPOTIFY_ID=YOUR_SPOTIFY_ID
SPOTIFY_SECRET=YOUR_SPOTIFY_SECRET
LAST_FM_API_KEY=YOUR_LAST_FM_CREDENTIALS
LAST_FM_API_SECRET=YOUR_LAST_FM_CREDENTIALS
LAST_FM_USERNAME=YOUR_LAST_FM_CREDENTIALS
LAST_FM_PASSWORD=YOUR_LAST_FM_CREDENTIALS
ADMIN_EMAIL=YOUR_ADMIN_EMAIL
ADMIN_PASSWORD=YOUR_ADMIN_PASSWORD
JWT_SECRET=YOUR_JWT_SECRET
PORT=5000
HOST=http://127.0.0.1:5000

Artist Pictures (from Spotify)

To display artist pictures you need to sign up for Spotify Developer Account and create a new application https://developer.spotify.com/dashboard/login

Artist Bio, similar artists, tags & scrobble (from Lastfm)

To display artist bio, get similar artists, tags and scrobble your music you need to create a new Lastfm application https://www.last.fm/api/account/create

API

System

Description
GET /system/infoGet music library details

Tracks

Description
GET /tracksAll tracks (query: skip, limit, genre, popular, liked, artist, album)
GET /tracks/play/:idStream audio
GET /tracks/like/:idToggle track favourite
GET /tracks/randomGet random tracks (query: limit) new
Description
GET /searchSearch (query: q)

Albums

Description
GET /albumsGet all albums (query: skip, limit, artist)
GET /albums/:ifGet all album
GET /albums/randomGet random albums (query: limit) new
GET /albums/art/:idGet Album art

Artists

Description
GET /artistsGet all artists (query: skip, limit)
GET /artists/randomGet random artists (query: limit) new

Playlists ()

Description
GET /playlistsGet all playlists (query: skip, limit)
POST /playlistsCreate a new playlist { name: string, picture?: string }
POST /playlists/:idAdd track to playlist { track: number }
PUT /playlists/:idUpdate playlist { name: string, tracks: [] }
DELETE /playlists/:idDelete playlist
DELETE /playlists/:id/:trackDelete track from playlist

Genres

Description
GET /genresGet all genres