* feat: add outbound heartbeat monitoring to external endpoints Allow Beszel hub to periodically ping an external monitoring service (e.g. BetterStack, Uptime Kuma, Healthchecks.io) with system status summaries, enabling monitoring without exposing Beszel to the internet. Configuration via environment variables: - BESZEL_HUB_HEARTBEAT_URL: endpoint to ping (required to enable) - BESZEL_HUB_HEARTBEAT_INTERVAL: seconds between pings (default: 60) - BESZEL_HUB_HEARTBEAT_METHOD: HTTP method - POST/GET/HEAD (default: POST)
11 KiB
Unreleased
-
Add outbound heartbeat monitoring to external services (BetterStack, Uptime Kuma, Healthchecks.io, etc.) with system status summary payload. Configured via
BESZEL_HUB_HEARTBEAT_URL,BESZEL_HUB_HEARTBEAT_INTERVAL, andBESZEL_HUB_HEARTBEAT_METHODenvironment variables. -
Add Heartbeat settings page to the admin UI with status display, configuration reference, and test button.
0.18.3
-
Add experimental sysfs AMD GPU collector. (#737, #1569)
-
Update LibreHardwareMonitorLib to 0.9.5. (#1697)
-
Improve container network stats accuracy.
-
Fix
SHARE_ALL_SYSTEMSfor system_details, smart_devices, and systemd_services. (#1660) -
Parse ATA device statistics for temperature and future metrics. (#1689)
-
Add
SMART_DEVICES_SEPARATORenvironment variable and allow drives with the same name to be added with different types (e.g. RAID controllers). (#1655) -
Add tooltips for navbar buttons. (#1636)
-
Add icon button for mobile use. (#1687)
-
Add tooltip to system name in systems table. (#1640)
-
Improve CJK truncation in UI.
-
Fix container uptime sorting edge case. (#1696)
-
Remove stale systemd services from tracking after deletion. (#1594)
-
Apply SELinux context after binary replacement. (#1678)
-
Update honeypot field name and autofill ignores. (#1011)
-
Write health_file to
/dev/shminstead of/tmpif available. (#1455) -
Don't force lowercase text for active alerts. (#1682)
-
Ensure battery current charge doesn't exceed full capacity. (#1668)
-
Increase
smartctl --scantimeout to 10 seconds. (#1465) -
Use name-only matching for unique S.M.A.R.T. devices. (#1655)
-
Fix smartctlArgs call to use hasExistingData flag. (#1645)
-
Ignore alt key combinations when navigating systems with arrow keys. (#1698)
-
Update Go dependencies
0.18.2
-
Add separate dynamically linked glibc build for Linux. (#1618)
-
Fix GPU ID collision between Intel and NVIDIA collectors. (#1522)
-
Only hide GPU engine graph if entire usage is 0%. (#1624)
-
Add Jetson tegrastats regex support for pre-Jetpack 5 versions. (#1631)
-
Improve Indonesian translations. (#1625)
0.18.1
- Fix bug in 0.18.0 where all containers were cleared from the "All Containers" page when any system returned no containers.
0.18.0
-
Add experimental NVML GPU collector. (#1522, #1587)
-
Add low battery alerts. (#1507)
-
Add battery charge to systems table.
-
Add option to make universal token permanent. (#1097, #1614)
-
Add
--urland--tokencommand line arguments to the agent. (#1524) -
Collect S.M.A.R.T. data in the background every hour.
-
Add
SMART_INTERVALenvironment variable to customize S.M.A.R.T. data collection interval. -
Collect system distribution and architecture.
-
Add
system_detailscollection to store infrequently updated system information. -
Improve S.M.A.R.T. device path lookup for NVMe devices. (#1504)
-
Use origin country flags for Spanish, Portuguese, English languages. (#1571)
-
Raise
smartctltimeout to 15 seconds. (#1465) -
Skip known non-unique product UUID when generating fingerprints. (#1556)
-
Fix container logs decoding for raw streams. (#1535)
-
Fix capacity sorting in S.M.A.R.T. table. (#1551)
-
Fix loader visibility when no systems are present. (#1511)
-
Rename login honeypot field to prevent password manager autofill (#1011).
-
Add Serbian and Bahasa Indonesia translations.
-
Update Go dependencies.
0.17.0
-
Add quiet hours to silence alerts during specific time periods. (#265)
-
Add dedicated S.M.A.R.T. page.
-
Add alerts for S.M.A.R.T. failures.
-
Add
DISK_USAGE_CACHEenvironment variable. (#1426) -
Add
SKIP_SYSTEMDenvironment variable. (#1448) -
Add hub builds for Windows and FreeBSD.
-
Change extra disk indicators in systems table to display usage range as dots. (#1409)
-
Strip ANSI escape sequences from docker logs. (#1478)
-
Fix issue where the Add System button is visible to read-only users. (#1442)
-
Fix font ligatures creating unwanted artifacts in random ids. (#1434)
-
Update Go dependencies.
0.16.1
-
Add services column to All Systems table. (#1153)
-
Add
SERVICE_PATTERNSenvironment variable to filter systemd services. (#1153) -
Fix detection and handling of immutable filesystems like Fedora Silverblue. (#1405)
-
Persist alert history page size preference. (#1404)
-
Add setting for layout width.
-
Update Go dependencies.
0.16.0
-
Add basic systemd service monitoring. (#1153)
-
Add GPU usage alerts.
-
Show additional disk percentages in systems table. (#1365)
-
Embed
smartctlin the Windows binary (experimental). (#1362) -
Add
EXCLUDE_SMARTenvironment variable to exclude devices from S.M.A.R.T. monitoring. (#1392) -
Change alert links to use system ID instead of name.
-
Update Go dependencies.
0.15.4
-
Refactor containers table to fix clock issue causing no results. (#1337)
-
Fix Windows extra disk detection. (#1361)
-
Add total line to the tooltip of charts with multiple values. (#1280)
-
Add fallback paths for
smartctllookup. (#1362, #1363) -
Fix
intel_gpu_topparsing when engine instance id is in column. (#1230) -
Update
henrygd/beszel-agent-nvidiaDockerfile to build latest smartmontools. (#1335)
0.15.3
-
Add CPU state details and per-core usage. (#1356)
-
Add
EXCLUDE_CONTAINERSenvironment variable to exclude containers from being monitored. (#1352) -
Add
INTEL_GPU_DEVICEenvironment variable to specify Intel GPU device. (#1285) -
Improve parsing of edge case S.M.A.R.T. power on times. (#1347)
-
Fix empty disk I/O values for extra disks. (#1355)
-
Fix battery nil pointer error. (#1353)
-
Add Hebrew with translations by @gabay.
-
Update
shoutrrrandgopsutildependencies.
0.15.2
- Improve S.M.A.R.T. device detection logic (fix regression in 0.15.1) (#1345)
0.15.1
-
Add
SMART_DEVICESenvironment variable to specify devices and types. (#373, #1335) -
Add support for
scsi,sntasmedia, andsntrealtekS.M.A.R.T. types. (#373, #1335) -
Handle power-on time attributes that are formatted as strings (e.g., "0h+0m+0.000s").
-
Skip virtual disks in S.M.A.R.T. monitoring. (#1332)
-
Add sorting to the S.M.A.R.T. table. (#1333)
-
Fix incorrect disk rendering in S.M.A.R.T. device details. (#1336)
-
Fix
SHARE_ALL_SYSTEMSsetting not working for containers. (#1334) -
Fix text contrast issue when container details are disabled. (#1324)
0.15.0
-
Add initial S.M.A.R.T. support for disk health monitoring. (#962)
-
Add
henrygd/beszel-agent:alpineDocker image and includesmartmontoolsin all non-base agent images. -
Remove environment variables from container details (#1305)
-
Add
CONTAINER_DETAILSenvironment variable to control access to container logs and info APIs. (#1305) -
Improve temperature chart by allowing y-axis to start above 0 for better readability. (#1307)
-
Improve battery detection logic. (#1287)
-
Limit docker log size to prevent possible memory leak. (#1322)
-
Update Go dependencies.
0.14.1
-
Add
MFA_OTPenvironment variable to enable email-based one-time password for users and/or superusers. -
Add image name to containers table. (#1302)
-
Add spacing for long temperature chart tooltip. (#1299)
-
Fix sorting by status in containers table. (#1294)
0.14.0
-
Add
/containerspage for viewing current status of all running containers. (#928) -
Add ability to view container status, health, details, and basic logs. (#928)
-
Probable fix for erroneous network stats when interface resets (#1267, #1246)
0.13.2
-
Add ability to set custom name for extra filesystems. (#379)
-
Improve WebSocket agent reconnection after network interruptions. (#1263)
-
Allow more latency in one minute charts before visually disconnecting points. (#1247)
-
Update favicon and add add down systems count in bubble.
0.13.1
-
Fix one minute charts on systems without Docker. (#1237)
-
Change system permalinks to use ID instead of name. (#1231)
0.13.0
-
Add one minute chart with one second interval.
-
Improve accuracy of disk I/O statistics.
-
Add
SYSTEM_NAMEenvironment variable to override system name on universal token registration. (#1184) -
Add
noindexHTML meta tag. (#1218) -
Update Go dependencies.
0.12.12
-
Fix high CPU usage when
intel_gpu_topreturns an error. (#1203) -
Add
SKIP_GPUenvironment variable to skip GPU data collection. (#1203) -
Add fallback cache/buff memory calculation when cache/buff isn't available (#1198)
-
Fix automatic agent update / restart on OpenRC. (#1199)
0.12.11
-
Adjust calculation of cached memory (fixes #1187, #1196)
-
Add pattern matching and blacklist functionality to
NICSenv var. (#1190) -
Update Intel GPU collector to parse plain text (
-l) instead of JSON output (#1150)
0.12.10
Note that the default memory calculation changed in this release, which may cause a difference in memory usage compared to previous versions.
-
Add initial support for Intel GPUs (#1150, #755)
-
Show connection type (WebSocket / SSH) in hub UI.
-
Fix temperature unit and bytes / bits settings. (#1180)
-
Add
henrygd/beszel-agent-intelimage for Intel GPUs (experimental). -
Update Go dependencies. Shoutrrr now supports notifications for Signal and WeChat Work (WeCom).
0.12.9
- Fix divide by zero error introduced in 0.12.8 :) (#1175)
0.12.8
-
Add per-interface network traffic charts. (#926)
-
Add cumulative network traffic charts. (#926)
-
Add setting for time format (12h / 24h). (#424)
-
Add experimental one-time password (OTP) support.
-
Add
TRUSTED_AUTH_HEADERenvironment variable for authentication forwarding. (#399) -
Add
AUTO_LOGINenvironment variable for automatic login. (#399) -
Add FreeBSD support for agent install script and update command.
-
Fix status alerts not being resolved when system comes up. (#1052)
0.12.7
-
Make LibreHardwareMonitor opt-in with
LHM=trueenvironment variable. (#1130) -
Fix bug where token was not refreshed when adding a new system. (#1141)
-
Add
USER_EMAILandUSER_PASSWORDenvironment variables to set the email and password of the initial user. (#1137) -
Display system counts (active, paused, down) in All Systems 'view' options. (#1078)
-
Remember All Systems sort order during session.
0.12.6
-
Add maximum 1 minute memory usage.
-
Add status filters to All Systems table.
-
Virtualize All Systems table to improve performance with hundreds of systems. (#1100)
-
Fix Safari system link CSS bug.
-
Use older cuda image for increased compatibility (#1103)
-
Truncate long system names in All Systems table. (#1104)
-
Fix update mirror and add
--china-mirrorsflag. (#1035)
0.12.5
-
Downgrade
gopsutiltov4.25.6to fix panic on FreeBSD (#1083) -
Exclude FreeBSD from battery charge monitoring to fix deadlock. (#1081)
-
Minor hub UI improvements.
0.12.4
-
Add battery charge monitoring.
-
Add fallback mirror to the
updatecommands. (#1035) -
Fix blank token field in insecure contexts.
-
Allow opening internal router links in new tab.
-
Add
/api/beszel/user-alertsendpoint. Remove use of batch API for alerts in hub. -
Require auth for
/api/beszel/getkeyendpoint that returns the public key. -
Change
GET /api/beszel/send-test-notificationendpoint toPOST /api/beszel/test-notification. -
Update Go and JS dependencies.
-
New translations by @Radotornado, @AlexVanSteenhoven, @harupong, @dymek37, @NaNomicon, Tommaso Cavazza, Caio Garcia, and others.
Older
Release notes are available at https://github.com/henrygd/beszel/releases