Need help with waveline-server?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Wellenline
260 Stars 11 Forks MIT License 179 Commits 12 Opened issues

Description

Simple self-hosted music streaming server

Services available

!
?

Need anything else?

Contributors list

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:[email protected]/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
      - API_KEY=12345 # Replace this
      - PORT=5000
      - HOST=http://127.0.0.1:5000
    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:

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

Initialize the build using NPM:

sh
npm i
npm run build
npm start

Sample .env file:

env
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
API_KEY=xxxxxxxxxxxx # replace it with something more secure
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/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 |

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.