Like the Windows Agent, the Linux Agent is a single self-contained executable that installs itself as a systemd service - no separate package manager entry, no .NET runtime required on the target machine.
Status: builds and cross-publishes cleanly (confirmed genuine linux-x64 ELF binary), but has not been run against a real Linux machine from the session that built it - same honesty bar as the Ubuntu Server deployment guide. Treat your first install as the first real test.
From C:\Projects\OpsCommandCenter on the Windows dev machine (cross-publish, no Docker/WSL
needed):
.\publish-agent-linux.ps1Produces publish-agent-linux\OpsCommandCenterAgentLinux (self-contained).
scp publish-agent-linux/OpsCommandCenterAgentLinux user@<pc-ip>:/tmp/
ssh user@<pc-ip> "chmod +x /tmp/OpsCommandCenterAgentLinux"Must run as root:
sudo /tmp/OpsCommandCenterAgentLinux --install --server=http://<server-ip>:5252 --interval=10What this does:
- Copies itself to
/opt/opscommandcenter-agent/OpsCommandCenterAgentLinux - Writes an
appsettings.jsonnext to it with the given server URL and report interval - Creates a dedicated
opscommandcentersystem user - Installs and starts a systemd service named
opscommandcenter-agent(auto-start on boot, auto-restart on crash)
Re-running the same command is safe - it stops and replaces the existing service rather than erroring.
sudo /tmp/OpsCommandCenterAgentLinux --uninstallStops and removes the systemd service. Installed files are left in place.
sudo systemctl status opscommandcenter-agentShould show active (running). Within a few report intervals the PC should appear as a card
on the dashboard.
- Disk health: only populated if
smartctl(from thesmartmontoolspackage) is installed — reports 100/0 for PASSED/FAILED, not a percentage (Linux exposes SMART data far less uniformly than Windows'MSFT_StorageReliabilityCounter). Withoutsmartctl, disk health shows "n/a", same honest-gap handling as the Windows Agent. - BitLocker/Antivirus equivalents: left as "n/a" rather than guessed. Linux disk encryption (LUKS) and antivirus tooling vary too much across distros for a single reliable check — a real implementation would need to know your specific setup (LUKS vs. plain, which AV if any) rather than a generic heuristic that could report the wrong answer.