Repository navigation
Add Orb internet quality sensor - #2073
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
|
Thanks @asylumexp — all nine suggestions applied in 1c92710.
Re-tested from the updated branch on a fresh Debian 13 unprivileged LXC: service comes up as the Also noting my thanks to @MickLesk and @CrazyWolf13 for the |
Installs the Orb sensor from Orb's official apt repository (pkgs.orb.net) rather than the Docker deployment that is currently the only documented route for a bare LXC. The package is a single statically linked binary plus a systemd unit, so no container runtime is involved.
|
You're right — removed in 72a31b4. I'd copied the shape from One change you didn't ask for, so flagging it — I also swapped the guard from Happy to revert that bit if you'd rather keep the diff minimal. Re-tested on a fresh Debian 13 unprivileged LXC: downgraded to 1.5.2, ran |

Scripts which are clearly AI generated and not further revised by the Author of this PR (in terms of Coding Standards and Script Layout) may be closed without review.
✍️ Description
Adds a helper script for Orb (https://orb.net), a headless internet-quality sensor. It scores responsiveness, reliability and bandwidth into a single Orb Score, runs 24/7, and is free for up to five sensors.
Orb's own docs point self-hosters at Docker for this, but a container runtime is unnecessary. Orb publishes an official apt repository and the package is a single statically linked Go binary plus a systemd unit — so this installs bare-metal from the vendor's own repo via
setup_deb822_repo, with nothing pulled out of an image and nothing redistributed by this repo.Two behaviours specific to Orb shaped the script, both documented in
orb.jsonnotes:orb sensor --helpstarts a second sensor. Thesensorsubcommand does not implement--help; invoking it launches another sensor process that shares the identity and writes the same filestore, which can register a duplicate device cloud-side. So no install or update path ever invokesorb sensorto probe anything.orb versionandorb helpare safe and were verified as such.private.key+certificate.crtin/home/orb/.config/orb(mode 700) are the identity — wiping that directory registers a new sensor and orphans all history.update_script()only upgrades the package, which owns just/usr/bin/orb, so that directory is never touched.A first run leaves the sensor unlinked; the completion message tells the user to run
runuser -u orb -- orb linkand scan the QR code it prints.🔗 Related PR / Issue
Link: #
✅ Prerequisites (X in brackets)
🏗️ arm64 Support (X in brackets)
var_arm64="yes"is set. Orb ships anarm64build in the samemaincomponent asamd64(orb_1.5.3_arm64.deb), andArchitectures:is deliberately omitted from the deb822 source so apt resolves whichever the container is. I only had amd64 hardware to test on.🛠️ Type of Change (X in brackets)
README,AppName.md,CONTRIBUTING.md, or other docs.🔍 Code & Security Review (X in brackets)
CODE-AUDIT.md&CONTRIBUTING.mdguidelinesAppName.sh,AppName-install.sh,AppName.json)fetch_and_deploy_gh_release,fetch_and_deploy_codeberg_release,fetch_and_deploy_gl_release, orfetch_and_deploy_from_urlinstead ofgit pull.Update is
apt install --only-upgrade orbagainst the vendor repo, the same shape asct/evcc.shandct/grafana.shin ProxmoxVE. There is no GitHub release to fetch.🤖 AI Assistance (X in brackets)
AGENTS.mdand.github/agents/pve-script-creator.agent.mdas guidance, and the output has been reviewed and corrected to match those guidelines.📋 Additional Information (optional)
Testing — built from this branch on PVE 9.2.4 into a fresh Debian 13 unprivileged LXC (1 core / 512 MB / 4 GB) and verified:
orb.serviceactive and enabled; runs/usr/bin/orb sensoras theorbuser withAmbientCapabilities=CAP_NET_RAW, which works unprivileged — no privileged container and no feature flags needed.orb versionreportsv1.5.3./home/orb/.config/orb(700,orb:orb).1.5.2, then ran theupdate_script()commands to upgrade back to1.5.3. The service restarted cleanly andprivate.key/certificate.crtwere byte-identical (sha256 unchanged) across the upgrade.Two deliberate choices a reviewer may want to check:
postinstcreates it, and the shipped unit hardcodesUser=orb. Overriding that would fight the package.orb-update.timeris left disabled. The package ships it for Orb's daily self-upgrade, but/usr/bin/orb-updaterunsapt-get update -o Dir::Etc::sourcelist="sources.list.d/orb.list"— the legacy one-line source. Against the deb822orb.sourcesthis repo writes, that refreshes nothing (verified:W: Unable to read /etc/apt/sources.list.d/orb.list). Updating through the script is therefore the correct path, and the JSON note says so rather than recommending the timer.Licensing — Orb is proprietary freeware. Nothing is redistributed here: the script configures Orb's own package repository and installs from Orb's own servers, which is exactly what Orb's documented installer (
curl -fsSL https://pkgs.orb.net/install.sh | sh) does. Each user installs under their own grant.On the new-script criteria below — Orb is closed-source, so it has no GitHub repository, no stars and no release tarballs; those three boxes cannot honestly be ticked. The remaining criteria are met, and there is established precedent for closed-source, vendor-packaged apps in ProxmoxVE (
plex,emby,cloudflared,netbird,zerotier-one,unifi-os-server). Happy to drop this if the org would rather not carry it.📦 Application Requirements (for new scripts)
🌐 Source
orb, componentmain)