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).
This release includes breaking changes to the REST API. Most importantly, /api/admins/* has been replaced with the _superusers auth collection. For more information see "Web APIs changes" in the PocketBase 0.23.0 release notes.
Notes
This release adds a built in rate limiter. I recommend enabling it (and specifying a trusted proxy header if applicable) on the /_/#/settings page.
A lot of internal refactoring was needed to accommodate changes in PocketBase. If anything isn't working correctly, please open an issue.
We now have a website with better documentation. Feel free to submit a PR if you want to add or improve anything.
New features
USER_CREATION environment variable to allow automatic creation of user accounts via OAuth. (#291)
Grid view option for systems table by @0xMMMMMM (#315)
Agent install script: Add checksum support and mirrors for mainland China by @Alice39s (#290)
New PocketBase features like batch API and rate limiting.
The agent will first check if I/O stats are available for luks-d76c2e14-0264-446f-af20-edb8e3e28741.
Because they are not, the agent will check the folder name (sda1). I/O for sda1 is available, so it will use sda1 for this disk instead of luks-d76c2e14-0264-446f-af20-edb8e3e28741. The read/write stats now populate as intended:
Bug fixes
Fixes labeling of read/write in extra disk charts. (#254)
Other changes
A recent update changed the behavior of Docker charts. Previously, a stopped container was completely removed from the chart/tooltip during the time period when it was not running. In the last few releases, the container remained in the chart with zero values if it was running at any time during the chart's duration. This update restores the previous functionality.