diff --git a/INSTALL.md b/INSTALL.md index 19bbd849..19d5e976 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -12,33 +12,25 @@ * [Deploy on non root path](#deploy-on-non-root-path) * [Reverse proxy settings](#reverse-proxy-settings) - [Run](#run) - # Installation - ## Docker _Docker_ images are available, please see detailed instructions on https://hub.docker.com/r/epoupon/lms. - ## Debian Buster packages _Buster_ packages are provided for _amd64_ and _armhf_ architectures. - As root, trust the following debian package provider and add it in your list of repositories: ```sh wget -O - https://debian.poupon.dev/apt/debian/epoupon.gpg.key | apt-key add - echo "deb https://debian.poupon.dev/apt/debian buster main" > /etc/apt/sources.list.d/epoupon.list ``` - To install or upgrade _LMS_: ```sh apt update apt install lms ``` - The _lms_ service is started just after the package installation, run by a dedicated _lms_ system user.
Please refer to [Deployment](#deployment) for further configuration options. - ## From source __Note__: this installation process and the default values of the configuration files have been written for _Debian Buster_. Therefore, you may have to adapt commands and/or paths in order to fit to your distribution. - ### Build dependencies __Notes__: * a C++17 compiler is needed @@ -49,12 +41,9 @@ apt-get install g++ cmake libboost-program-options-dev libboost-system-dev libav __Notes__: * libpam0g-dev is optional (only for using PAM authentication) * libstb-dev can be replaced by libgraphicsmagick++1-dev (the latter will likely use more RAM) - You also need _Wt4_, which is not packaged yet on _Debian_. See [installation instructions](https://www.webtoolkit.eu/wt/doc/reference/html/InstallationUnix.html).
No optional requirement is needed, except openSSL if you plan not to deploy behind a reverse proxy (which is not recommended). - ### Build - Get the latest stable release and build it: ```sh git clone https://github.com/epoupon/lms.git lms @@ -66,80 +55,69 @@ cmake .. -DCMAKE_BUILD_TYPE=Release __Notes__: * you can customize the installation directory using `-DCMAKE_INSTALL_PREFIX=path` (defaults to `/usr/local`). * you can customize the image library using `-DIMAGE_LIBRARY=` - ```sh make ``` __Note__: you can use `make -jN` to speed up compilation time (N is the number of compilation workers to spawn). - ### Installation - __Note__: the commands of this section require root privileges. - ```sh make install ``` - Create a dedicated system user: ```sh useradd --system --group lms ``` - Copy the configuration files: ```sh cp /usr/share/lms/lms.conf /etc/lms.conf cp /usr/share/lms/lms.service /lib/systemd/system/lms.service ``` - Create the working directory and give it access to the _lms_ user: ```sh mkdir /var/lms chown lms:lms /var/lms ``` - To make _LMS_ run automatically during startup: ```sh systemctl enable lms ``` - ### Upgrade - To upgrade _LMS_ from sources, 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 restart lms ``` - # Deployment - __Note__: don't forget to give the _lms_ user read access to the music directory you want to scan. - ## Configuration _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, deployment path, ...). - All other settings are set using the web interface (user management, scan settings, transcode settings, ...). - If a setting is not present in the configuration file, a hardcoded default value is used (the same as in the [default configuration file](conf/lms.conf)) - ## Authentication backend - You can define which authentication backend to be used thanks to the `authentication-backend` option: * `internal` (default): _LMS_ uses an internal database to store users and their associated passwords (salted and hashed using [Bcrypt](https://en.wikipedia.org/wiki/Bcrypt)). Only the admin user can create, edit or remove other users. * `PAM`: the user/password authentication request is forwarded to PAM (see the default [PAM configuration file](conf/pam/lms) provided). * `http-headers`: _LMS_ uses a configurable HTTP header field, typically set by a reverse proxy to handle [SSO](https://en.wikipedia.org/wiki/Single_sign-on), to extract the login name. You can customize the field to be used using the `http-headers-login-field` option. - __Note__: the first created user is the admin user - +### `internal` backend: reset admin password +Open the the database file located in `/var/lms/lms.db` using `sqlite3`: +```sh +sqlite3 /var/lms/lms.db +``` +Now force reset the password of the admin user to `adminadmin`: +```sqlite3 +UPDATE user SET password_salt="sliIgHUpEoAlBMquivH4VzKXbSzexlvS", password_hash="$2y$07$a0vnQUbGTV/DZyDqOizvbOdCaytNjDhkOPcGoBZup4V0MRKDzOpEG" WHERE id=1; +.quit +``` ## Deploy on non root path If you want to deploy on non root path (e.g. https://mydomain.com/newroot/), you have to set the `deploy-path` option accordingly in `lms.conf`. - As static resources are __not__ related to the `deploy-path` option, you have to perform the following steps if you want them to be on a non root path too: * Create a new intermediary `newroot` directory in `/usr/share/lms/docroot` and move everything in it. * Symlink `/usr/share/lms/docroot/newroot/resources` to `/usr/share/Wt/resources`. @@ -149,12 +127,9 @@ wt-resources = "" # do not comment the whole line docroot = "/usr/share/lms/docroot/;/newroot/resources,/newroot/css,/newroot/images,/newroot/js,/newroot/favicon.ico";` deploy-path = "/newroot/"; # ending slash is important ``` - If you use nginx as a reverse proxy, you can simply replace `location /` with `location /newroot/` to achieve the same result. - ## 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. - Here is an example to make _LMS_ properly work on _myserver.org_ using _nginx_: ``` server { @@ -183,16 +158,12 @@ server { } } ``` - # Run ```sh systemctl start lms ``` - Log traces can be accessed using journactl: ```sh journalctl -u lms.service ``` - -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` diff --git a/cmake/modules/FindSTB.cmake b/cmake/modules/FindSTB.cmake index 209bfdb2..10e8afdc 100644 --- a/cmake/modules/FindSTB.cmake +++ b/cmake/modules/FindSTB.cmake @@ -1,4 +1,4 @@ -find_path(STB_INCLUDE_DIR stb/stb.h) +find_path(STB_INCLUDE_DIR stb/stb_image.h) include(FindPackageHandleStandardArgs) diff --git a/src/libs/av/impl/AudioFile.cpp b/src/libs/av/impl/AudioFile.cpp index 7002ab2d..7aead667 100644 --- a/src/libs/av/impl/AudioFile.cpp +++ b/src/libs/av/impl/AudioFile.cpp @@ -241,7 +241,7 @@ AudioFile::visitAttachedPictures(std::function func) const std::optional guessMediaFileFormat(const std::filesystem::path& file) { - AVOutputFormat* format {av_guess_format(NULL,file.string().c_str(),NULL)}; + const AVOutputFormat* format {av_guess_format(NULL,file.string().c_str(),NULL)}; if (!format || !format->name) return {}; diff --git a/src/libs/services/auth/include/services/auth/IPasswordService.hpp b/src/libs/services/auth/include/services/auth/IPasswordService.hpp index 18319106..f2449420 100644 --- a/src/libs/services/auth/include/services/auth/IPasswordService.hpp +++ b/src/libs/services/auth/include/services/auth/IPasswordService.hpp @@ -20,6 +20,7 @@ #pragma once #include +#include #include #include