diff --git a/README.md b/README.md index 8a1032b..1281624 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,19 @@ Scrutiny is a simple but focused application, with a couple of core features: # Getting Started +## RAID/Virtual Drives + +Scrutiny uses `smartctl --scan` to detect devices/drives. + +- All RAID controllers supported by `smartctl` are automatically supported by Scrutiny. + - While some RAID controllers support passing through the underlying SMART data to `smartctl` others do not. + - In some cases `--scan` does not correctly detect the device type, returning [incomplete SMART data](https://github.com/AnalogJ/scrutiny/issues/45). + Scrutiny will eventually support overriding detected device type via the config file. +- If you use docker, you **must** pass though the RAID virtual disk to the container using `--device` (see below) + - This device may be in `/dev/*` or `/dev/bus/*`. + - If you're unsure, run `smartctl --scan` on your host, and pass all listed devices to the container. + + ## Docker If you're using Docker, getting started is as simple as running the following command: @@ -68,8 +81,8 @@ analogj/scrutiny - `/run/udev` is necessary to provide the Scrutiny collector with access to your device metadata - `--cap-add SYS_RAWIO` is necessary to allow `smartctl` permission to query your device SMART data - - NOTE: If you have NVMe drives, you must use `--cap-add SYS_ADMIN` instead. See issue [#26](https://github.com/AnalogJ/scrutiny/issues/26#issuecomment-696817130) -- `--device` entries are required to ensure that your hard disk devices are accessible within the container + - NOTE: If you have NVMe drives, you must use `--cap-add SYS_ADMIN`. See issue [#26](https://github.com/AnalogJ/scrutiny/issues/26#issuecomment-696817130) +- `--device` entries are required to ensure that your hard disk devices are accessible within the container. - `analogj/scrutiny` is a omnibus image, containing both the webapp server (frontend & api) as well as the S.M.A.R.T metric collector. (see below) ### Hub/Spoke Deployment @@ -94,6 +107,13 @@ docker run -it --rm \ analogj/scrutiny:collector ``` +## Manual Installation (without-Docker) + +While the easiest way to get started with [Scrutiny is using Docker](https://github.com/AnalogJ/scrutiny#docker), +it is possible to run it manually without much work. You can even mix and match, using Docker for one component and +a manual installation for the other. + +See [docs/INSTALL_MANUAL.md](docs/INSTALL_MANUAL.md) for instructions. ## Usage diff --git a/docs/INSTALL_MANUAL.md b/docs/INSTALL_MANUAL.md index 3c7f7a4..445f707 100644 --- a/docs/INSTALL_MANUAL.md +++ b/docs/INSTALL_MANUAL.md @@ -6,6 +6,8 @@ a manual installation for the other. Scrutiny is made up of two components: a collector and a webapp/api. Here's how each component can be deployed manually. +> Note: the `/opt/scrutiny` directory is not hardcoded, you can use any directory name/path. + ## Webapp/API ### Dependencies @@ -19,9 +21,9 @@ which is included by most linux OS's already. Now let's create a directory structure to contain the Scrutiny files & binary. ``` -mkdir -p /etc/scrutiny/config -mkdir -p /etc/scrutiny/web -mkdir -p /etc/scrutiny/bin +mkdir -p /opt/scrutiny/config +mkdir -p /opt/scrutiny/web +mkdir -p /opt/scrutiny/bin ``` ### Config file @@ -30,19 +32,19 @@ While it is possible to run the webapp/api without a config file, the defaults a and so will need to be overridden. So the first thing you'll need to do is create a config file that looks like the following: ``` -# stored in /etc/scrutiny/config/scrutiny.yaml +# stored in /opt/scrutiny/config/scrutiny.yaml version: 1 web: database: # The Scrutiny webapp will create a database for you, however the parent directory must exist. - location: /etc/scrutiny/config/scrutiny.db + location: /opt/scrutiny/config/scrutiny.db src: frontend: # The path to the Scrutiny frontend files (js, css, images) must be specified. # We'll populate it with files in the next section - path: /etc/scrutiny/web + path: /opt/scrutiny/web ``` > Note: for a full list of available configuration options, please check the [example.scrutiny.yaml](https://github.com/AnalogJ/scrutiny/blob/master/example.scrutiny.yaml) file. @@ -52,8 +54,8 @@ web: Next, we'll download the Scrutiny API binary and frontend files from the [latest Github release](https://github.com/analogj/scrutiny/releases). The files you need to download are named: -- **scrutiny-web-linux-amd64** - save this file to `/etc/scrutiny/bin` -- **scrutiny-web-frontend.tar.gz** - save this file to `/etc/scrutiny/web` +- **scrutiny-web-linux-amd64** - save this file to `/opt/scrutiny/bin` +- **scrutiny-web-frontend.tar.gz** - save this file to `/opt/scrutiny/web` ### Prepare Scrutiny @@ -61,10 +63,10 @@ Now that we have downloaded the required files, let's prepare the filesystem. ``` # Let's make sure the Scrutiny webapp is executable. -chmod +x /etc/scrutiny/bin/scrutiny-web-linux-amd64 +chmod +x /opt/scrutiny/bin/scrutiny-web-linux-amd64 # Next, lets extract the frontend files. -cd /etc/scrutiny/web +cd /opt/scrutiny/web tar xvzf scrutiny-web-frontend.tar.gz --strip-components 1 -C . # Cleanup @@ -76,7 +78,7 @@ rm -rf scrutiny-web-frontend.tar.gz Finally, we start the Scrutiny webapp: ``` -/etc/scrutiny/bin/scrutiny-web-linux-amd64 start --config /etc/scrutiny/config/scrutiny.yaml +/opt/scrutiny/bin/scrutiny-web-linux-amd64 start --config /opt/scrutiny/config/scrutiny.yaml ``` The webapp listens for traffic on `http://0.0.0.0:8080` by default. @@ -105,7 +107,7 @@ So you'll need to install the v7+ version using one of the following commands: Now let's create a directory structure to contain the Scrutiny collector binary. ``` -mkdir -p /etc/scrutiny/bin +mkdir -p /opt/scrutiny/bin ``` @@ -114,7 +116,7 @@ mkdir -p /etc/scrutiny/bin Next, we'll download the Scrutiny collector binary from the [latest Github release](https://github.com/analogj/scrutiny/releases). The file you need to download is named: -- **scrutiny-collector-metrics-linux-amd64** - save this file to `/etc/scrutiny/bin` +- **scrutiny-collector-metrics-linux-amd64** - save this file to `/opt/scrutiny/bin` ### Prepare Scrutiny @@ -123,7 +125,7 @@ Now that we have downloaded the required files, let's prepare the filesystem. ``` # Let's make sure the Scrutiny collector is executable. -chmod +x /etc/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 +chmod +x /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 ``` ### Start Scrutiny Collector, Populate Webapp @@ -131,7 +133,7 @@ chmod +x /etc/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 Next, we will manually trigger the collector, to populate the Scrutiny dashboard: ``` -/etc/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint "http://localhost:8080" +/opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint "http://localhost:8080" ``` ### Schedule Collector with Cron @@ -144,5 +146,5 @@ This may be different depending on your OS/environment, but it may look somethin crontab -e # add a line for Scrutiny -*/15 * * * * /etc/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint "http://localhost:8080" +*/15 * * * * /opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint "http://localhost:8080" ``` diff --git a/docs/SUPPORTED_NAS_OS.md b/docs/SUPPORTED_NAS_OS.md new file mode 100644 index 0000000..5e70aa4 --- /dev/null +++ b/docs/SUPPORTED_NAS_OS.md @@ -0,0 +1,14 @@ +# Officially Supported NAS OS's + +These are the officially supported NAS OS's (with documentation and setup guides). +Once a guide is created (in `docs/guides/`) it will be linked here. + +- [ ] freenas/truenas +- [ ] unraid +- [ ] ESXI +- [ ] Proxmox +- [ ] Synology +- [ ] OMV +- [ ] Amahi +- [ ] Running in a LXC container +