All Projects → Wellenline → Waveline Server

Wellenline / Waveline Server

Licence: mit
Simple self-hosted music streaming server

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Waveline Server

Supysonic
Supysonic is a Python implementation of the Subsonic server API.
Stars: ✭ 187 (-24.6%)
Mutual labels:  self-hosted, music, server, streaming
Homehost
self-hosted, Netflix-like app made for streaming
Stars: ✭ 564 (+127.42%)
Mutual labels:  self-hosted, music, streaming
Httpms
Media server with RESTful API and Web interface. Think of it as your very own Spotify!
Stars: ✭ 18 (-92.74%)
Mutual labels:  self-hosted, music, streaming
Airsonic
📡 ☁️ 🎶Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Stars: ✭ 1,876 (+656.45%)
Mutual labels:  self-hosted, music, streaming
Passwordcockpit
Passwordcockpit is a simple, free, open source, self hosted, web based password manager for teams. It is made in PHP, Javascript, MySQL and it run on a docker service. It allows users with any kind of device to safely store, share and retrieve passwords, certificates, files and much more.
Stars: ✭ 34 (-86.29%)
Mutual labels:  self-hosted, free, opensource
Compactd
Remote music player that supports adding more content
Stars: ✭ 75 (-69.76%)
Mutual labels:  self-hosted, music, streaming
Tree Gateway
This is a full featured and free API Gateway
Stars: ✭ 160 (-35.48%)
Mutual labels:  api, free, opensource
Openrouteservice App
🚙 The open source route planner app with plenty of features.
Stars: ✭ 187 (-24.6%)
Mutual labels:  api, opensource
Flaresolverr
Proxy server to bypass Cloudflare protection
Stars: ✭ 241 (-2.82%)
Mutual labels:  api, server
Autoserver
Create a full-featured REST/GraphQL API from a configuration file
Stars: ✭ 188 (-24.19%)
Mutual labels:  api, server
Mellow
Mellow can communicate with several APIs like Ombi, Sonarr, Radarr and Tautulli which are related to home streaming to use those services directly in your Discord client.
Stars: ✭ 193 (-22.18%)
Mutual labels:  api, streaming
Ultratabsaver
The open source Tab Manager Extension for Safari.
Stars: ✭ 178 (-28.23%)
Mutual labels:  free, opensource
Shiny geoip
IP to location API service
Stars: ✭ 172 (-30.65%)
Mutual labels:  api, free
Muzonchik
iOS Music App that let you search, download and play music
Stars: ✭ 170 (-31.45%)
Mutual labels:  free, music
Thehive
TheHive: a Scalable, Open Source and Free Security Incident Response Platform
Stars: ✭ 2,300 (+827.42%)
Mutual labels:  api, free
Pronote Api
(Tout langage) API compatible Pronote 2020/2021
Stars: ✭ 186 (-25%)
Mutual labels:  api, server
Intermine
A powerful open source data warehouse system
Stars: ✭ 195 (-21.37%)
Mutual labels:  api, opensource
Actionhero
Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks
Stars: ✭ 2,280 (+819.35%)
Mutual labels:  api, server
Watsontcp
WatsonTcp is the easiest way to build TCP-based clients and servers in C#.
Stars: ✭ 209 (-15.73%)
Mutual labels:  api, server
Gnome Shell Extension Cast To Tv
Cast files to Chromecast, web browser or media player app over local network.
Stars: ✭ 200 (-19.35%)
Mutual labels:  music, streaming

Waveline Music Server

Discord

Use the 3.1.0 version if you wish to keep using the mongodb version

Getting Started

Waveline works with following databases: postgres, mysql, cockroachdb, mariadb, sqlite, mssql

You can pull the latest Waveline image from Docker Hub and run it by using the following command:

docker run -d --name="Waveline-Server" \
  -e DB_DRIVER=sqlite \
  -e MUSIC_PATH=/music \
  -e TRANSCODE_PATH=/transcoded-audio \
  -e ART_PATH=/album-art \
  -e SPOTIFY_ID=YOUR_SPOTIFY_ID \
  -e SPOTIFY_SECRET=YOUR_SPOTIFY_SECRET \
  -e LAST_FM_KEY=YOUR_LAST_FM_KEY \
  -e AUTH_ENABLED=true \
  -e API_KEY=12345 \
  -e PORT=5000 \
  -e HOST=http://127.0.0.1:5000 \
  -p 5000:5000 \
  -v YOUR_MUSIC_PATH:/music \
  -v ./album-art:/album-art \
  -v ./transcoded-audio:/transcoded-audio \
  --restart unless-stopped \
  wellenline/waveline-server:latest

Using Docker-Compose

version: '3'
services:
  app:
    container_name: waveline-api
    restart: always
    build:
      context: https://github.com/Wellenline/waveline-server.git
    environment:
      - DB_DRIVER=sqlite # postgres,  mysql, cockroachdb, mariadb, sqlite, mssql,
      - DB_HOST=DATABASE_HOST
      - DB_PORT=DATABASE_PORT
      - DB_USERNAME=DATABASE_USERNAME
      - DB_PASSWORD=DATABASE_PASSWORD
      - DB_NAME=DATABASE_NAME
      - MUSIC_PATH=/music
      - TRANSCODE_PATH=/transcoded-audio
      - ART_PATH=/album-art
      - SPOTIFY_ID=YOUR_SPOTIFY_ID
      - SPOTIFY_SECRET=YOUR_SPOTIFY_SECRET
      - LAST_FM_KEY=YOUR_LAST_FM_API_KEY
      - API_KEY=12345 # remove if you wish to disable auth
      - PORT=5000
      - HOST=http://127.0.0.1:5000
    volumes:
      - YOUR_MUSIC_PATH:/music # Mount your music inside docker
      - ./album-art:/album-art # Mount album art cache inside docker
      - ./transcoded-audio:/transcoded-audio # Mount transcoded audio cache inside docker
    ports:
      - 5000:5000
docker-compose up -d

Building From Source

You'll need NPM installed before continuing.

Clone the repo:

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

Initialize the build using NPM:

npm i
npm run build
npm start

Sample .env file:

DB_DRIVER=sqlite # postgres,  mysql, cockroachdb, mariadb, sqlite, mssql,
DB_HOST=DATABASE_HOST
DB_PORT=DATABASE_PORT
DB_USERNAME=DATABASE_USERNAME
DB_PASSWORD=DATABASE_PASSWORD
DB_NAME=DATABASE_NAME
MUSIC_PATH=PATH_TO_YOUR_MUSIC
TRANSCODE_PATH=./transcoded-audio
ART_PATH=./album-art
SPOTIFY_ID=YOUR_SPOTIFY_ID
SPOTIFY_SECRET=YOUR_SPOTIFY_SECRET
LAST_FM_KEY=YOUR_LAST_FM_API_KEY
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 and tags (from Lastfm)

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

Roadmap

Waveline is a personal project and my current goals are

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].