Skip to content

fix(install): generate /etc/machine-id on systems without /proc - #2274

Merged
henrygd merged 2 commits into
henrygd:mainfrom
justadityaraj:fix/machine-id-freebsd
Aug 30, 2026
Merged

henrygd merged 2 commits into
henrygd:mainfrom
justadityaraj:fix/machine-id-freebsd

Conversation

@justadityaraj

@justadityaraj justadityaraj commented Aug 28, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #2148 — pfSense agent install script does not generate machine-id correctly.

Problem

The installer read a UUID from /proc, which FreeBSD-based pfSense and OPNsense systems do not provide. Shell redirection created an empty /etc/machine-id, and the file-existence guard then prevented every later installer run from repairing it.

Fix

Use the readable /proc UUID on Linux, fall back to uuidgen on FreeBSD, and skip creation when neither source exists. The guard now checks for a non-empty file, so rerunning the installer repairs IDs left empty by earlier failed installs.

User impact

Fresh pfSense/OPNsense installs receive a persistent fingerprint, and already-affected systems recover on the next installer run instead of remaining stuck with fingerprint mismatches.

Verification

  • sh -n supplemental/scripts/install-agent.sh — passed.
  • bash -n supplemental/scripts/install-agent.sh — passed.
  • Extracted installer block exercised with an existing empty ID and a uuidgen fallback — produced the expected dashless UUID.
  • git diff --check — passed.

The install script read the fingerprint UUID from
/proc/sys/kernel/random/uuid, which FreeBSD does not have. On pfSense
the redirect still created /etc/machine-id, cat failed, and the agent
was left with an empty machine-id file. The [ ! -f ] guard then skipped
regeneration on every later run.

Fall back to uuidgen when /proc is unavailable, mirroring how the
script already picks between sha256sum and FreeBSD's sha256, and leave
no file behind when neither source exists.
@justadityaraj
justadityaraj requested a review from henrygd as a code owner August 28, 2026 20:09

@henrygd henrygd left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks a lot! 👍

@henrygd
henrygd merged commit e235c99 into henrygd:main Aug 30, 2026
JuliusFreudenberger pushed a commit to JuliusFreudenberger/nix-config that referenced this pull request Sep 3, 2026
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [henrygd/beszel](https://github.com/henrygd/beszel) | minor | `0.18.8` → `0.19.0` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/12) for more information.

---

### Release Notes

<details>
<summary>henrygd/beszel (henrygd/beszel)</summary>

### [`v0.19.0`](https://github.com/henrygd/beszel/releases/tag/v0.19.0)

[Compare Source](henrygd/beszel@v0.18.8...v0.19.0)

:warning:  **Potential breaking change:** Agents now verify HTTPS certificates. If an agent connects to a hub using a self-signed or otherwise untrusted certificate, configure `CA_CERT_FILE` with the appropriate CA certificate or the connection will be rejected.

#### What's Changed

- Add ZFS pool and dataset monitoring ([#&#8203;2209](henrygd/beszel#2209))
- Add container health alerts with log excerpts in notifications ([#&#8203;2225](henrygd/beszel#2225))
- Add alerts for failed systemd services ([#&#8203;2173](henrygd/beszel#2173))
- Add alerts for CPU I/O wait and steal time ([#&#8203;2249](henrygd/beszel#2249))
- Add cumulative disk read and write totals to the Disk I/O sheet ([#&#8203;2179](henrygd/beszel#2179))
- Add Greek and Uzbek translations ([#&#8203;2034](henrygd/beszel#2034))
- Add custom root disk names and sort disks alphabetically ([#&#8203;2006](henrygd/beszel#2006))
- Improve alert security by enforcing system ownership and blocking additional internal notification URL ranges
- Improve ATA SMART warnings for critical attributes ([#&#8203;2275](henrygd/beszel#2275))
- Fix a hub crash caused by concurrent SSH client shutdown ([#&#8203;2277](henrygd/beszel#2277))
- Fix host CPU and memory totals when Docker runs in a VM on macOS or Windows ([#&#8203;2272](henrygd/beszel#2272))
- Fix multi-line `TOKEN_FILE` loading ([#&#8203;2276](henrygd/beszel#2276))
- Fix QNAP MD RAID arrays being incorrectly reported as failed ([#&#8203;2065](henrygd/beszel#2065))
- Fix Intel GPU power data disappearing between samples ([#&#8203;2256](henrygd/beszel#2256))
- Fix swap usage calculations to include cached swap ([#&#8203;2267](henrygd/beszel#2267))
- Fix agent payload failures caused by invalid UTF-8 in battery names ([#&#8203;2241](henrygd/beszel#2241))
- Fix uptime reporting inside Linux containers ([#&#8203;2180](henrygd/beszel#2180))
- Fix fan discovery on legacy hwmon devices ([#&#8203;2238](henrygd/beszel#2238))
- Fix CPU model detection on MIPS systems ([#&#8203;2138](henrygd/beszel#2138))
- Fix machine ID generation on FreeBSD and pfSense installations ([#&#8203;2274](henrygd/beszel#2274))
- Fix agent environment variable updates during reinstall ([#&#8203;2107](henrygd/beszel#2107))
- Fix the install script reporting the wrong listen address after upgrades ([#&#8203;2243](henrygd/beszel#2243))
- Fix load average precision on macOS, BSD, and Windows ([#&#8203;2245](henrygd/beszel#2245))
- Update the Go version and Go dependencies

#### New Contributors

- [@&#8203;IlyaMur](https://github.com/IlyaMur) made their first contribution in [#&#8203;2238](henrygd/beszel#2238)
- [@&#8203;alecrubin](https://github.com/alecrubin) made their first contribution in [#&#8203;2180](henrygd/beszel#2180)
- [@&#8203;toomore](https://github.com/toomore) made their first contribution in [#&#8203;2241](henrygd/beszel#2241)
- [@&#8203;mews-se](https://github.com/mews-se) made their first contribution in [#&#8203;2243](henrygd/beszel#2243)
- [@&#8203;justadityaraj](https://github.com/justadityaraj) made their first contribution in [#&#8203;2245](henrygd/beszel#2245)
- [@&#8203;wassupluke](https://github.com/wassupluke) made their first contribution in [#&#8203;2256](henrygd/beszel#2256)
- [@&#8203;ErkinjonYusupov](https://github.com/ErkinjonYusupov) made their first contribution in [#&#8203;2034](henrygd/beszel#2034)
- [@&#8203;snh](https://github.com/snh) made their first contribution in [#&#8203;2279](henrygd/beszel#2279)
- [@&#8203;spatiumstas](https://github.com/spatiumstas) made their first contribution in [#&#8203;2249](henrygd/beszel#2249)
- [@&#8203;martinstenrose](https://github.com/martinstenrose) made their first contribution in [#&#8203;2173](henrygd/beszel#2173)
- [@&#8203;mleczakm](https://github.com/mleczakm) made their first contribution in [#&#8203;2225](henrygd/beszel#2225)
- [@&#8203;santhiprakash](https://github.com/santhiprakash) made their first contribution in [#&#8203;2269](henrygd/beszel#2269)

**Full Changelog**: <henrygd/beszel@v0.18.8...v0.19.0>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTAuMSIsInVwZGF0ZWRJblZlciI6IjQzLjE1MC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.jfreudenberger.de/JuliusFreudenberger/nix-config/pulls/43
xiaoran7 pushed a commit to xiaoran7/beszel that referenced this pull request Oct 17, 2026
…ygd#2274)

* fix(install): generate /etc/machine-id on systems without /proc

The install script read the fingerprint UUID from
/proc/sys/kernel/random/uuid, which FreeBSD does not have. On pfSense
the redirect still created /etc/machine-id, cat failed, and the agent
was left with an empty machine-id file. The [ ! -f ] guard then skipped
regeneration on every later run.

Fall back to uuidgen when /proc is unavailable, mirroring how the
script already picks between sha256sum and FreeBSD's sha256, and leave
no file behind when neither source exists.

* fix(install): regenerate empty machine id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: pfSense agent install script doesn't generate machine-id correctly

2 participants