gwaitsi
September 27, 2026, 7:04am
1
Just wanted to share, that i created a number of pfSense System Patches to fix various issues running on pfSense 26.07. For me, netbird is now running in parallel with a WG connection to ProtonVPN without issue.
Unfortunately, i don’t know how to create/propose them as changes within github itself.
System Patch 1
when you click the “Save” button on the Settings tab, you will received an error
“write_config called without description”
this patch fixes this issue
System Patch 2
rc.d has dependency on SERVER instead of NETWORKING.
i found that for netbird to work reliably after reboot, the default route has to be up.
System Patch 3
They seem to use standard linux config path of /var/db/netbird which is not persistent on pfsense
** not sure if this is only when Settings/Advanced/Miscellaneous Ram Disk is being used, like in my case or in general. In any case, to my understanding on pfSense it should be /cf/conf to be persistent**
System Patch 4
When you implement Patch 3, you also need to implement this patch to ensure Netbird is loaded with the correct config path to /cf/conf/netbird
System Patch 5
This patch adds a pre-start section to the code to ensure
/cf/conf/Netbird is created if it does not already exist
os-release add pfsense os version info, which now displays in the cloud dashboard
adds a wait for default route to come up.
I am using pfsense as a routing exit node, which seems to work great.
I was quite surprised at the performance when roaming on the other side of the world.
Hope this helps. If someone knows how to propose the patches to the code base, please feel free but doesn’t seem to be actively maintained now.
Assuming it’s
main ← gwaitsi:addedit-string
opened 03:20PM - 07 Oct 26 UTC
When clicking the Settings - Save Button an error
"write_config called without … description" appears. Fix to prevent this error
## Summary by CodeRabbit
* **User Experience**
* Updated the confirmation message shown after saving NetBird settings to “NetBird settings saved.”
and
main ← gwaitsi:config-persistence
opened 03:29PM - 07 Oct 26 UTC
pfSence in System/Advanced/Miscellaneous allows the use of RAM Disk for /tmp and… /var. If used the config is not persistent. the correct base path should be /cf/conf/.
- Need to ensure the path is created before installing.
- OS version is added to show the pfSense version in the netbird cloud dashboard
- put wait loop to ensure default route is up before proceeding
Just linking them, can’t do anything with them.
gwaitsi
October 10, 2026, 10:18am
3
Ah, sorry, for the the pfSense System Patches, they are here
Patch 2 is not requirest.
SERVERS comes after NETWORKING in pfSense, so is in fact, fine as-is.
opened 05:02PM - 25 Sep 26 UTC
closed 02:42PM - 07 Oct 26 UTC
I moved my fixes for pfsense into system patches to make them cleaner and easier… to view.
Description: NetBird: write_config called without description
Patch Contents:
```
--- usr/local/pkg/netbird.xml
+++ usr/local/pkg/netbird.xml
@@ -30,3 +30,4 @@
<title>VPN/NetBird</title>
<include_file>/usr/local/pkg/netbird/netbird.inc</include_file>
+ <addedit_string>NetBird settings saved</addedit_string>
<aftersaveredirect>/pkg_edit.php?xml=netbird.xml</aftersaveredirect>
```
Path Strip Count: 0
Base Directory: /
Ignore Whitespace: uncheck
Auto Apply: uncheck
Don't forget to run the Debug, before Apply.
Would be good if one of the developers could actually patch the package.
opened 04:57PM - 25 Sep 26 UTC
closed 03:05PM - 07 Oct 26 UTC
I moved my fixes for pfsense into system patches to make them cleaner and easier… to view.
Description: NetBird: use persistent package config path
Patch Contents:
```
--- usr/local/pkg/netbird/netbird.inc
+++ usr/local/pkg/netbird/netbird.inc
@@ -24,7 +24,7 @@
define('NETBIRD_BIN', '/usr/local/bin/netbird');
-define('NETBIRD_CONFIG', '/var/db/netbird/config.json');
+define('NETBIRD_CONFIG', '/cf/conf/netbird/config.json');
define('PKG_BIN', '/usr/sbin/pkg');
```
Path Strip Count: 0
Base Directory: /
Ignore Whitespace: uncheck
Auto Apply: uncheck
Don't forget to run the Debug, before Apply.
Would be good if one of the developers could actually patch the package.
opened 04:59PM - 25 Sep 26 UTC
closed 03:05PM - 07 Oct 26 UTC
I moved my fixes for pfsense into system patches to make them cleaner and easier… to view.
Description: NetBird: rc.d uses the persistent config
Patch Contents:
```
--- usr/local/etc/rc.d/netbird
+++ usr/local/etc/rc.d/netbird
@@ -12,7 +12,7 @@
pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
daemon_args="-P ${pidfile} -r -t \"${name}: daemon\""
-command_args="${daemon_args} /usr/local/bin/netbird service run --config /var/db/netbird/config.json --log-level info --daemon-addr unix:///var/run/netbird.sock --log-file /var/log/netbird/client.log"
+command_args="${daemon_args} /usr/local/bin/netbird service run --config /cf/conf/netbird/config.json --log-level info --daemon-addr unix:///var/run/netbird.sock --log-file /var/log/netbird/client.log"
run_rc_command "$1"
```
Path Strip Count: 0
Base Directory: /
Ignore Whitespace: uncheck
Auto Apply: uncheck
Don't forget to run the Debug, before Apply.
Would be good if one of the developers could actually patch the package.
opened 07:54PM - 25 Sep 26 UTC
closed 03:30PM - 07 Oct 26 UTC
I moved my fixes for pfsense into system patches to make them cleaner and easier… to view.
Description: NetBird: rc.d prestart (os-release, config dir, wait for default route)
Patch Contents:
```
--- /usr/local/etc/rc.d/netbird
+++ /usr/local/etc/rc.d/netbird
@@ -17,1 +17,37 @@
-run_rc_command "$1"
+start_precmd="netbird_prestart"
+netbird_prestart()
+{
+ echo "NetBird: pre-start checks..."
+ # ensure os-release exists before NetBird starts
+ VERSION="$(cat /etc/version)"
+ ARCH="$(uname -m)"
+ printf '%s\n' \
+ 'NAME="Netgate pfSense Plus"' \
+ "PRETTY_NAME=\"pfSense Plus $VERSION\"" \
+ "VERSION=\"$VERSION\"" \
+ "VERSION_ID=\"$VERSION\"" \
+ "BUILD_ID=\"$ARCH\"" \
+ 'ID=pfsense' \
+ 'ID_LIKE=freebsd' \
+ > /var/run/os-release
+ # Ensure persistent config directory exists
+ mkdir -p /cf/conf/netbird
+ # wait for default route (max ~10s)
+ found=0
+ i=1
+ while [ "$i" -le 10 ]; do
+ if route -n get default >/dev/null 2>&1; then
+ found=1
+ break
+ fi
+ sleep 1
+ i=$((i + 1))
+ done
+ if [ "$found" -eq 1 ]; then
+ echo "NetBird: default route detected"
+ else
+ echo "NetBird: WARNING - no default route after 10s, continuing anyway"
+ fi
+ return 0
+}
+run_rc_command "$1"
```
Path Strip Count: 0
Base Directory: /
Ignore Whitespace: uncheck
Auto Apply: uncheck
Don't forget to run the Debug, before Apply.
Would be good if one of the developers could actually patch the package.