Updated README. lms.conf and lms.service are not longer installed by default, user has to manually copy them in order to prevent accidental deletion when upgrading
This commit is contained in:
+4
-5
@@ -10,8 +10,10 @@ lms_cssdir=$(lms_docrootdir)/css
|
|||||||
lms_jsdir=$(lms_docrootdir)/js
|
lms_jsdir=$(lms_docrootdir)/js
|
||||||
lms_imagesdir=$(lms_approotdir)/images
|
lms_imagesdir=$(lms_approotdir)/images
|
||||||
|
|
||||||
systemdunit_DATA = \
|
dist_pkgdata_DATA = \
|
||||||
systemd/lms.service
|
systemd/default.service \
|
||||||
|
conf/default.conf
|
||||||
|
|
||||||
|
|
||||||
dist_lms_css_DATA = \
|
dist_lms_css_DATA = \
|
||||||
docroot/css/lms.css
|
docroot/css/lms.css
|
||||||
@@ -52,6 +54,3 @@ dist_lms_approot_DATA = \
|
|||||||
approot/tracks.xml \
|
approot/tracks.xml \
|
||||||
approot/tracksinfo.xml
|
approot/tracksinfo.xml
|
||||||
|
|
||||||
dist_sysconf_DATA = \
|
|
||||||
$(top_srcdir)/conf/lms.conf
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ A [demo](http://lms.demo.poupon.io) instance is available, with the following li
|
|||||||
* Persistent play queue across sessions
|
* Persistent play queue across sessions
|
||||||
* Subsonic API
|
* Subsonic API
|
||||||
* Album artist
|
* Album artist
|
||||||
* Multi-value tags (artists, genres, ...)
|
* Multi-value tags: artists, genres, ...
|
||||||
* Custom tags (ex: _mood_, _genre_, _albummood_, _albumgrouping_, ...)
|
* Custom tags (ex: _mood_, _genre_, _albummood_, _albumgrouping_, ...)
|
||||||
* MusicBrainzID support to handle duplicated artist and release names
|
* MusicBrainzID support to handle duplicated artist and release names
|
||||||
* Playlists (only using Subsonic API for now)
|
* Playlists, (only using Subsonic API for now)
|
||||||
* Starred Album/Artist/Tracks (only using Subsonic API for now)
|
* Starred Album/Artist/Tracks (only using Subsonic API for now)
|
||||||
* _Systemd_ integration
|
* _Systemd_ integration
|
||||||
|
|
||||||
@@ -44,11 +44,11 @@ Since _LMS_ uses metadata tags to organize music, a compatibility mode is used t
|
|||||||
|
|
||||||
The Subsonic API is enabled by default.
|
The Subsonic API is enabled by default.
|
||||||
|
|
||||||
|
__Note__: since _LMS_ stores hashed and salted passwords, it cannot handle the __token authentication__ method defined from 1.13.0.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
This installation process and the default values of the configuration file and the _systemd_ service file have been written for _Debian Stretch_.
|
__Note__: this installation process and the default values of the configuration file and the _systemd_ service file have been written for _Debian Stretch_. Therefore, you may have to adapt commands and/or paths in order to fit to your distribution.
|
||||||
|
|
||||||
Therefore, you may have to adapt commands and/or paths in order to fit to your distribution.
|
|
||||||
|
|
||||||
### Build dependencies
|
### Build dependencies
|
||||||
```sh
|
```sh
|
||||||
@@ -59,48 +59,51 @@ You also need _W4_, that is not packaged yet on _Debian_. See [installation inst
|
|||||||
|
|
||||||
### Build
|
### Build
|
||||||
|
|
||||||
Get the latest stable release and build it this way:
|
Get the latest stable release and build it:
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/epoupon/lms.git lms
|
git clone https://github.com/epoupon/lms.git lms
|
||||||
cd lms
|
cd lms
|
||||||
autoreconf -vfi
|
autoreconf -vfi
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
../configure --prefix=/usr --sysconfdir=/etc
|
../configure --prefix=/usr
|
||||||
```
|
```
|
||||||
configure will report any missing library.
|
configure will report any missing library.
|
||||||
|
|
||||||
|
__Note__: in order to customize the installation directories, you can use the following options of the `configure` script:
|
||||||
|
* _--prefix_ (defaults to `/usr/local`).
|
||||||
|
* _--bindir_ (defaults to `$PREFIX/bin`).
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make
|
make
|
||||||
```
|
```
|
||||||
Note: you can use `make -jN` to speed up compilation time (N is the number of compilation workers to spawn)
|
__Note__: you can use `make -jN` to speed up compilation time (N is the number of compilation workers to spawn).
|
||||||
|
|
||||||
### Raspberry 3 build notes
|
#### Raspberry 3 build notes
|
||||||
|
|
||||||
Due to memory limitations, you may need to build _Wt4_ in _Release_ mode if you want to compile it natively on a Raspberry Pi3B+.
|
Due to memory limitations, you may need to build _Wt4_ in _Release_ mode if you want to compile it natively on a Raspberry Pi3B+.
|
||||||
|
|
||||||
Note: the build process is really long (roughly 1 hour for _Wt4_ + _LMS_)
|
__Note__: the build process is really long, roughly 1 hour to build _Wt4_ + _LMS_.
|
||||||
|
|
||||||
### Deployment
|
### Deployment
|
||||||
|
|
||||||
The following commands require root privileges.
|
__Note__: the commands of this section require root privileges.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make install
|
make install
|
||||||
```
|
```
|
||||||
In order to customize the installation directories, you have to:
|
|
||||||
* use the following options of the `configure` script:
|
|
||||||
* --prefix (default to `/usr/local`)
|
|
||||||
* --sysconfigdir (/default to `/usr/local/etc`)
|
|
||||||
* --with-systemdunitdir (default to `/lib/systemd/system`)
|
|
||||||
* edit the `/etc/lms.conf` file
|
|
||||||
* edit the `/lib/systemd/system/lms.service` file
|
|
||||||
|
|
||||||
Create a dedicated system user:
|
Create a dedicated system user:
|
||||||
```sh
|
```sh
|
||||||
useradd --system lms
|
useradd --system lms
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Copy the configuration files:
|
||||||
|
```sh
|
||||||
|
cp /usr/share/lms/default.conf /etc/lms.conf
|
||||||
|
cp /usr/share/lms/default.service /lib/systemd/system/lms.service
|
||||||
|
```
|
||||||
|
|
||||||
Create working directories and give access to the _lms_ user:
|
Create working directories and give access to the _lms_ user:
|
||||||
```sh
|
```sh
|
||||||
mkdir /var/lms
|
mkdir /var/lms
|
||||||
@@ -109,12 +112,12 @@ touch /var/log/lms.access.log
|
|||||||
chown lms:lms /var/lms /var/log/lms.log /var/log/lms.access.log
|
chown lms:lms /var/lms /var/log/lms.log /var/log/lms.access.log
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: don't forget to give the _lms_ user read access to the music directory you want to scan
|
__Note__: don't forget to give the _lms_ user read access to the music directory you want to scan.
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
_LMS_ uses a configuration file, installed in '/etc/lms.conf'. It is recommended to edit this file and change relevant settings (listen address, listen port, working directory, Subsonic API activation, ...)
|
_LMS_ uses a configuration file, installed by default in `/etc/lms.conf`. It is recommended to edit this file and change relevant settings (listen address, listen port, working directory, Subsonic API activation, ...).
|
||||||
|
|
||||||
All other settings are set using the web interface (user management, scan settings, transcode settings, ...)
|
All other settings are set using the web interface (user management, scan settings, transcode settings, ...).
|
||||||
|
|
||||||
### Reverse proxy settings
|
### Reverse proxy settings
|
||||||
_LMS_ is shipped with an embedded web server, but it is recommended to deploy behind a reverse proxy. You have to set the _behind-reverse-proxy_ option to _true_ in the `lms.conf` configuration file.
|
_LMS_ is shipped with an embedded web server, but it is recommended to deploy behind a reverse proxy. You have to set the _behind-reverse-proxy_ option to _true_ in the `lms.conf` configuration file.
|
||||||
@@ -145,12 +148,12 @@ server {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running
|
## Run
|
||||||
```sh
|
```sh
|
||||||
systemctl start lms
|
systemctl start lms
|
||||||
```
|
```
|
||||||
Two log files are used:
|
Two log files are used:
|
||||||
* `/var/log/lms.log`: logs of the daemon
|
* `/var/log/lms.log`: logs of the `lms` daemon
|
||||||
* `/var/log/lms.access.log`: access logs of the embedded web server
|
* `/var/log/lms.access.log`: access logs of the embedded web server
|
||||||
|
|
||||||
To connect to _LMS_, just open your favorite browser and go to http://localhost:5082
|
To connect to _LMS_, just open your favorite browser and go to http://localhost:5082
|
||||||
@@ -160,6 +163,25 @@ To make _LMS_ run automatically during startup:
|
|||||||
systemctl enable lms
|
systemctl enable lms
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Upgrade
|
||||||
|
|
||||||
|
To upgrade `LMS`, you need to update the master branch and rebuild/install it:
|
||||||
|
```sh
|
||||||
|
cd build
|
||||||
|
git pull
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
Then using root privileges:
|
||||||
|
```sh
|
||||||
|
make install
|
||||||
|
systemctl lms restart
|
||||||
|
```
|
||||||
|
|
||||||
|
Read the [release notes](https://github.com/epoupon/lms/releases) to check if any relevant setting has been added into the configuration file.
|
||||||
|
|
||||||
|
Any change in the database schema is made automatically by the application during startup.
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
* Wt (http://www.webtoolkit.eu/)
|
* Wt (http://www.webtoolkit.eu/)
|
||||||
* bootstrap3 (http://getbootstrap.com/)
|
* bootstrap3 (http://getbootstrap.com/)
|
||||||
|
|||||||
@@ -16,13 +16,6 @@ fi
|
|||||||
AC_SUBST(MAGICKXX_CFLAGS)
|
AC_SUBST(MAGICKXX_CFLAGS)
|
||||||
AC_SUBST(MAGICKXX_LIBS)
|
AC_SUBST(MAGICKXX_LIBS)
|
||||||
|
|
||||||
AC_ARG_WITH(systemdunitdir,
|
|
||||||
AC_HELP_STRING([--with-systemdunitdir=DIR],
|
|
||||||
[install systemd unit files in dir [[/lib/systemd/system]]]),
|
|
||||||
systemdunitdir=$withval,systemdunitdir=/lib/systemd/system)
|
|
||||||
|
|
||||||
AC_SUBST(systemdunitdir)
|
|
||||||
|
|
||||||
AC_CHECK_HEADERS([Wt/WApplication.h pstreams/pstream.h],
|
AC_CHECK_HEADERS([Wt/WApplication.h pstreams/pstream.h],
|
||||||
[],
|
[],
|
||||||
[AC_MSG_ERROR([Header not found or unusable !])])
|
[AC_MSG_ERROR([Header not found or unusable !])])
|
||||||
|
|||||||
+11
-4
@@ -43,8 +43,8 @@ std::vector<std::string> generateWtConfig(std::string execPath)
|
|||||||
std::vector<std::string> args;
|
std::vector<std::string> args;
|
||||||
|
|
||||||
const boost::filesystem::path wtConfigPath {getService<Config>()->getPath("working-dir") / "wt_config.xml"};
|
const boost::filesystem::path wtConfigPath {getService<Config>()->getPath("working-dir") / "wt_config.xml"};
|
||||||
const boost::filesystem::path wtLogFilePath {getService<Config>()->getPath("log-file")};
|
const boost::filesystem::path wtLogFilePath {getService<Config>()->getPath("log-file", "/var/log/lms.log")};
|
||||||
const boost::filesystem::path wtAccessLogFilePath {getService<Config>()->getPath("access-log-file")};
|
const boost::filesystem::path wtAccessLogFilePath {getService<Config>()->getPath("access-log-file", "/var/log/lms.access.log")};
|
||||||
|
|
||||||
args.push_back(execPath);
|
args.push_back(execPath);
|
||||||
args.push_back("--config=" + wtConfigPath.string());
|
args.push_back("--config=" + wtConfigPath.string());
|
||||||
@@ -86,14 +86,21 @@ std::vector<std::string> generateWtConfig(std::string execPath)
|
|||||||
|
|
||||||
int main(int argc, char* argv[])
|
int main(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
boost::filesystem::path configFilePath = "/etc/lms.conf";
|
boost::filesystem::path configFilePath {"/etc/lms.conf"};
|
||||||
int res = EXIT_FAILURE;
|
int res = EXIT_FAILURE;
|
||||||
|
|
||||||
assert(argc > 0);
|
assert(argc > 0);
|
||||||
assert(argv[0] != NULL);
|
assert(argv[0] != NULL);
|
||||||
|
|
||||||
if (argc >= 2)
|
if (argc == 2)
|
||||||
configFilePath = std::string(argv[1], 0, 256);
|
configFilePath = std::string(argv[1], 0, 256);
|
||||||
|
else if (argc > 2)
|
||||||
|
{
|
||||||
|
std::cerr << "Usage:\t" << argv[0] << "\t[conf_file]\n\n"
|
||||||
|
<< "Options:\n"
|
||||||
|
<< "\tconf_file:\t path to the LMS configuration file (defaults to " << configFilePath << ")\n\n";
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user