Skip to content

A system monitoring daemon that sends stats to Send stats to iStat View for iOS and iStat View for macOS.

License

ulf16/istatserverlinux

 
 

Repository files navigation

iStat Server

iStat Server is a system monitoring daemon that is used in conjunction with iStat View for iOS and iStat View for macOS to remotely monitor computers.

2025 Maintenance & Modernization Update

This fork brings iStatServerLinux up to date for modern Linux systems (and beyond).
All changes are backward-compatible with the original iStat client app.

Overview of Improvements

This updated version of iStat Server for Linux modernizes and extends the original Bjango repository:

  • Modernized build system — fully updated Autotools setup compatible with current GCC, Clang, and pkg-config environments.
  • 🔐 Improved security — stronger OpenSSL 3.x support, hardened build flags, and safer configuration file permissions.
  • 🧠 Enhanced sensor detection — improved CPU/GPU and frequency handling across multiple architectures.
  • 🧰 Optional systemd integration--enable-systemd-unit adds automatic service installation.
  • 🪶 Cleaner, more reliable configuration and install process — better dependency detection and streamlined setup scripts.

🧱 Supported Architectures

Hardware Architecture Example Device Build Status
Intel / AMD 64-bit x86_64 Mac mini (Intel), PC servers ✅ Compiles and runs cleanly
ARM 64-bit aarch64 Odroid N2, Raspberry Pi 4 (64-bit OS) ✅ Stable
ARM 32-bit armv7l Odroid XU4, older Raspberry Pi models ✅ Stable
macOS x86_64 / arm64 Apple Silicon or Intel ⚙️ Build planned, not yet supported

iStat Server builds and runs natively on both 64-bit and 32-bit ARM Linux systems as well as traditional x64 servers.
Cross-compiling is also possible using standard GNU autotools.

Quick Install

curl -fsSL https://raw.githubusercontent.com/ulf16/istatserverlinux/master/get-istatserver.sh -o istatserverlinux.sh && sh istatserverlinux.sh

Quick install will install and update any required packages. The installer is designed for Linux distributions using systemd. It automatically builds, installs, and enables the istatserver service.

On non-systemd systems (e.g., Alpine with OpenRC, Devuan, or BSDs), the build will still succeed, but service installation will be skipped. You can then run the daemon manually:

sudo -u istat /usr/local/bin/istatserver

or create a small init script if you prefer to start it automatically. If you do not want packages installed or updated automatically then please perform a manual install using the instructions below


Supported OSs

  • Linux (updated)

  • FreeBSD, DragonFly BSD, OpenBSD, NetBSD and other BSD based OSs

  • AIX

  • Solaris

  • HP-UX (Still in development and not tested)


Requirements

  • C and C++ compilers such as gcc and g++.
  • Auto tools (autoconf and automake).
  • OpenSSL/libssl + development libraries.
  • sqlite3 + development libraries.
  • libxml2 + development libraries.

We have a package guide available to help you install all the required packages for your OS.


Building and starting iStat Server

  • Pull the latest branch (master).
  • cd /path/to/istatserver
  • ./autogen
  • ./configure
  • make
  • sudo make install
  • Test with: sudo /usr/local/bin/istatserver
  • Install systemd unit file: sudo cp ./resource/systemd/istatserver.service /etc/systemd/system/istatserver.service
  • sudo systemctl restart istatserver

A 5 digit passcode is generated by the install script. It can be found in the preference file, which is generally located at /usr/local/etc/istatserver/istatserver.conf. iStat View will ask for this passcode the first time you connect to your computer.


Upgrading iStat Server

Upgrades follow the same process as standard installs. Please stop istatserver if it is running then run the normal build process.


Security Notes

  • Least privilege:

    The service runs as a dedicated user istat (not root).

    Configuration and database files live in /usr/local/etc/istatserver/

    and are owned by istat:istat.

  • Foreground service:

    The included systemd unit uses Type=simple (no -d), meaning the process stays

    in the foreground under systemd’s direct supervision.

    This ensures clean restarts, proper logging (journalctl), and avoids PID-file issues.

  • No elevated privileges required:

    Power (RAPL) readings are made accessible to the istat user through a udev rule

    that adjusts permissions on the relevant sysfs files.

    By default, the installer applies a world-readable rule:

SUBSYSTEM=="powercap", KERNEL=="intel-rapl:*", TEST=="%S%p/energy_uj", RUN+="/bin/chmod 0444 %S%p/energy_uj"
  • For tighter control, you can restrict access to the istat group instead:
SUBSYSTEM=="powercap", KERNEL=="intel-rapl:*", TEST=="%S%p/energy_uj", GROUP="istat", MODE="0440"
  • Then reload and apply the rule:
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=powercap
  • Process hardening:

    The systemd unit enforces several security directives:

    NoNewPrivileges, PrivateTmp, and multiple Protect*= options to reduce

    the attack surface. You can tighten them further (for example

    ProtectSystem=strict, ReadWritePaths=/usr/local/etc/istatserver)

    depending on your setup.

  • Certificates and keys:

    Self-signed certificates use RSA-2048 with SHA-256 and are generated through

    OpenSSL’s modern EVP API. They are stored in:

/usr/local/etc/istatserver/key.pem
/usr/local/etc/istatserver/cert.pem
  • Make sure these files are not world-writable and owned by the istat user.

    You can safely replace them with your own certs using the same file paths.

  • Network exposure:

    istatserver listens on all interfaces by default.

    To restrict access, configure network_addr and network_port

    in /usr/local/etc/istatserver/istatserver.conf,

    or use a local firewall rule to limit visibility.

  • Database and logging:

    Historical data is stored in SQLite under /usr/local/etc/istatserver/.

    On devices with flash storage (like SBCs), consider placing this directory

    on a more durable drive, tmpfs, or using periodic syncs to reduce write wear.


Starting iStat Server at boot

iStat Server does not install any scripts to start itself at boot. Sample scripts for rc.d, upstart and systemd are included in the resources directory. You may need to customize them depending on your OS.

Starting with systemd

  • sudo cp ./resource/systemd/istatserver.service /etc/systemd/system/istatserver.service
  • sudo service istatserver start

Starting with upstart (outdated)

  • sudo cp ./resource/upstart/istatserver.conf /etc/init/istatserver.conf
  • sudo start istatserver

Starting with rc.d (outdated)

  • sudo cp ./resource/rc.d/istatserver /etc/rc.d/istatserver
  • sudo /etc/rc.d/istatserver start

iStat Server is based on istatd by William Tisäter.


        :::::::::   :::::::     ::::      ::::    :::   ::::::::    ::::::::
       :+:    :+:      :+:    :+: :+:    :+:+:   :+:  :+:    :+:  :+:    :+:
      +:+    +:+      +:+   +:+   +:+   :+:+:+  +:+  +:+         +:+    +:+
     +#++:++#+       +#+  +#++:++#++:  +#+ +:+ +#+  :#:         +#+    +:+
    +#+    +#+      +#+  +#+     +#+  +#+  +#+#+#  +#+   +#+#  +#+    +#+
   #+#    #+#  #+# #+#  #+#     #+#  #+#   #+#+#  #+#    #+#  #+#    #+#
  #########    #####   ###     ###  ###    ####   ########    ########

About

A system monitoring daemon that sends stats to Send stats to iStat View for iOS and iStat View for macOS.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 89.5%
  • M4 5.3%
  • Shell 2.3%
  • Makefile 1.5%
  • Other 1.4%