Skip to content

Wellenline/auddly-server

Repository files navigation

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:https://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:https://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:https://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/info Get music library details

Tracks

Description
GET /tracks All tracks (query: skip, limit, genre, popular, liked, artist, album)
GET /tracks/play/:id Stream audio
GET /tracks/like/:id Toggle track favourite
GET /tracks/random Get random tracks (query: limit) new

Search

Description
GET /search Search (query: q)

Albums

Description
GET /albums Get all albums (query: skip, limit, artist)
GET /albums/:if Get all album
GET /albums/random Get random albums (query: limit) new
GET /albums/art/:id Get Album art

Artists

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

Playlists ()

Description
GET /playlists Get all playlists (query: skip, limit)
POST /playlists Create a new playlist { name: string, picture?: string }
POST /playlists/:id Add track to playlist { track: number }
PUT /playlists/:id Update playlist { name: string, tracks: [] }
DELETE /playlists/:id Delete playlist
DELETE /playlists/:id/:track Delete track from playlist

Genres

Description
GET /genres Get all genres