Scrutiny (S.M.A.R.T Monitoring) runs on Docker Compose. You can install Docker and Compose manually or use Dockge LXC (recommended).
Install Scrutiny
mkdir -p /opt/scrutiny/{influxdb,config} && cd /opt/scrutiny
nano docker-compose.yml
Paste the following into docker-compose.yml, change the TZ to your local timezone.
version: '2.4'
services:
scrutiny-influxdb:
image: influxdb:2.2
container_name: scrutiny-influxdb
ports:
- 8086:8086
restart: unless-stopped
volumes:
- ./influxdb:/var/lib/influxdb2
environment:
TZ: Asia/Kolkata # CHANGE THIS
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8086/health"]
interval: 5s
timeout: 10s
retries: 20
scrutiny-web:
image: 'ghcr.io/analogj/scrutiny:master-web'
container_name: scrutiny-web
ports:
- 8080:8080
restart: unless-stopped
volumes:
- ./config:/opt/scrutiny/config
environment:
SCRUTINY_WEB_INFLUXDB_HOST: scrutiny-influxdb
TZ: Asia/Kolkata # CHANGE THIS
depends_on:
scrutiny-influxdb:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
interval: 5s
timeout: 10s
retries: 20
start_period: 10s
Save the compose file.
Start Scrutiny
docker-compose up -d
Scrutiny will be available on port 8080.
Collector Script on Proxmox Node
Head over to Proxmox > Node (e.g., pve) > Shell, run this:
cd /opt/scrutiny
nano scrutiny-collector-install.sh
Paste the following:
Replace API_ENDPOINT with your Scrutiny container's IP address.
#!/bin/bash
API_ENDPOINT="http://192.168.XX.XX:8080" # CHANGE THIS
apt install smartmontools -y
INSTALL_DIR="/opt/scrutiny"
BIN_DIR="$INSTALL_DIR/bin"
LATEST_RELEASE_URL=$(curl -s https://api.github.com/repos/AnalogJ/scrutiny/releases/latest | grep "browser_download_url.*scrutiny-collector-metrics-linux-amd64" | cut -d '"' -f 4)
mkdir -p $BIN_DIR
curl -L $LATEST_RELEASE_URL -o $BIN_DIR/scrutiny-collector-metrics-linux-amd64
chmod +x $BIN_DIR/scrutiny-collector-metrics-linux-amd64
mkdir -p /root/scrutiny
cat << EOF > /root/scrutiny/scrutiny.sh
#!/bin/bash
/opt/scrutiny/bin/scrutiny-collector-metrics-linux-amd64 run --api-endpoint "$API_ENDPOINT" 2>&1 | tee /var/log/scrutiny.log
EOF
chmod +x /root/scrutiny/scrutiny.sh
cat << 'EOF' > /etc/systemd/system/scrutiny.service
[Unit]
Description=Scrutiny Collector
Requires=scrutiny.timer
[Service]
Type=simple
ExecStart=/root/scrutiny/scrutiny.sh
User=root
EOF
cat << 'EOF' > /etc/systemd/system/scrutiny.timer
[Unit]
Description=Timer for the scrutiny.service
[Timer]
Unit=scrutiny.service
OnBootSec=5min
OnUnitActiveSec=60min
[Install]
WantedBy=timers.target
EOF
systemctl enable scrutiny.timer
systemctl start scrutiny.timer
systemctl status scrutiny.timer
Run the Script
chmod +x scrutiny-collector-install.sh
./scrutiny-collector-install.sh
Now Scrutiny should be running at http://<container-ip>:8080