2020-01-04 17:16:10 -09:00
# CloudSonic Server
2016-02-24 14:28:23 -09:00
2020-01-04 17:23:24 -09:00
[](https://github.com/cloudsonic/sonic-server/actions)
2017-04-01 05:47:14 -08:00
[](https://goreportcard.com/report/github.com/cloudsonic/sonic-server)
2016-02-26 06:56:57 -09:00
2020-01-11 18:32:32 -09:00
CloudSonic is a music collection server and streamer, allowing you to listen to your music collection from anywhere.
It relies on the huge selection of available mobile and web apps compatible with [Subsonic ](http://www.subsonic.org ),
[Airsonic ](https://airsonic.github.io/ ) and [Madsonic ](https://www.madsonic.org/ )
2016-02-25 09:51:20 -09:00
2020-01-13 13:31:12 -09:00
It is already functional (see [Installation ](#installation ) below), but still in its early stages. Currently it can only import iTunes libraries, but soon it will also be able to scan any folder with music files.
2016-02-25 21:45:04 -09:00
2020-01-11 18:32:32 -09:00
Version 1.0 main goals are:
2020-01-04 17:16:10 -09:00
- Be fully compatible with available [Subsonic clients ](http://www.subsonic.org/pages/apps.jsp )
2016-03-24 20:04:22 -08:00
(actively being tested with
2020-01-04 17:16:10 -09:00
[DSub ](http://www.subsonic.org/pages/apps.jsp#dsub ),
2020-01-09 18:50:29 -09:00
[Music Stash ](https://play.google.com/store/apps/details?id=com.ghenry22.mymusicstash ) and
[Jamstash ](http://www.subsonic.org/pages/apps.jsp#jamstash ))
2020-01-04 17:16:10 -09:00
- Import and use all metadata from iTunes, so that you can optionally keep using iTunes to manage your music
2020-01-11 18:32:32 -09:00
- Implement smart/dynamic playlists (similar to iTunes)
2020-01-13 13:31:12 -09:00
- Optimized ro run on cheap hardware (Raspberry Pi) and VPS
2016-02-24 14:28:23 -09:00
2020-01-04 17:16:10 -09:00
### Supported Subsonic API version
2016-02-29 10:16:51 -09:00
2016-03-21 13:30:58 -08:00
I'm currently trying to implement all functionality from API v1.8.0, with some exceptions.
2016-03-10 08:03:08 -09:00
2020-01-11 18:32:32 -09:00
Check the (almost) up to date [compatibility chart ](https://github.com/cloudsonic/sonic-server/wiki/Compatibility )
for what is working.
2016-02-24 14:28:23 -09:00
2016-03-31 18:28:33 -08:00
### Installation
2020-01-11 18:32:32 -09:00
As this is a work in progress, there are no installers yet. To have the server running in your computer, follow
the steps in the [Development Environment ](#development-environment ) section below, then run it with:
2020-01-04 17:16:10 -09:00
2016-03-31 18:28:33 -08:00
```
2017-04-01 05:47:14 -08:00
$ export SONIC_MUSICFOLDER="/path/to/your/iTunes Library.xml"
2020-01-04 17:16:10 -09:00
$ make run
2016-03-31 18:28:33 -08:00
```
2020-01-04 17:16:10 -09:00
2020-01-06 11:19:14 -09:00
The server should start listening for requests. The default configuration is:
- Port: `4533`
- User: `anyone`
- Password: `wordpass`
2020-01-11 18:32:32 -09:00
To override this or any other configuration, create a file named `sonic.toml` in the project folder.
For all options see the [configuration.go ](conf/configuration.go ) file
2016-03-31 18:28:33 -08:00
2016-02-26 07:39:14 -09:00
### Development Environment
2020-01-04 17:16:10 -09:00
You will need to install [Go 1.13 ](https://golang.org/dl/ )
2016-02-29 10:16:51 -09:00
2016-02-26 07:39:14 -09:00
Then install dependencies:
2020-01-04 17:16:10 -09:00
2016-02-26 07:39:14 -09:00
```
2016-10-10 16:27:09 -08:00
$ make setup
2020-01-04 17:16:10 -09:00
```
2016-02-26 07:39:14 -09:00
2016-10-10 16:27:09 -08:00
Some useful commands:
2016-02-26 07:39:14 -09:00
2016-02-26 23:35:01 -09:00
```bash
# Start local server (with hot reload)
2016-10-10 16:27:09 -08:00
$ make run
2016-02-26 23:35:01 -09:00
2016-02-29 10:16:51 -09:00
# Run all tests
2016-10-10 16:27:09 -08:00
$ make test
2016-02-26 23:35:01 -09:00
```
2016-02-26 07:39:14 -09:00
2016-03-13 08:33:40 -08:00
### Copying
2016-02-24 14:28:23 -09:00
2020-01-04 17:16:10 -09:00
CloudSonic - Copyright (C) 2017-2020 Deluan Cotts Quintao
2016-02-23 14:41:35 -09:00
2017-04-01 05:21:55 -08:00
The source code is licensed under GNU Affero GPL v3. License is available [here ](/LICENSE )