Skip to main content

Install Linux Node

The Linux node install script is served by Dash:

https://dash.example.com/deploy/linux/install.sh

The script downloads Dash's bundled node_linux_<arch>, configures push reporting, and registers a systemd service. The node host does not need to download GitHub Release binaries separately.

The script requires root/sudo, systemd, and curl or wget. When LVM/LVM-thin is detected, it installs and enables cron for thinpool collection; Debian/Ubuntu systems that use apt-get do not need cron installed manually first.

The script attempts to install smartmontools and writes ithiltir-node-smart-cache.service and ithiltir-node-smart-cache.timer. If SMART setup fails or smartctl is unavailable, base node monitoring continues to run.

Install Command

curl -fsSL https://dash.example.com/deploy/linux/install.sh -o install_node.sh
sudo bash install_node.sh dash.example.com 443 '<node-secret>'

Full form:

sudo bash install_node.sh <dash_ip> [dash_port] <secret> [interval_seconds] [--net iface1,iface2] [--require-https]

If only <dash_ip> <secret> are provided, the port is inferred from the rendered DOWNLOAD_SCHEME: HTTPS uses 443, HTTP uses 80.

Installed Files

PathContent
/var/lib/ithiltir-node/releases/<version>/ithiltir-nodeCurrent node binary
/var/lib/ithiltir-node/currentSymlink to the current release
/var/lib/ithiltir-node/report.yamlReport target config
/etc/systemd/system/ithiltir-node.servicesystemd service
/run/ithiltir-node/thinpool.jsonLVM thinpool cache
/run/ithiltir-node/smart.jsonSMART cache
/opt/node/collect_thinpool.shLVM thinpool collector
/etc/cron.d/ithiltir-node-thinpoolthinpool collection cron
/usr/local/libexec/ithiltir-node/smart-cacheSMART cache helper
/etc/systemd/system/ithiltir-node-smart-cache.serviceSMART cache refresh service
/etc/systemd/system/ithiltir-node-smart-cache.timerSMART cache refresh timer

The service runs as the ithiltir system user and uses /var/lib/ithiltir-node as its working directory.

The current symlink and releases/<version> directories are also the Linux managed self-update boundary. Direct binaries outside that install layout do not process update manifests returned by Dash.

systemd Boundary

The Linux service enables:

  • NoNewPrivileges=true
  • PrivateTmp=true
  • ProtectSystem=strict
  • ProtectHome=true
  • ReadWritePaths=/var/lib/ithiltir-node

The node process should only write to its data directory.

The SMART cache is refreshed by a root-side oneshot service. The node process only reads /run/ithiltir-node/smart.json; it does not execute smartctl as root.

LVM Thinpool

When LVM / LVM-thin is detected, the install script enables thinpool cache collection:

cat /run/ithiltir-node/thinpool.json

If the system has no LVM, old cron entries and collector scripts are removed.

SMART Cache

The SMART cache refreshes every 5 minutes by default:

systemctl status ithiltir-node-smart-cache.timer
cat /run/ithiltir-node/smart.json

The cache directory uses 0750 root:<node-group>. The cache file uses 0640 root:<node-group>. The default node group is ithiltir.

When smartctl is missing, permission is unavailable, or the cache is stale, the node reports structured disk.smart.status. CPU, memory, disk capacity, and network metrics continue to report.

Common Commands

systemctl status ithiltir-node.service
journalctl -u ithiltir-node.service -f
systemctl restart ithiltir-node.service

Show report targets:

/var/lib/ithiltir-node/current/ithiltir-node report list