This release introduces initial support for S.M.A.R.T. disk health data. The documentation is a work in progress and may not cover all cases. Please report issues in #373.
Other changes:
Add henrygd/beszel-agent:alpine Docker image and include smartmontools in all non-base agent images.
Remove environment variables from container details (#1305)
Add CONTAINER_DETAILS environment variable to control access to container logs and info. (#1305)
Improve temperature chart by allowing y-axis to start above 0 for better readability. (#1307)
First support for Intel GPUs and a change in default Linux memory calculation (see below).
What's Changed
Add initial support for Intel GPUs (#1150, #755; feedback appreciated)
Show connection type (WebSocket / SSH) in hub UI.
Fix temperature unit and bytes / bits settings. (#1180)
Add henrygd/beszel-agent-intel image for Intel GPUs.
Change default memory calculation (see below)
Update Go dependencies. Shoutrrr now supports notifications for Signal and WeChat Work (WeCom).
Note on Linux memory calculation change
The default calculation now uses MemAvailable and better aligns with top and free. This may cause an increase in usage and trigger alarms (sorry!). See shirou/gopsutil#1873 for more information.
[Fix] OpenWrt agent install script by @evrial in #1005
[Feature] Move name copy to Action Dialog by @svenvg93 in #1010
Note
The agent must be run as administrator to access sensors through LibreHardwareMonitorLib, just as when running LibreHardwareMonitor directly. I'll update the docs this weekend with more details and instructions for configuring this with NSSM.
This is a beta release. Please make a hub backup before upgrading.
Version 0.12.0 adds the ability for agents to initiate an outgoing connection to the hub.
It also introduces universal tokens, which can be used to register systems without needing to add them manually in the hub. It also allows you to deploy multiple agents with the same configuration, which should make cluster deployments easier.
Please report issues or provide feedback in #951. Thanks!
Upgrading
Docker: Switch to the :edge tag.
Other: This is the first beta release so I'm not sure how the different package managers handle it. To run manually, download the new binary, replace the old one, then add the new env vars and restart the service. I'm working on updating the install scripts and will look further into the package manager situation tomorrow.
Details
The WebSocket connection works in tandem with the agent's existing SSH server. If the agent connects successfully via WebSocket it will stop the SSH server. Likewise, if the agent connects via SSH it will stop attempting to connect via WebSocket.
Note: Don't add the HUB_URL env var to an agent that connects to multiple hubs. This isn't supported yet with WebSocket. Otherwise everything should be fully backwards compatible.
The agent gets two new environment variables:
HUB_URL: The URL of the hub.
TOKEN: The token associated with the system, provided in the hub.
You can copy these values for existing systems in the hub at /settings/tokens.
WebSocket authentication
We use a mutual authentication handshake that ensures both parties are trusted before any data is exchanged. Let me know if you have ideas for improvement.
Initial connection and token verification: The agent initiates a WebSocket connection to the hub. It includes a unique registration token as an HTTP header during the upgrade request. The hub verifies that the token is associated with an existing system before upgrading the connection.
Hub challenge: To prove its identity to the agent, the hub signs the token using its private key and sends the signature back to the agent. The agent verifies the signature using its public key.
Fingerprint authentication: After verifying the hub, the agent responds by sending its fingerprint. This fingerprint is a secure hash of unique identifiers, locking the agent's registration to the machine it's running on. The hub verifies the received fingerprint against the one stored for the system. If they match, the connection is authorized.
Please make sure to use the DISABLE_PASSWORD_AUTH environment variable if you want to disable password authentication. Directly editing the PocketBase users collection does not persist this setting after restart.
What's changed
Fixed backslash escaping in the copy/paste Windows agent install command (#785).
Setting DOCKER_HOST="" will skip attempting to connect to the Docker daemon.
FreeBSD systems should have a proper FreeBSD icon now.
Fix EXTRA_FILESYSTEMS drive detection on Windows (#422)
Fix cpu and memory stats for windows docker daemon by @ViryBe in #653
Prepend base path for command palette links (#689).
Other changes
Removed nvidia-smi dependency for Jetson devices (#286).
Improved system information display for Windows and macOS systems.
Container names in tooltips are truncated if over a certain width.
Prevent h/j/left/right from changing system if meta/shift/ctrl key is pressed.
Use GPU temperature as primary sensor if no other sensors are available.
Add --auto-update Option to Agent Installer Script by @daniel-hiller in #682
Added documentation for notification services (adapted from existing Shoutrrr docs).
Updated Go dependencies.
Switched to nicholas-fedor/shoutrrr because Shoutrrr is no longer maintained by containrrr. We use a pinned version so I can review changes and update docs on our end. Big thanks to @nicholas-fedor for keeping the project alive!
Localization
Updated Arabic translations (thanks rihla on Crowdin)
The Windows agent is experimental and may get flagged by AV. I'll try to improve the setup process and sort out the major issues over the next handful of minor releases. See this article by Alex Kretzschmar for usage.
New features
Allow x minutes downtime before alerting. (#595, #625).