2.8 KiB
2.8 KiB
systemd Service Installation
Quick setup to run system2mqtt as a systemd service on Linux.
Installation Steps
-
Create dedicated user:
sudo useradd -r -s /usr/sbin/nologin -d /opt/system2mqtt system2mqtt -
Install system to /opt/system2mqtt:
sudo mkdir -p /opt/system2mqtt sudo cp -r system2mqtt.py collectors config.yaml.example run.sh /opt/system2mqtt/ sudo cp requirements.txt /opt/system2mqtt/ sudo chmod +x /opt/system2mqtt/run.sh sudo chown -R system2mqtt:system2mqtt /opt/system2mqtt -
Configure:
# Copy and edit config (in user's home directory) sudo -u system2mqtt mkdir -p ~system2mqtt/.config/system2mqtt sudo -u system2mqtt cp /opt/system2mqtt/config.yaml.example ~system2mqtt/.config/system2mqtt/config.yaml sudo nano ~system2mqtt/.config/system2mqtt/config.yaml # OR use environment variables in .env sudo nano /opt/system2mqtt/.env sudo chown system2mqtt:system2mqtt /opt/system2mqtt/.env -
Install systemd service:
sudo cp system2mqtt.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable system2mqtt sudo systemctl start system2mqtt -
Check status:
sudo systemctl status system2mqtt sudo journalctl -u system2mqtt -f
Service Management
- Start:
sudo systemctl start system2mqtt - Stop:
sudo systemctl stop system2mqtt - Restart:
sudo systemctl restart system2mqtt - Logs:
sudo journalctl -u system2mqtt -f - Enable on boot:
sudo systemctl enable system2mqtt - Disable on boot:
sudo systemctl disable system2mqtt
Notes
- Service runs as unprivileged
system2mqttuser - User is member of
admandsystemd-journalgroups for system metrics access - ZFS (read-only): On many systems, read-only queries like
zpool statusandzpool listwork without special privileges. If they fail on your host, consider one of these options:- Add the user to a
zfsgroup if present (Debian/Ubuntu withzfsutils-linuxoften provide it):sudo usermod -aG zfs system2mqtt sudo systemctl restart system2mqtt - Allow read-only ZFS commands via sudoers without a password:
echo "system2mqtt ALL=(ALL) NOPASSWD: /usr/sbin/zpool, /usr/sbin/zfs" | sudo tee /etc/sudoers.d/system2mqtt sudo visudo -c - Use ZFS delegation (if supported in your setup) to grant specific permissions:
sudo zfs allow system2mqtt snapshot,send,receive YOUR_POOL
- Add the user to a
run.shautomatically creates venv, installs/updates dependencies on each start- Auto-restarts on failure (RestartSec=10)
- Reads environment from
/opt/system2mqtt/.envif present - Logs to systemd journal (view with
journalctl)