mStream/README.md

148 lines
3.7 KiB
Markdown

## mStream
mStream is an music streaming server written in NodeJS. It's focus is on ease of installation and FLAC streaming. mStream will work right out of the box without any configuration.
#### Demo
Check it out: http://darncoyotes.mstream.io/
#### Main Features
* Supports FLAC streaming
* Built in DB using SQLite. No need to run a separate DB
* Works on Mac, Linux and Windows
* [Integrates easily with Beets DB](https://github.com/beetbox/beets)
* Allows multiple users
## Installation
#### Dependencies
mStream has the following dependencies:
* NodeJS and NPM
* Python 2
* GCC and G++
* node-gyp
#### Install on Ubuntu
Install NodeJS
```shell
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo-apt-get update
sudo apt-get install -y nodejs
```
Install GCC and node-gyp
```shell
sudo apt-get install -y build-essential
sudo npm install -g node-gyp
```
Install mStream
```shell
sudo npm install -g mstream
cd /path/to/your/music
mstream
```
Make sure it's working by checking out http://localhost:3000/
#### Using Docker
Download the Dockerfile, or clone the repository, then run the following
commands:
```shell
docker build -t local/mstream .
docker run --rm -v /path/to/my/music:/music local/mstream
```
The ENTRYPOINT is `mstream`, so you can use the same option as if using the
default installation.
```shell
docker run --rm -v /path/to/my/music:/music local/mstream -l -u username -x password
```
## Usage
mStream can be configured by using a JSON config file or by using flags in the command line. JSON config files are more flexible but more difficult to use.
This readme will not cover JSON config usage. See the examples folder to learn more.
#### Set Port
```shell
mstream -p 5050
```
## User System
mStream can have a single user and guest when being setup using the command line.
```shell
# Set User
mstream -u [username] -x [password]
# Set user and guest
mstream -u [username] -x [password] -G [guest name] -X [guest password]
```
Multiple users can be set using JSON config files
## Database Options
mStream uses sqlite by default. You can either use mStream's default database [or tap into BeetsDB](https://github.com/beetbox/beets)
#### Beets DB
```shell
mstream -D beets -d /path/to/beets.db
```
When using Beets, mStream is put into a read only mode. mStream will not be able to write to any tables that are managed by Beets. Playlist functionality is not affected by this since playlists are stored in a separate table.
#### Built In DB
mStream can read metadata and write it's own database. By default mstream will create a database in the folder it's launched in called 'mstreamdb.lite'. You can manually set the databse file with:
```shell
mstream -d /path/to/mstream.db
```
## Automatically setup port forwarding
mStream can try to automatically open a port to the internet. Use the '-t' command to try to setup port forwarding. Additionally you can use the '-g' command to set the gateway IP manually. If you don't include '-g', the program will use an extension to try to figure it out
```
mstream -t
OR
mstream -t -g [gatewayIP]
mstream musicDirectory/ -t -g 192.168.1.1
```
Please note that not all routers will allow this. Some routers may close this port after a period of time.
You can get around this by having mStream retry this on a regular interval
```
mstream -t -r [time in milliseconds]
mstream -t -r 10000
```
## Known Issues
- Does not work on 32bit versions of Linux. The sqlite3 library will not compile on 32bit Linux
- Only works on Node v4 or greater
## TODO
- Album Art
- Reset Password Functions
- Ability to store hashed passwords
- Scripts that help construct configs
- MySQL DB plugin
- LokiJS or PuchDB plugin
- Move to LokiJS/PouchDB as default DB
- SSL Support