Commit Graph
1789 Commits
Author SHA1 Message Date
henrygd d5f50fa461 feat(users): warn on invalid OAUTH_DEFAULT_USER_ROLE values 2026-10-13 08:39:37 -04:00
Sven van GinkelandGitHub 13ea8106eb users: add OAUTH_DEFAULT_USER_ROLE and make USER_EMAIL user admin (#2516) 2026-10-13 08:37:04 -04:00
Sven van GinkelandGitHub 1da59e3771 fix(agent): make package update checks work under the systemd sandbox (#2538)
The agent runs as the beszel user under ProtectSystem=strict, so package
managers that write temp, cache or log files failed with only
"exit status 1" in the log.

- Include the command's stderr in package update check errors.
- dnf5: point XDG_STATE_HOME and XDG_CACHE_HOME into the agent's data
  dir. They default to $HOME, which is /nonexistent for the beszel user.
  With -C, dnf5 still reads the system metadata cache.
- zypper: keep the solv cache in the data dir with --solv-cache-dir,
  since the agent user cannot rebuild it in /var/cache/zypp.
- install-agent.sh, Debian unit: add PrivateTmp=yes. dnf4 (Rocky, Alma)
  and zypper keep temporary files in /var/tmp, which ProtectSystem=strict
  makes read-only. The install script also adds it to existing units
  when re-run.
2026-10-13 08:07:44 -04:00
spatiumstasandGitHub 17dcd96efc fix(site): improve accessibility and preserve login translation (#2604) 2026-10-13 07:52:23 -04:00
henrygd 2fea95b3f1 chore(hub): update bun + npm lockfiles 2026-10-13 07:33:25 -04:00
spatiumstasandGitHub 9e60049248 fix(site): support Tailwind directives in Biome (#2603) 2026-10-13 07:31:01 -04:00
spatiumstasandGitHub 4886479cd4 fix(site): preserve lazy loading of the systemd table (#2602) 2026-10-13 07:20:45 -04:00
henrygd bb23f99b3e fix(agent): keep raw ZFS pool capacity when the root dataset has a refquota
A refquota on a pool's root dataset caps its avail by the root's own
referenced data, so used+avail can understate pool capacity when child
datasets hold most of the data and trigger false disk usage alerts.
Fetch refquota with the root datasets and fall back to the raw zpool
figures for those pools.
2026-10-12 14:17:59 -04:00
kenny-ishandGitHub 32d4692853 fix(agent): report ZFS pool capacity from the root dataset (#2540)
The pool overview used `zpool list`, whose size and alloc count raw vdev
space. On raidz that includes parity, so a TrueNAS pool with 65 TB usable
showed 98 TB capacity, while the details page (root dataset) matched TrueNAS.

Take Size, Alloc and Free from the pool's root dataset (used+avail), the same
way Btrfs reports effective capacity. If the root dataset cannot be read, keep
the raw figures and set Raw so the UI labels them as raw usage.

Fixes #2539
2026-10-12 14:14:19 -04:00
spatiumstasandGitHub 9cf75cca7a fix(site): stabilize system dialog layout across tabs (#2571) 2026-10-12 12:53:11 -04:00
Rajeev GadgilandGitHub 02f24ed0af fix(agent): fall back to NVML power samples when power usage is unsupported (#2550) 2026-10-12 12:45:27 -04:00
MarrrrrrrrryandGitHub a1d86d120f refactor(ui): measure y-axis labels via textContent instead of innerHTML (#2536) 2026-10-12 11:41:10 -04:00
Rajeev GadgilandGitHub a1cbdc980e fix(hub): omit zero GPU package power from stored stats (#2551) 2026-10-12 11:08:53 -04:00
Sven van GinkelandGitHub 665bcb3e53 refactor(agent): consolidate smartctl JSON types and SMART parsers (#2584) 2026-10-12 10:34:37 -04:00
spatiumstasandGitHub 3d33d5eabb fix(agent): preserve NVMe namespace fallbacks across rescans (#2597) 2026-10-12 09:28:44 -04:00
Mario MoharandGitHub da51dfd598 fix(site): unsubscribe live metrics that resolve after leaving 1m (#2599)
pb.realtime.subscribe() resolves only once the server has confirmed the
subscription. When the chart time changed away from 1m before that, the
effect cleanup ran with the initial no-op, the subscription stayed active,
and its 1m points kept overwriting the 1h history. Track cancellation,
unsubscribe as soon as the late subscription resolves, and ignore messages
that arrive after cleanup. Fixes #2598.
2026-10-12 09:14:31 -04:00
Mario MoharandGitHub 596f96442e fix(hub): keep the updater running when the system record lookup fails (#2588)
getRecord removed the system from the manager on any error, so a query that
timed out while the hub was stalled stopped the updater for good. The system
stayed 'up' in the database and was never polled again until a restart.
Only a record that is really gone removes the system now. (#2544)
2026-10-11 13:39:00 -04:00
Sven van GinkelandGitHub 4da7d867f2 systemd: include user journals in service logs (#2553) 2026-10-11 13:02:38 -04:00
d324ccc097 feat(agent): support custom WebSocket headers with HUB_HEADERS (#2585)
Co-authored-by: henrygd <hank@henrygd.me>
2026-10-11 11:22:37 -04:00
henrygd 7f2eb90f24 perf(agent): reuse buffer when reading intel_gpu_top samples 2026-10-11 10:44:18 -04:00
yi111andGitHub 7f63e65f22 fix(agent): parse intel_gpu_top -J arrays that omit commas between samples (#2589) 2026-10-11 10:35:56 -04:00
henrygd f8d3fe1817 fix: use omitzero for scalar JSON fields under json v2
PocketBase now marshals record JSON fields with encoding/json/v2, where
omitempty no longer omits zero numbers or false. This roughly doubled the
size of stored system_stats rows with zero-value keys. Switch scalar
fields to omitzero to restore the v1 output shape, and add a test that
compares v1 and v2 output for zero-heavy values.
2026-10-11 09:47:30 -04:00
Bharat KauravandGitHub 383e9c7072 fix(agent): widen NVMe unsafe_shutdowns to uint (#2583)
unsafe_shutdowns was uint16, so drives reporting more than 65535 unsafe
shutdowns made json.Unmarshal fail and the entire NVMe SMART record was
discarded with only "no valid SMART data found" in the logs. Widen it
to uint, matching power_cycles (#2484), and log the unmarshal error at
debug level so similar failures are diagnosable.

Fixes #2582
2026-10-11 09:17:17 -04:00
spatiumstasandhank 13bdd05934 fix: handle cached NVMe failures and empty SMART responses 2026-10-09 14:40:55 -04:00
Fuwuwuwuandhank d8b4191975 fix(agent): reset host CPU baseline after counter rollback 2026-10-09 14:16:35 -04:00
017ebb091a feat: surface zpool status messages in pool health (#2509)
Co-authored-by: henrygd <hank@henrygd.me>
2026-10-09 13:57:40 -04:00
b11e361799 fix(agent): prevent network counter underflow on interface removal and container restart (#2574)
Co-authored-by: hank <hank@henrygd.me>
2026-10-09 12:58:05 -04:00
Sven van GinkelandGitHub 5714643ff9 fix(site): keep last known update count in systems table when host is down (#2559) 2026-10-09 12:10:46 -04:00
Sven van GinkelandGitHub 5529d2e15e fix(agent): verify systemd on dbus before starting service monitoring (#2573) 2026-10-09 11:39:09 -04:00
henrygd e30e980854 deps: update npm / bun lockfiles 2026-10-09 11:19:45 -04:00
Sven van GinkelandGitHub 195afc10b8 deps(site): bump npm packages with security alerts (#2575) 2026-10-09 11:17:25 -04:00
henrygd d91f06f3c5 fix(hub): stop keepalive pings after prolonged agent silence
The keepalive ping on a failed fetch re-arms the read deadline without needing
a reply, so a dead peer (power loss, partition) kept its connection until TCP
gave up. Track when the agent last sent a message and only ping while that is
under maxAgentSilence (3m). A live agent always answers within interval + its
own 120s deadline, so slow agents are unaffected; a dead one is now released
by the read deadline and falls back through the normal down/SSH path.
2026-10-09 11:09:43 -04:00
Mario MoharandGitHub 7305eda972 fix(hub): ping a slow agent so its connection survives between polls (#2435) 2026-10-09 10:51:42 -04:00
bc2278e7e9 feat(agent): Handle update package check for xbps package manager (#2522)
Co-authored-by: hank <hank@henrygd.me>
2026-10-06 12:10:12 -04:00
henrygd 4fe1a0a7a4 refactor(agent): share cgroup path vars and v2 mount lookup
Drop the cpu prefix from the cgroup path vars now that memory
accounting uses them too, and extract cgroupV2Dir() for the v2 mount
lookup previously repeated in CPU, memory and the root cgroup check.
2026-10-05 14:54:29 -04:00
ef840e0e6d feat(agent): support opt-in cgroup CPU and memory accounting (#2505)
Co-authored-by: hank <hank@henrygd.me>
2026-10-05 14:52:40 -04:00
Sven van GinkelandGitHub 965518e63c fix(site): restore latency tolerance in 1m realtime charts (#2521) 2026-10-05 12:48:46 -04:00
Sven van GinkelandGitHub ca40b5b38f fix(charts): show isolated points and stop endless spinner on empty values (#2514) 2026-10-05 12:39:14 -04:00
Sven van GinkelandGitHub d89f844a2a feat(monitors): add option to ignore TLS errors for HTTPS monitors (#2500) 2026-10-05 12:01:51 -04:00
Sven van GinkelandGitHub 74c952b879 fix(agent): don't detect zypper-aptitude's apt-get wrapper as apt (#2523) 2026-10-05 11:49:05 -04:00
MarrrrrrrrryandGitHub 36c14e903d fix(agent): stop sending legacy hubs a duplicate stats payload (#2529) 2026-10-05 11:38:33 -04:00
Julio LinsandGitHub dcae7682cd fix(hub): add missing testing build tag to hub tests (#2525) 2026-10-05 10:54:21 -04:00
henrygd 7748651f5c ci: build each docker image once and push to both registries
Previously the matrix had separate entries for Docker Hub and GHCR, so
every image was built twice. Each entry now pushes to both registries
from a single build. Docker Hub is skipped when DOCKERHUB_TOKEN is
unset (e.g. forks).

Also drops the explicit latest tag on the GHCR agent image so latest
comes only from latest=auto, and lowers max-parallel to 3.
2026-10-05 10:53:02 -04:00
hankGitHubgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
4a40d1772c chore(helm): update app version to 0.21.0 (#2498)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-05 10:51:53 -04:00
henrygd ec96c13466 release 0.21.0 v0.21.0 2026-10-02 13:13:54 -04:00
henrygd e597dd94db wifi: add SKIP_WIFI env var to disable signal monitoring 2026-10-02 12:54:22 -04:00
henrygd b115e2aa6a wifi(linux): skip nl80211 when no wireless devices are registered
Check /sys/class/ieee80211 before opening netlink sockets. Looking up
the
nl80211 family while cfg80211 is not loaded makes the kernel run
modprobe,
which loads the module on hosts without wireless hardware, or fails
again
on every poll when the module is unavailable.
2026-10-02 12:47:57 -04:00
henrygd 0cca9d0602 chore: update changelog 2026-10-02 12:31:52 -04:00
henrygd 49f4f652e1 i18n: update translations 2026-10-02 12:20:06 -04:00
henrygd 25132b73ff ui: paginate the package updates table 2026-10-02 11:37:18 -04:00