Unactioned Review Feedback
Source PR: #2147
File: .agents/services/networking/netbird.md
Reviewers: coderabbit
Findings: 5
Max severity: critical
MEDIUM: coderabbit (coderabbitai[bot])
File: .agents/services/networking/netbird.md:87
⚠️ Potential issue | 🟠 Major
curl | bash with an unversioned latest URL is a supply-chain risk in an automated provisioning context.
Because bash: true is enabled in this subagent's frontmatter, AI workers can execute the shell code blocks directly. The quickstart URL getting-started.sh is both unversioned (latest) and piped directly to bash — if the CDN or release is tampered with, every AI-provisioned worker would silently execute attacker-controlled code. The same pattern repeats across multiple client install sections (lines 156, 185, 193, 237).
Recommended mitigations:
- Pin the script to a specific release tag instead of
latest.
- Add a verification step (checksum or signature) before executing.
- In automated pipelines, prefer the package-manager install path (
apt/brew) over the bootstrap script.
🛡️ Proposed safer quickstart pattern
-# Set your domain and run the installer
-export NETBIRD_DOMAIN=netbird.example.com
-curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bash
+# Set your domain and run the installer (pin to a specific version for reproducibility)
+export NETBIRD_DOMAIN=netbird.example.com
+NETBIRD_VERSION="v0.35.0" # pin to verified release
+curl -fsSL "https://github.com/netbirdio/netbird/releases/download/${NETBIRD_VERSION}/getting-started.sh" \
+ -o /tmp/netbird-setup.sh
+# Verify checksum before executing (see release page for SHA256)
+bash /tmp/netbird-setup.sh
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/services/networking/netbird.md around lines 83 - 87, Replace the
unsafe "curl ... | bash" usage that references the unversioned
getting-started.sh and relies on frontmatter bash: true by pinning the installer
URL to a specific release tag (not latest), adding a verification step (checksum
or signature) before executing, and/or switching the automated examples to
package-manager install commands; specifically update the NETBIRD_DOMAIN
quickstart snippet and all other occurrences of getting-started.sh (noted at
lines around 156, 185, 193, 237) to use a tagged release URL and include clear
verification instructions instead of piping directly to bash.
HIGH: coderabbit (coderabbitai[bot])
File: .agents/services/networking/netbird.md:110
⚠️ Potential issue | 🟡 Minor
Minor spelling: "addon" → "add-on".
The static analysis tool flags this. "add-on" (hyphenated) is the standard form in technical writing.
✏️ Proposed fix
-For Cloudron deployments, use the PostgreSQL addon.
+For Cloudron deployments, use the PostgreSQL add-on.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
For Cloudron deployments, use the PostgreSQL add-on.
🧰 Tools
🪛 LanguageTool
[grammar] ~110-~110: Ensure spelling is correct
Context: ...loudron deployments, use the PostgreSQL addon. ### Identity Provider (IdP) **Quicks...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/services/networking/netbird.md at line 110, Change the single word
"addon" to the hyphenated form "add-on" in the Netbird documentation sentence
("For Cloudron deployments, use the PostgreSQL addon.") so it reads "For
Cloudron deployments, use the PostgreSQL add-on." Update this exact sentence in
.agents/services/networking/netbird.md to fix the spelling.
✅ Addressed in commits 57438f0 to ac365cb
CRITICAL: coderabbit (coderabbitai[bot])
File: .agents/services/networking/netbird.md:358
⚠️ Potential issue | 🟠 Major
🧩 Analysis chain
🌐 Web query:
Cloudron manifest tcpPorts udpPorts documentation
💡 Result:
In a Cloudron app manifest (CloudronManifest.json), tcpPorts and udpPorts let your app expose non-HTTP services to the outside world (Cloudron’s reverse proxy only handles the httpPort/httpPorts). Each entry defines a UI-configurable external port that Cloudron will bridge to a container port, and Cloudron will inject the chosen value into your container as an environment variable. [1]
tcpPorts
- Type: object (optional)
- Key: env var name (e.g.
SSH_PORT)
- Value fields:
title, description, defaultValue, optional containerPort, plus optional flags like portCount, readOnly, enabledByDefault. [1]
Example (TCP):
"tcpPorts": {
"SSH_PORT": {
"title": "SSH Port",
"description": "SSH Port over which repos can be pushed & pulled",
"defaultValue": 29418,
"containerPort": 22,
"portCount": 1
}
}
[1]
udpPorts
Same structure as tcpPorts, but for UDP services. [1]
Example (UDP):
"udpPorts": {
"VPN_PORT": {
"title": "VPN Port",
"description": "Port over which OpenVPN server listens",
"defaultValue": 11194,
"containerPort": 1194,
"portCount": 1
}
}
[1]
Port ranges (portCount)
Cloudron supports exposing a range of ports using portCount (notably highlighted in the Cloudron 7.7 release notes). [2]
Primary reference: Cloudron Docs → Packaging → Manifest (sections tcpPorts / udpPorts). [1]
Sources: [1] [2]
🌐 Web query:
Cloudron tcpPorts UDP support specification
💡 Result:
Cloudron supports exposing both TCP and UDP ports via the app’s CloudronManifest.json:
tcpPorts: an object whose keys are environment variable names and values describe each non-HTTP TCP service (title, description, defaultValue, optional containerPort, plus optional flags like readOnly, enabledByDefault, and portCount for ranges). The chosen/exposed port number is provided to the app via that env var; if the user disables the port, the env var is absent. [1]
udpPorts: same structure as tcpPorts, but for UDP services (with optional containerPort and portCount). [1]
Example (UDP) from the spec:
"udpPorts": {
"VPN_PORT": {
"title": "VPN Port",
"description": "Port over which OpenVPN server listens",
"defaultValue": 11194,
"containerPort": 1194,
"portCount": 1
}
}
[1]
Notes:
- Port bindings can be enabled/disabled per-port in the Cloudron UI, and you must also allow them in any external/cloud firewall. [2]
portCount (port-range allocation) is supported (introduced in Cloudron 7.7). [3]
Sources: Cloudron manifest field spec for tcpPorts/udpPorts [1], Cloudron port bindings docs [2], Cloudron 7.7 release notes (port range via portCount) [3].
tcpPorts does not support UDP — use udpPorts for the STUN service.
Cloudron's manifest has distinct fields: tcpPorts handles non-HTTP TCP services exclusively, while udpPorts is the designated field for UDP services. The claim that tcpPorts "despite the name, supports UDP" contradicts the official specification. Using tcpPorts for UDP 3478 would bind it as a TCP port, silently breaking NAT traversal—the exact critical failure documented in Section 5. The correct approach is to use udpPorts.
Proposed fix
-**Approach**: Package the dashboard + management API behind Cloudron's HTTP proxy, expose UDP 3478 via `tcpPorts` manifest option (which despite the name, supports UDP).
+**Approach**: Package the dashboard + management API behind Cloudron's HTTP proxy, expose UDP 3478 via the `udpPorts` manifest option.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
**Feasibility**: Medium complexity. The main challenge is UDP 3478 (STUN) which cannot go through Cloudron's nginx reverse proxy.
**Approach**: Package the dashboard + management API behind Cloudron's HTTP proxy, expose UDP 3478 via the `udpPorts` manifest option.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/services/networking/netbird.md around lines 356 - 358, The manifest
incorrectly suggests using tcpPorts for the STUN service; change the manifest to
declare UDP 3478 under the udpPorts field instead of tcpPorts so NAT traversal
works correctly. Locate references to tcpPorts and the STUN/3478 binding in the
manifest and replace them with udpPorts entries (ensuring the dashboard + API
remain behind the HTTP proxy unchanged). Verify the manifest schema usage for
udpPorts and update any documentation lines that claimed tcpPorts supports UDP
to reference udpPorts.
✅ Addressed in commits 57438f0 to ac365cb
HIGH: coderabbit (coderabbitai[bot])
File: .agents/services/networking/netbird.md:1010
⚠️ Potential issue | 🟡 Minor
🧩 Analysis chain
🏁 Script executed:
# First, let's check if the file exists and view the context around lines 400-403
if [ -f ".agents/services/networking/netbird.md" ]; then
echo "=== File exists, reading context ==="
wc -l ".agents/services/networking/netbird.md"
echo ""
echo "=== Lines 395-410 ==="
sed -n '395,410p' ".agents/services/networking/netbird.md" | cat -n
else
echo "File not found at .agents/services/networking/netbird.md"
git ls-files | grep -i netbird
fi
Repository: marcusquinn/aidevops
Length of output: 649
🌐 Web query:
NetBird CLI --disable-auto-connect flag documentation behavior
💡 Result:
netbird up --disable-auto-connect controls whether the NetBird client automatically connects when the NetBird daemon/service starts (e.g., after OS boot or netbird service restart).
- What it does (per CLI docs): when
--disable-auto-connect is enabled, “the client won’t connect automatically when the service starts.” [1]
- How to use / toggle (per v0.26.0 release notes):
- Disable auto-connect:
netbird down then netbird up --disable-auto-connect [2]
- Re-enable auto-connect:
netbird down then netbird up --disable-auto-connect=false [2]
Version note: this flag was added in NetBird v0.26.0. [2]
🌐 Web query:
NetBird force relay connection TURN debugging
💡 Result:
Forcing NetBird to use a relay (vs P2P)
- Preferred/official way to “force relay” for testing: temporarily block direct WireGuard reachability between peers (UDP to the peers’ WireGuard listen ports, often 51820) so ICE can’t form a P2P path; the session should fall back to Relayed (you can verify with
netbird status -d). The “P2P vs Relayed” fields and ICE candidate types (host/srflx/relay) are explained in the connectivity docs. [1]
- Community-reported knob (may be undocumented/experimental): set
NB_ICE_FORCE_RELAY_CONN=true on the client to force relay usage (reported to force TCP relay). Treat this as best-effort and version-dependent since it’s not currently in the official env-var reference. [2]
TURN / relay debugging checklist (what to collect + how to prove what’s broken)
-
Check what NetBird thinks is available
- Run:
netbird status -d
- Confirm whether your relay list shows STUN/TURN entries (e.g.
turn:...3478) and/or the newer NetBird Relay endpoint (often rel:// / rels://). [3]
-
Enable client-side ICE + agent debug logs (most useful for “why didn’t it relay / why didn’t it allocate”)
- Foreground run with verbose ICE logging (Linux/macOS example):
sudo netbird service stop
sudo bash -c 'PIONS_LOG_DEBUG=all NB_LOG_LEVEL=debug netbird up -F' > /tmp/netbird.log [4]
- Or generate a debug bundle:
netbird debug bundle / netbird debug for 5m ... [4]
-
If you’re specifically debugging legacy Coturn TURN
- Use NetBird’s recommended WebRTC TURN tester and confirm you get
srflx and relay candidates; if relay is missing, TURN isn’t working/reachable. [3]
- Map common
netbird status -d TURN failures to likely causes:
Allocate error response (401: Unauthorized) → TURN credentials/realm mismatch (commonly seen with Coturn auth config). [5]
allocate: attribute not found → often a TURN server/protocol/config incompatibility surfaced after upgrades (example report). [6]
-
Remember current NetBird direction
- In newer self-hosted setups, NetBird has been moving away from “Coturn for everything”; STUN can be embedded in the relay service, and NetBird’s own relay service is the primary “relayed connections” path. [7]
Sources:
[1] NetBird docs — Understanding NAT and Connectivity (how to read netbird status -d, P2P vs Relayed, ICE candidates) https://docs.netbird.io/about-netbird/understanding-nat-and-connectivity
[2] Reddit thread mentioning NB_ICE_FORCE_RELAY_CONN=true https://www.reddit.com/r/netbird/comments/1kc037u/
[3] NetBird docs — Self-hosted troubleshooting: “Debugging TURN connections” + WebRTC tester + expected candidates https://docs.netbird.io/selfhosted/troubleshooting
[4] NetBird docs — Troubleshooting client issues (NB_LOG_LEVEL, PIONS_LOG_DEBUG, foreground mode, debug bundle) https://docs.netbird.io/help/troubleshooting-client
[5] GitHub issue: TURN allocate 401 Unauthorized example netbirdio/netbird#2051
[6] GitHub issue: TURN allocate “attribute not found” example netbirdio/netbird#4662
[7] NetBird docs — Coturn-to-embedded-STUN migration note (Coturn no longer default; STUN embedded in relay) https://docs.netbird.io/selfhosted/migration/coturn-to-stun-migration
Remove or rename the misleading --disable-auto-connect comment — the flag does not force relay.
The --disable-auto-connect flag controls whether the NetBird client automatically connects when the daemon starts, not relay behavior. This has nothing to do with forcing TURN/relay connections. NetBird has no direct CLI flag to force relay; the correct approach is already shown below: netbird status --detail to check for "direct" vs "relayed" connections.
Either remove these lines entirely or rename the comment if the intent was to prevent auto-connect during debugging:
Proposed changes
Option 1 (remove):
-# Force relay (debug connectivity)
-netbird up --disable-auto-connect
-
# Check NAT traversal
netbird status --detail # Look for "direct" vs "relayed" connections
Option 2 (rename for accuracy):
-# Force relay (debug connectivity)
-netbird up --disable-auto-connect
+# Prevent auto-connect on daemon start (useful during debugging)
+netbird up --disable-auto-connect
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
# Prevent auto-connect on daemon start (useful during debugging)
netbird up --disable-auto-connect
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/services/networking/netbird.md around lines 400 - 403, Comment: The
note saying "--disable-auto-connect" forces relay is misleading. Update the
.agents/services/networking/netbird.md snippet: either remove the two lines
"netbird up --disable-auto-connect" and the preceding "Force relay (debug
connectivity)" header, or change the header and comment to accurately describe
that "--disable-auto-connect" prevents auto-connecting on daemon start (it does
not force TURN/relay); if you want to show how to check relay status, replace
with the existing correct command "netbird status --detail" and mention that it
shows "direct" vs "relayed". Reference: the netbird up invocation and the
--disable-auto-connect flag in this diff and the netbird status --detail command
shown elsewhere.
✅ Addressed in commits 57438f0 to ac365cb
HIGH: coderabbit (coderabbitai[bot])
File: .agents/services/networking/netbird.md:595
⚠️ Potential issue | 🟠 Major
Pin the Docker image tag — latest is a supply-chain risk in this provisioning context.
With bash: true, an AI worker can execute this snippet directly. netbirdio/netbird:latest resolves to whatever was most recently pushed, meaning a broken or tampered image update silently rolls out to every AI-provisioned worker.
🛡️ Proposed fix
docker run -d \
--name netbird \
--cap-add NET_ADMIN \
--cap-add SYS_ADMIN \
-v netbird-client:/etc/netbird \
- netbirdio/netbird:latest \
+ netbirdio/netbird:v0.65.1 \ # pin to a verified release tag
up --setup-key <SETUP_KEY> \
--management-url https://netbird.example.com
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
docker run -d \
--name netbird \
--cap-add NET_ADMIN \
--cap-add SYS_ADMIN \
-v netbird-client:/etc/netbird \
netbirdio/netbird:v0.65.1 \
up --setup-key <SETUP_KEY> \
--management-url https://netbird.example.com
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/services/networking/netbird.md around lines 190 - 199, The snippet
uses an unpinned Docker image reference "netbirdio/netbird:latest" which is a
supply-chain risk; update the `docker run` image to a specific immutable
identifier (either a fixed version tag like `netbirdio/netbird:vX.Y.Z` or a
content digest `netbirdio/netbird@sha256:...`) and document the chosen tag in
the README so AI workers don't pull `latest`; locate the `docker run` invocation
in this markdown (the block containing `--name netbird` and
`netbirdio/netbird:latest`) and replace the image ref accordingly, and if you
have an image-update process, add a note to rotate the pinned tag/digest when
you intentionally upgrade.
Auto-generated by quality-feedback-helper.sh scan-merged. Review each finding and either fix the code or dismiss with a reason.
Unactioned Review Feedback
Source PR: #2147
File:
.agents/services/networking/netbird.mdReviewers: coderabbit
Findings: 5
Max severity: critical
MEDIUM: coderabbit (coderabbitai[bot])
File:
⚠️ Potential issue | 🟠 Major
.agents/services/networking/netbird.md:87curl | bashwith an unversionedlatestURL is a supply-chain risk in an automated provisioning context.Because
bash: trueis enabled in this subagent's frontmatter, AI workers can execute the shell code blocks directly. The quickstart URLgetting-started.shis both unversioned (latest) and piped directly tobash— if the CDN or release is tampered with, every AI-provisioned worker would silently execute attacker-controlled code. The same pattern repeats across multiple client install sections (lines 156, 185, 193, 237).Recommended mitigations:
latest.apt/brew) over the bootstrap script.🛡️ Proposed safer quickstart pattern
🤖 Prompt for AI Agents
View comment
HIGH: coderabbit (coderabbitai[bot])
File:
⚠️ Potential issue | 🟡 Minor
.agents/services/networking/netbird.md:110Minor spelling: "addon" → "add-on".
The static analysis tool flags this. "add-on" (hyphenated) is the standard form in technical writing.
✏️ Proposed fix
📝 Committable suggestion
🧰 Tools
🪛 LanguageTool
[grammar] ~110-~110: Ensure spelling is correct
Context: ...loudron deployments, use the PostgreSQL addon. ### Identity Provider (IdP) **Quicks...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
✅ Addressed in commits 57438f0 to ac365cb
View comment
CRITICAL: coderabbit (coderabbitai[bot])
File:
⚠️ Potential issue | 🟠 Major
.agents/services/networking/netbird.md:358🧩 Analysis chain
🌐 Web query:
Cloudron manifest tcpPorts udpPorts documentation💡 Result:
In a Cloudron app manifest (
CloudronManifest.json),tcpPortsandudpPortslet your app expose non-HTTP services to the outside world (Cloudron’s reverse proxy only handles thehttpPort/httpPorts). Each entry defines a UI-configurable external port that Cloudron will bridge to a container port, and Cloudron will inject the chosen value into your container as an environment variable. [1]tcpPortsSSH_PORT)title,description,defaultValue, optionalcontainerPort, plus optional flags likeportCount,readOnly,enabledByDefault. [1]Example (TCP):
[1]
udpPortsSame structure as
tcpPorts, but for UDP services. [1]Example (UDP):
[1]
Port ranges (
portCount)Cloudron supports exposing a range of ports using
portCount(notably highlighted in the Cloudron 7.7 release notes). [2]Primary reference: Cloudron Docs → Packaging → Manifest (sections
tcpPorts/udpPorts). [1]Sources: [1] [2]
🌐 Web query:
Cloudron tcpPorts UDP support specification💡 Result:
Cloudron supports exposing both TCP and UDP ports via the app’s
CloudronManifest.json:tcpPorts: an object whose keys are environment variable names and values describe each non-HTTP TCP service (title,description,defaultValue, optionalcontainerPort, plus optional flags likereadOnly,enabledByDefault, andportCountfor ranges). The chosen/exposed port number is provided to the app via that env var; if the user disables the port, the env var is absent. [1]udpPorts: same structure astcpPorts, but for UDP services (with optionalcontainerPortandportCount). [1]Example (UDP) from the spec:
[1]
Notes:
portCount(port-range allocation) is supported (introduced in Cloudron 7.7). [3]Sources: Cloudron manifest field spec for
tcpPorts/udpPorts[1], Cloudron port bindings docs [2], Cloudron 7.7 release notes (port range viaportCount) [3].tcpPortsdoes not support UDP — useudpPortsfor the STUN service.Cloudron's manifest has distinct fields:
tcpPortshandles non-HTTP TCP services exclusively, whileudpPortsis the designated field for UDP services. The claim thattcpPorts"despite the name, supports UDP" contradicts the official specification. UsingtcpPortsfor UDP 3478 would bind it as a TCP port, silently breaking NAT traversal—the exact critical failure documented in Section 5. The correct approach is to useudpPorts.Proposed fix
📝 Committable suggestion
🤖 Prompt for AI Agents
✅ Addressed in commits 57438f0 to ac365cb
View comment
HIGH: coderabbit (coderabbitai[bot])
File:
⚠️ Potential issue | 🟡 Minor
.agents/services/networking/netbird.md:1010🧩 Analysis chain
🏁 Script executed:
Repository: marcusquinn/aidevops
Length of output: 649
🌐 Web query:
NetBird CLI --disable-auto-connect flag documentation behavior💡 Result:
netbird up --disable-auto-connectcontrols whether the NetBird client automatically connects when the NetBird daemon/service starts (e.g., after OS boot ornetbird service restart).--disable-auto-connectis enabled, “the client won’t connect automatically when the service starts.” [1]netbird downthennetbird up --disable-auto-connect[2]netbird downthennetbird up --disable-auto-connect=false[2]Version note: this flag was added in NetBird v0.26.0. [2]
🌐 Web query:
NetBird force relay connection TURN debugging💡 Result:
Forcing NetBird to use a relay (vs P2P)
netbird status -d). The “P2P vs Relayed” fields and ICE candidate types (host/srflx/relay) are explained in the connectivity docs. [1]NB_ICE_FORCE_RELAY_CONN=trueon the client to force relay usage (reported to force TCP relay). Treat this as best-effort and version-dependent since it’s not currently in the official env-var reference. [2]TURN / relay debugging checklist (what to collect + how to prove what’s broken)
Check what NetBird thinks is available
netbird status -dturn:...3478) and/or the newer NetBird Relay endpoint (oftenrel:///rels://). [3]Enable client-side ICE + agent debug logs (most useful for “why didn’t it relay / why didn’t it allocate”)
sudo netbird service stopsudo bash -c 'PIONS_LOG_DEBUG=all NB_LOG_LEVEL=debug netbird up -F' > /tmp/netbird.log[4]netbird debug bundle/netbird debug for 5m ...[4]If you’re specifically debugging legacy Coturn TURN
srflxandrelaycandidates; ifrelayis missing, TURN isn’t working/reachable. [3]netbird status -dTURN failures to likely causes:Allocate error response (401: Unauthorized)→ TURN credentials/realm mismatch (commonly seen with Coturn auth config). [5]allocate: attribute not found→ often a TURN server/protocol/config incompatibility surfaced after upgrades (example report). [6]Remember current NetBird direction
Sources:
[1] NetBird docs — Understanding NAT and Connectivity (how to read
netbird status -d, P2P vs Relayed, ICE candidates) https://docs.netbird.io/about-netbird/understanding-nat-and-connectivity[2] Reddit thread mentioning
NB_ICE_FORCE_RELAY_CONN=truehttps://www.reddit.com/r/netbird/comments/1kc037u/[3] NetBird docs — Self-hosted troubleshooting: “Debugging TURN connections” + WebRTC tester + expected candidates https://docs.netbird.io/selfhosted/troubleshooting
[4] NetBird docs — Troubleshooting client issues (NB_LOG_LEVEL, PIONS_LOG_DEBUG, foreground mode, debug bundle) https://docs.netbird.io/help/troubleshooting-client
[5] GitHub issue: TURN allocate 401 Unauthorized example netbirdio/netbird#2051
[6] GitHub issue: TURN allocate “attribute not found” example netbirdio/netbird#4662
[7] NetBird docs — Coturn-to-embedded-STUN migration note (Coturn no longer default; STUN embedded in relay) https://docs.netbird.io/selfhosted/migration/coturn-to-stun-migration
Remove or rename the misleading
--disable-auto-connectcomment — the flag does not force relay.The
--disable-auto-connectflag controls whether the NetBird client automatically connects when the daemon starts, not relay behavior. This has nothing to do with forcing TURN/relay connections. NetBird has no direct CLI flag to force relay; the correct approach is already shown below:netbird status --detailto check for"direct"vs"relayed"connections.Either remove these lines entirely or rename the comment if the intent was to prevent auto-connect during debugging:
Proposed changes
Option 1 (remove):
Option 2 (rename for accuracy):
📝 Committable suggestion
🤖 Prompt for AI Agents
✅ Addressed in commits 57438f0 to ac365cb
View comment
HIGH: coderabbit (coderabbitai[bot])
File:
⚠️ Potential issue | 🟠 Major
.agents/services/networking/netbird.md:595Pin the Docker image tag —
latestis a supply-chain risk in this provisioning context.With
bash: true, an AI worker can execute this snippet directly.netbirdio/netbird:latestresolves to whatever was most recently pushed, meaning a broken or tampered image update silently rolls out to every AI-provisioned worker.🛡️ Proposed fix
📝 Committable suggestion
🤖 Prompt for AI Agents
View comment
Auto-generated by
quality-feedback-helper.sh scan-merged. Review each finding and either fix the code or dismiss with a reason.