mirror of
https://github.com/IrosTheBeggar/mStream.git
synced 2025-10-27 07:31:02 +00:00
- remove --wizard cli parameter - add password salt in user example - add note about generating users via admin ui
266 lines
6.1 KiB
Markdown
266 lines
6.1 KiB
Markdown
# JSON config
|
|
|
|
Using a JSON config with mStream allows for more advanced configurations. This example contains all configurable params for reference purposes.
|
|
|
|
```json
|
|
{
|
|
"port": 3030,
|
|
"webAppDirectory": "public",
|
|
"secret": "b6j7j5e6u5g36ubn536uyn536unm5m67u5365vby435y54ymn",
|
|
"writeLogs": true,
|
|
"noUpload": false,
|
|
"scanOptions": {
|
|
"skipImg": true,
|
|
"scanInterval": 1.5,
|
|
"pause": 50,
|
|
"saveInterval": 500,
|
|
"bootScanDelay": 15
|
|
},
|
|
"storage": {
|
|
"albumArtDirectory": "/media/album-art",
|
|
"dbDirectory": "/media/db",
|
|
"logsDirectory": "/media/logs"
|
|
},
|
|
"folders": {
|
|
"rock": { "root": "/media/music/rock"},
|
|
"blues": { "root": "/media/music/blues"}
|
|
},
|
|
"users": {
|
|
"paul": {
|
|
"password": "bKD6We4x40qcA2sDqVV0EHz1yiu5XDhnFlL6+JRrvMw=",
|
|
"salt": "PMsisJwG3F3m7atHtny40Q==",
|
|
"vpaths": ["blues", "rock"]
|
|
},
|
|
"james": {
|
|
"password": "qBg8vlOcqrhFpgVDd/2jVHgHamvb6xspjhxrpl5m3Is=",
|
|
"salt": "6cm1jPJ1Xl/ocLbaNijpJg==",
|
|
"vpaths": "rock",
|
|
"lastfm-user": "username",
|
|
"lastfm-password": "password"
|
|
}
|
|
},
|
|
"transcode": {
|
|
"enabled": true,
|
|
"ffmpegDirectory": "/path/to/ffmpeg-dir",
|
|
"defaultCodec": "opus",
|
|
"defaultBitrate": "128k"
|
|
},
|
|
"ssl": {
|
|
"key": "/path/to/key.pem",
|
|
"cert": "/path/to/cert.pem"
|
|
}
|
|
}
|
|
```
|
|
|
|
All these params have default values. Technically, an empty objects would be valid. It's the same as running `mstream` without any config options
|
|
|
|
```
|
|
# This is valid
|
|
{ }
|
|
```
|
|
|
|
## Port
|
|
|
|
Defaults to 3000 if not set
|
|
|
|
## Folders
|
|
|
|
Folders are set by key value pairs. The key is used later to give access to folders on a per user basis. (more info in the users section)
|
|
|
|
```json
|
|
"folders": {
|
|
"blues": { "root": "/media/music/blues" },
|
|
"rock": { "root": "/media/music/rock"}
|
|
}
|
|
```
|
|
|
|
If this is not set, the cwd will be used
|
|
|
|
## Users
|
|
|
|
If there is no users object, the login system will not be enabled and anyone will be abe to access the server. All folders will be accessible
|
|
|
|
A basic user example.
|
|
|
|
Note that the hashed password and salt can be generated automatically by creating a new user via the admin ui.
|
|
|
|
```json
|
|
{
|
|
"folders": {
|
|
"media": {"root":"/media/music"}
|
|
},
|
|
"users": {
|
|
"paul": {
|
|
"password": "bKD6We4x40qcA2sDqVV0EHz1yiu5XDhnFlL6+JRrvMw=",
|
|
"salt": "PMsisJwG3F3m7atHtny40Q==",
|
|
"vpaths": "media"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
A user with multiple folders
|
|
|
|
```json
|
|
{
|
|
"folders": {
|
|
"music": { "root":"/media/music" },
|
|
"audiobooks": { "root":"/media/books/audio" }
|
|
},
|
|
"users": {
|
|
"paul": {
|
|
"password":"p@ssword",
|
|
"vpaths": ["music", "audiobooks"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Multiple users with multiple directories
|
|
|
|
```json
|
|
{
|
|
"folders": {
|
|
"jake-music": {"root":"/media/jake/music"},
|
|
"finn-music": {"root":"/media/finn/music"},
|
|
"audiobooks": {"root":"/media/books/audio"}
|
|
},
|
|
"users": {
|
|
"jake": {
|
|
"password":"p@ssword",
|
|
"vpaths": ["jake-music", "audiobooks"]
|
|
},
|
|
"finn": {
|
|
"password":"p@ssword",
|
|
"vpaths": ["finn-music", "audiobooks"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Transcoding
|
|
|
|
Transcoding is enabled and configured with the following
|
|
|
|
```json
|
|
"transcode": {
|
|
"enabled": true,
|
|
"ffmpegDirectory": "/path/to/ffmpeg-dir",
|
|
"defaultCodec": "opus",
|
|
"defaultBitrate": "128k"
|
|
},
|
|
```
|
|
|
|
The `defaultCodec` accepts the values `aac`, `mp3`, `opus`.
|
|
|
|
The `defaultBitrate` accepts the values, `192k` `128k`, `96k`, `64k`
|
|
|
|
## Secret
|
|
|
|
Sets the secret key used for the login system. If this is not set, mStream will generate a different secret key on each boot and all previous login sessions will be voided
|
|
|
|
## Scan Options
|
|
|
|
* `skipImg`: (boolean) whether to skip scanning for album art. Speeds up the scan time and saves disk space
|
|
* `bootScanDelay`: delay between server boot and first file scan (in seconds)
|
|
* `scanInterval`: The interval which controls how often file system will be scanned for changes (in hours). Set to 0 if you want to disable scanning
|
|
* `saveInterval`: interval which to refresh the DB on scan. Defaults to 250. Can be set to a higher number for large collections to avoid hogging the CPU thread
|
|
* `pause` (in milliseconds): During the scan, there is an optional pause that is aded between file parsing. This can prevent mStream from hogging system resources during the initial scan
|
|
|
|
```json
|
|
{
|
|
"scanOptions":{
|
|
"skipImg": true,
|
|
"scanInterval": 1.5,
|
|
"pause": 50,
|
|
"saveInterval": 500,
|
|
"bootScanDelay": 15
|
|
}
|
|
}
|
|
```
|
|
|
|
## SSL
|
|
|
|
mStream comes with SSL support built in. Just add your key and cert and the server will take care of the rest
|
|
|
|
```json
|
|
"ssl": {
|
|
"key": "/path/to/key.pem",
|
|
"cert": "/path/to/cert.pem"
|
|
}
|
|
```
|
|
|
|
## Disable Uploading
|
|
|
|
```
|
|
"noUpload": true
|
|
```
|
|
|
|
## LastFM Scrobbling
|
|
|
|
Each user can have their own lastFM credentials
|
|
|
|
```json
|
|
{
|
|
"folders": {
|
|
"jake-music": "/media/jake/music",
|
|
"finn-music": "/media/finn/music",
|
|
"audiobooks": "/media/books/audio"
|
|
},
|
|
"users": {
|
|
"jake": {
|
|
"password":"p@ssword",
|
|
"vpaths": ["jake-music", "audiobooks"],
|
|
"lastfm-user": "username",
|
|
"lastfm-password": "password"
|
|
},
|
|
"finn": {
|
|
"password":"p@ssword",
|
|
"vpaths": ["finn-music", "audiobooks"],
|
|
"lastfm-user": "username2",
|
|
"lastfm-password": "password2"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
If you want to use LastFM scrobbling without a user system, you can do the following
|
|
|
|
```json
|
|
{
|
|
"folders": {
|
|
"music": "/media/music",
|
|
"audiobooks": "/media/books/audio"
|
|
},
|
|
"lastfm-user": "username",
|
|
"lastfm-password": "password"
|
|
}
|
|
```
|
|
|
|
## Storage
|
|
|
|
mStream will write, logs, DB files, and album art to the filesystem. By default these will be written in the mStream project folder tothe `save` and `image-cache` folders. Use the `storage` object to choose where to save these files
|
|
|
|
The `albumArtDirectory` will be publicly available
|
|
|
|
```json
|
|
{
|
|
"storage": {
|
|
"albumArtDirectory": "/media/album-art",
|
|
"dbDirectory": "/media/db",
|
|
"logsDirectory": "/media/logs"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Logs
|
|
|
|
set `writeLogs` to `true` to enable writing logs to the filesystem
|
|
|
|
```
|
|
"writeLogs": true,
|
|
```
|
|
|
|
## UI
|
|
|
|
Folder that contains the frontend for mStream. Defaults to `public` if not set |