Commit Graph

1490 Commits

Author SHA1 Message Date
Vito Cappello
cf90249519 Clamp Linux battery capacity percentage (#1957) 2026-08-14 10:17:38 -04:00
Sven van Ginkel
6607d4c0d6 fix(hub): check X-Real-IP header to resolve agent's real source IP (#1973) 2026-08-14 10:13:26 -04:00
henrygd
bc55e249c4 ui: visually truncate public key on tokens settings page 2026-08-14 10:06:24 -04:00
Sven van Ginkel
977826e8f3 feat(hub): show public key in universal token settings (#2028) 2026-08-14 10:04:40 -04:00
henrygd
8450b40e0c fix: tests that were not compatible w/ new pocketbase version 2026-08-14 00:20:45 -04:00
henrygd
ac4436bea3 fix(tests): align error message after merging #2011 2026-08-13 19:27:33 -04:00
Sven van Ginkel
fa5cda83c2 fix(agent): validate HUB_URL host to prevent misleading "lookup api" DNS error (#2011) 2026-08-13 19:25:12 -04:00
Sven van Ginkel
35af36fbd2 bug: fix docker memory chart (#2027) 2026-08-13 19:21:40 -04:00
Sven van Ginkel
e380ab6917 fix(ui): prevent usage bars from overflowing card border in grid view (#2064) 2026-08-13 19:18:43 -04:00
TowyTowy
c3a432101b fix(hub): re-dial SSH-pull agents when a connection silently dies (#2126)
The per-system updater reused an SSH client across ticks and ran the data
exchange with no deadline. If a connection went half-open (dead peer that
never sends RST/FIN) or an agent accepted the session but never wrote a
response, the read in fetchDataViaSSH blocked forever. Because
StartUpdater calls update() synchronously on its ticker, a blocked read
froze the whole per-system goroutine: the ticker's subsequent ticks were
dropped, no error was returned so the system stayed "up", and the agent
was never re-dialed until the hub process restarted.

Bound each SSH data exchange with sshOperationTimeout via runWithTimeout:
on timeout the connection is torn down (unwinding the blocked read) and a
retryable error is returned, so the next tick re-dials. Also enable TCP
keep-alive on dialed connections as a backstop for genuine network death.

Fixes #2041
2026-08-13 19:04:38 -04:00
Ryan Chou
98e86b4c9c fix(agent): treat a backwards container CPU counter as a new baseline (#2205)
CalculateCpuPercentLinux subtracted the stored previous counters from the
current ones without checking direction. When a stats response is processed
after a newer one for the same container, or an accounting counter resets,
the current total reads lower and the unsigned subtraction wraps to ~2^64
instead of going negative.

On the container counter that surfaces as the reported error, and the sample
is discarded along with the container's network stats:

    cpu pct greater than 100: 1.15292150348562e+13

On the system counter it is quieter and worse: the wrapped value inflates the
divisor, so the percentage collapses toward zero and is stored as a healthy
sample rather than rejected. A synthetic rollback measures 2.7e-12 percent.

Both directions are now treated as a new baseline (0% for one sample), which
matches how the function already handles the first-run case.

CalculateCpuPercentWindows had the same unguarded subtraction and is fixed
the same way.

Fixes #2149

Co-authored-by: Ryan Chou <ryanchou1994@users.noreply.github.com>
2026-08-13 18:14:30 -04:00
henrygd
d40372842b fix(agent): guard against unsigned underflow in memory calculations (closes #1978)
Extract host memory derivation into calculateHostMemoryUsage and use
saturating subtraction to prevent uint64 underflow caused by race
conditions when reading /proc/meminfo. Also ensure UsedPercent guards
against division by zero.

Co-authored-by: Sven van Ginkel <svenvanginkel@icloud.com>
2026-08-13 17:06:10 -04:00
Rajkumar
c9b6279e61 feat(agent): add arm64 to beszel-agent-nvidia platform matrix (#2207) 2026-08-11 18:10:36 -04:00
Sven van Ginkel
9887b662ad fix(hub): refresh system details on agent reconnect ssh (#2086) 2026-08-11 18:08:18 -04:00
Kobi Hikri
71bc6f9b9f ci: attach provenance and SBOM attestations to the published images (#2159)
* ci: attach provenance and SBOM attestations to the published images

* ci: restore trailing newline at end of file
2026-08-11 18:04:39 -04:00
dependabot[bot]
87468965dc chore(deps): bump docker/metadata-action from 5 to 6 (#2201)
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5 to 6.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 17:56:29 -04:00
dependabot[bot]
db0da58ac8 chore(deps): bump docker/login-action from 3 to 4 (#2202)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 17:49:49 -04:00
dependabot[bot]
b9b3a23063 chore(deps): bump actions/setup-dotnet from 4 to 6 (#2203)
Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 4 to 6.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-dotnet
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 17:49:28 -04:00
dependabot[bot]
ac34e58113 chore(deps): bump actions/checkout from 4 to 7 (#2200)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 17:48:24 -04:00
dependabot[bot]
3c8703d1c0 chore(deps): bump actions/stale from 10 to 11 (#2199)
Bumps [actions/stale](https://github.com/actions/stale) from 10 to 11.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v10...v11)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: '11'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-11 17:48:11 -04:00
Sven van Ginkel
01efba50a5 fix(agent): remove unsynchronized hubVersions cache causing concurrent map write panic (#2153) 2026-08-11 17:14:59 -04:00
henrygd
d0453f1ca6 update go version and packages 2026-08-11 16:53:23 -04:00
Quadrubo
7ffc6e81ce fix(agent): prevent a malformed Docker response from permanently breaking container stats (#2066)
decode() reused a single json.Decoder across responses. Once a decode errored on a truncated or malformed body (e.g. a container removed mid-request), the decoder stayed desynced and every subsequent decode failed, silently stopping all container stats until the agent was restarted. Decode the buffered bytes with json.Unmarshal instead, which keeps the reusable read buffer but holds no cross-call state.

Regression from d67d638.
2026-08-11 16:40:24 -04:00
Pavel Artsishevsky
1aa9fcd31d Fixes redirect-based OAuth login when OAUTH_DISABLE_POPUP=true is set (#2171)
Switch to localStorage, which is shared across all tabs/windows of the
same origin. Also clean up the stored entry and strip the callback URL
on both success and failure paths.
2026-08-11 16:33:05 -04:00
Vito Cappello
bd52134558 fix(agent): don't warn on mdraid consistency checks (#2067) 2026-08-11 15:50:58 -04:00
Anikesh Thakur
3fac02f0c0 fix: start agent after pfSense reboot (#2214) 2026-08-11 15:44:27 -04:00
dependabot[bot]
e4c0522cae chore(deps): bump github.com/ebitengine/purego from 0.10.0 to 0.10.2 (#2191)
Bumps [github.com/ebitengine/purego](https://github.com/ebitengine/purego) from 0.10.0 to 0.10.2.
- [Release notes](https://github.com/ebitengine/purego/releases)
- [Commits](https://github.com/ebitengine/purego/compare/v0.10.0...v0.10.2)

---
updated-dependencies:
- dependency-name: github.com/ebitengine/purego
  dependency-version: 0.10.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:30:38 -04:00
dependabot[bot]
f2ccaacecb chore(deps): bump github.com/shirou/gopsutil/v4 from 4.26.3 to 4.26.7 (#2189)
Bumps [github.com/shirou/gopsutil/v4](https://github.com/shirou/gopsutil) from 4.26.3 to 4.26.7.
- [Release notes](https://github.com/shirou/gopsutil/releases)
- [Commits](https://github.com/shirou/gopsutil/compare/v4.26.3...v4.26.7)

---
updated-dependencies:
- dependency-name: github.com/shirou/gopsutil/v4
  dependency-version: 4.26.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:30:29 -04:00
dependabot[bot]
a81ce14046 chore(deps): bump docker/setup-qemu-action from 3 to 4 (#2188)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:29:47 -04:00
dependabot[bot]
6e4a2c8a3d chore(deps): bump docker/build-push-action from 5 to 7 (#2190)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v7)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:29:36 -04:00
dependabot[bot]
8cf39be6ef chore(deps): bump github.com/lxzan/gws from 1.9.1 to 1.10.1 (#2193)
Bumps [github.com/lxzan/gws](https://github.com/lxzan/gws) from 1.9.1 to 1.10.1.
- [Release notes](https://github.com/lxzan/gws/releases)
- [Commits](https://github.com/lxzan/gws/compare/v1.9.1...v1.10.1)

---
updated-dependencies:
- dependency-name: github.com/lxzan/gws
  dependency-version: 1.10.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:28:56 -04:00
dependabot[bot]
146ca4284c chore(deps): bump actions/setup-go from 5 to 7 (#2192)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 7.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5...v7)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:28:35 -04:00
dependabot[bot]
6eae195d9c chore(deps): bump klaasnicolaas/action-inactivity-lock (#2194)
Bumps [klaasnicolaas/action-inactivity-lock](https://github.com/klaasnicolaas/action-inactivity-lock) from 1.1.3 to 2.0.1.
- [Release notes](https://github.com/klaasnicolaas/action-inactivity-lock/releases)
- [Commits](https://github.com/klaasnicolaas/action-inactivity-lock/compare/v1.1.3...v2.0.1)

---
updated-dependencies:
- dependency-name: klaasnicolaas/action-inactivity-lock
  dependency-version: 2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:28:22 -04:00
dependabot[bot]
30bf65991b chore(deps): bump github.com/fxamacker/cbor/v2 from 2.9.0 to 2.9.2 (#2195)
Bumps [github.com/fxamacker/cbor/v2](https://github.com/fxamacker/cbor) from 2.9.0 to 2.9.2.
- [Release notes](https://github.com/fxamacker/cbor/releases)
- [Commits](https://github.com/fxamacker/cbor/compare/v2.9.0...v2.9.2)

---
updated-dependencies:
- dependency-name: github.com/fxamacker/cbor/v2
  dependency-version: 2.9.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:28:14 -04:00
dependabot[bot]
f57f5883ce chore(deps): bump goreleaser/goreleaser-action from 6 to 7 (#2187)
Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 6 to 7.
- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)
- [Commits](https://github.com/goreleaser/goreleaser-action/compare/v6...v7)

---
updated-dependencies:
- dependency-name: goreleaser/goreleaser-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-06 18:26:35 -04:00
Sven van Ginkel
0472343730 chore: add dependabot and update shoutrrr (#2070)
* chore: update shoutrrr
feat; add dependabot

* Upgrade to shoutrrr 0.16.2

* Dump shoutrrr
2026-08-06 18:24:00 -04:00
henrygd
d3a1d61955 chore: update go version and go mod tidy (#2043) 2026-05-28 14:00:27 -04:00
Sven van Ginkel
9708e24fd2 chore: update Go dependencies (#2043)
* Chore update go depencies

* update crypto package
2026-05-28 13:54:03 -04:00
henrygd
17e910a246 update docker-compose.yml examples 2026-05-19 20:20:13 -04:00
Iriome Santana
0e65a2373f feat(docker): add healthcheck to hub docker-compose example (#2001) 2026-05-19 20:13:29 -04:00
henrygd
c1c1cd1bcb ui: fix temperature chart filtering 2026-04-20 20:45:16 -04:00
Yvan Wang
cd9ea51039 fix(hub): use rfcEmail validator to allow IDN/Punycode email addresses (#1935)
valibot's email() action uses a domain-label regex that disallows the
-- sequence, so Punycode ACE labels like xn--mnchen-3ya.de (the ASCII
form of münchen.de) are incorrectly rejected.

Switching to rfcEmail() applies the RFC 5321 domain-label pattern,
which allows hyphens within labels and therefore accepts both standard
and internationalized domain names.
2026-04-18 12:23:14 -04:00
Uğur Tafralı
a71617e058 feat(agent): Add EXIT_ON_DNS_ERROR environment variable (#1929)
Co-authored-by: henrygd <hank@henrygd.me>
2026-04-17 19:26:11 -04:00
henrygd
e5507fa106 refactor(agent): clean up records package and add tests 2026-04-15 16:24:40 -04:00
Lars Lehtonen
a024c3cfd0 fix(cron): log unhandled records cleanup errors (#1909) 2026-04-15 15:33:55 -04:00
henrygd
07466804e7 ui: allow filtering systems by host and agent version (#163) 2026-04-14 16:27:38 -04:00
henrygd
981c788d6f agent: make sure prefixed ALL_PROXY env var works (#1919) 2026-04-14 14:46:43 -04:00
Rafael Marmelo
f5576759de agent: Allow agent to connect to hub via SOCKS5 proxy 2026-04-14 14:46:43 -04:00
Sven van Ginkel
be0b708064 feat(hub): add OAUTH_DISABLE_POPUP env var (#1900)
Co-authored-by: henrygd <hank@henrygd.me>
2026-04-13 20:00:05 -04:00
amarildo
ab3a3de46c deps: update shoutrrr to 0.14.3, fixing some matrix issues (#1906) 2026-04-10 18:35:20 -04:00