Skip to content

Add legacy desktop app options to the Linux install instructions - #751

Open
pappz wants to merge 2 commits into
mainfrom
feat/linux-legacy-desktop-app-distros
Open

Add legacy desktop app options to the Linux install instructions#751
pappz wants to merge 2 commits into
mainfrom
feat/linux-legacy-desktop-app-distros

Conversation

@pappz

@pappz pappz commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

The desktop app ships in two mutually-exclusive builds: the current one links GTK 4.14+ and WebKitGTK 6.0, and a legacy one links GTK 3 and WebKit2GTK 4.1 for releases without WebKitGTK 6.0. Both use the netbird-ui package name, so the legacy build is served from its own repository path.

Add the two distro options that need it. The CLI still comes from the regular repository, so both are registered. On Ubuntu the legacy desktop app needs the universe component, enabled behind an ID check because universe is an Ubuntu-only shortcut that Debian rejects. On RHEL 9 the EPEL repository is still required, since it provides WebKit2GTK 4.1.

localhost_3000_peers (1) ## Issue ticket number and link

Documentation

Select exactly one:

  • I added/updated documentation for this change
  • Documentation is not needed for this change (explain why)

Docs PR URL (required if "docs added" is checked)

Paste the PR link from https://github.com/netbirdio/docs here:

https://github.com/netbirdio/docs/pull/__

E2E tests

Optional: override the image tags used by the Playwright e2e workflow.
Defaults to main when omitted.

management-cloud-tag: main
reverse-proxy-tag: main

Summary by CodeRabbit

  • New Features
    • Added an APT installation option for Ubuntu 22.04 and Debian 12.
    • Added guided installation for the command-line client and legacy GTK3 desktop application.
    • Automatically configures the stable repository and enables Ubuntu’s Universe component when required.
    • Included compatibility guidance for supported Ubuntu and Debian versions.

The desktop app ships in two mutually-exclusive builds: the current one
links GTK 4.14+ and WebKitGTK 6.0, and a legacy one links GTK 3 and
WebKit2GTK 4.1 for releases without WebKitGTK 6.0. Both use the netbird-ui
package name, so the legacy build is served from its own repository path.

Add the two distro options that need it. The CLI still comes from the
regular repository, so both are registered. On Ubuntu the legacy desktop
app needs the universe component, enabled behind an ID check because
`universe` is an Ubuntu-only shortcut that Debian rejects. On RHEL 9 the
EPEL repository is still required, since it provides WebKit2GTK 4.1.
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 23298702-9103-4a5d-ae75-d8f14dfa0004

📥 Commits

Reviewing files that changed from the base of the PR and between 5987b6b and 037ce68.

📒 Files selected for processing (1)
  • src/modules/setup-netbird-modal/LinuxTab.tsx

📝 Walkthrough

Walkthrough

LinuxTab.tsx adds an APT installation option for Ubuntu 22.04 and Debian 12. The option configures the stable repository, enables Ubuntu universe when required, installs the CLI or GTK3 desktop package, and documents version support.

Changes

Legacy APT installation

Layer / File(s) Summary
APT distro option
src/modules/setup-netbird-modal/LinuxTab.tsx
The new option configures the stable repository, conditionally enables Ubuntu universe, installs the CLI or netbird-ui-gtk3, and documents compatibility for older and newer releases.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 037ce

This change adds legacy Linux desktop-app installation options without evidence of a concrete correctness or production-impact risk; no actionable merge-blocking risk remains after normal checks and review.

Possibly related PRs

Suggested reviewers: braginini

Poem

A rabbit hops where APT commands run,
Ubuntu and Debian share the sun.
Repositories open, packages land,
GTK3 waits at the command’s hand.
CLI and desktop cross the sand.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: adding legacy desktop app options to Linux installation instructions.
Description check ✅ Passed The description explains the change and testing context, but it omits the issue ticket and an explanation for why documentation is not needed.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/linux-legacy-desktop-app-distros

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

src/modules/setup-netbird-modal/LinuxTab.tsx

Oops! Something went wrong! :(

ESLint: 9.39.5

TypeError: Converting circular structure to JSON
--> starting at object with constructor 'Object'
| property 'configs' -> object with constructor 'Object'
| property 'flat' -> object with constructor 'Object'
| ...
| property 'plugins' -> object with constructor 'Object'
--- property 'react' closes the circle
Referenced from: /.eslintrc.json
at JSON.stringify ()
at /node_modules/@eslint/eslintrc/dist/eslintrc.cjs:2255:45
at Array.map ()
at ConfigValidator.formatErrors (/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:2246:23)
at ConfigValidator.validateConfigSchema (/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:2277:84)
at ConfigArrayFactory._normalizeConfigData (/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3123:19)
at ConfigArrayFactory._loadConfigData (/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3088:21)
at ConfigArrayFactory._loadExtendedShareableConfig (/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3393:21)
at ConfigArrayFactory._loadExtends (/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3261:25)
at ConfigArrayFactory._normalizeObjectConfigDataBody (/node_modules/@eslint/eslintrc/dist/eslintrc.cjs:3199:25)
(node:2) ESLintRCWarning: You are using an eslintrc configuration file, which is deprecated and support will be removed in v10.0.0. Please migrate to an eslint.config.js file. See https://eslint.org/docs/latest/use/configure/migration-guide for details. An eslintrc configuration file is used because you have the ESLINT_USE_FLAT_CONFIG environment variable set to false. If you want to use an eslint.config.js file, remove the environment variable. If you want to find the location of the eslintrc configuration file, use the --debug flag.
(Use node --trace-warnings ... to show where the warning was created)


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/modules/setup-netbird-modal/LinuxTab.tsx`:
- Around line 60-71: Pin every legacy GTK3 netbird-ui installation to the GTK3
package source: in src/modules/setup-netbird-modal/LinuxTab.tsx lines 60-71,
retain YUM_GTK3_REPOSITORY and make the rhel-gtk3 DNF transaction prefer
netbird-gtk3 or disable the regular netbird repository; in lines 100-115, update
the APT installation to target the gtk3 suite explicitly; and in lines 143-150,
apply the same explicit DNF selection to the RHEL 9 GTK3 path.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d63a4dc9-00f1-4652-9a75-abb133c3bc5b

📥 Commits

Reviewing files that changed from the base of the PR and between 49582ff and 5987b6b.

📒 Files selected for processing (1)
  • src/modules/setup-netbird-modal/LinuxTab.tsx

Comment thread src/modules/setup-netbird-modal/LinuxTab.tsx Outdated
The GTK3 build shipped under its own netbird-ui-gtk3 name with
Conflicts/Replaces on netbird-ui, so it coexists with the current build in
the regular repository. The separate repository paths the previous commit
assumed were never created: dists/gtk3 and yum-gtk3/$basearch both 404, and
the yum repository is flat rather than per-basearch. Drop them and install
netbird-ui-gtk3 from the regular repository instead.

Verified in Docker that the rendered commands install netbird 0.77.0 and
netbird-ui-gtk3 0.77.0 on Ubuntu 22.04 and Debian 12.

Remove the RHEL 9 option: the RPM requires webkit2gtk4.1 (or
libwebkit2gtk-4_1-0), but RHEL 9 only ships webkit2gtk3, which provides the
4.0 API, and EPEL does not carry 4.1 either, so dnf cannot resolve it. The
general RHEL entry already directs version 9 users to the CLI.

The desktop app is published for x86_64 only, which the install step already
notes for every distribution that offers it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

1 participant