diff --git a/rust/gui-client/src-tauri/linux_package/postinst b/rust/gui-client/src-tauri/linux_package/postinst
index 3f149a4a5..d721d5e4b 100755
--- a/rust/gui-client/src-tauri/linux_package/postinst
+++ b/rust/gui-client/src-tauri/linux_package/postinst
@@ -1,6 +1,4 @@
#!/usr/bin/env bash
-# Usage: dpkg will call this after installing our files
-# This must be idempotent
set -euo pipefail
diff --git a/rust/gui-client/src-tauri/linux_package/preinst b/rust/gui-client/src-tauri/linux_package/preinst
index 9f07d16f6..021a91bc7 100755
--- a/rust/gui-client/src-tauri/linux_package/preinst
+++ b/rust/gui-client/src-tauri/linux_package/preinst
@@ -1,6 +1,4 @@
#!/usr/bin/env bash
-# Usage: dpkg will call this after installing our files
-# This must be idempotent
set -euo pipefail
diff --git a/rust/gui-client/src-tauri/linux_package/prerm b/rust/gui-client/src-tauri/linux_package/prerm_deb
similarity index 73%
rename from rust/gui-client/src-tauri/linux_package/prerm
rename to rust/gui-client/src-tauri/linux_package/prerm_deb
index bb7c32bc9..ff7eceb6a 100755
--- a/rust/gui-client/src-tauri/linux_package/prerm
+++ b/rust/gui-client/src-tauri/linux_package/prerm_deb
@@ -1,5 +1,4 @@
#!/usr/bin/env bash
-# Usage: dpkg will call this after installing our files
set -euo pipefail
diff --git a/rust/gui-client/src-tauri/linux_package/prerm_rpm b/rust/gui-client/src-tauri/linux_package/prerm_rpm
new file mode 100755
index 000000000..e3044c032
--- /dev/null
+++ b/rust/gui-client/src-tauri/linux_package/prerm_rpm
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+SERVICE_NAME="firezone-client-tunnel"
+
+# `rpm` calls `prerm` of the old package _after_ it has installed the new package.
+# The first parameter indicates, how many other instances of the package are still installed.
+# If we are being upgraded, this will be 1.
+# In that case, we do _not_ want to stop the systemd service, otherwise the user will be greeted with "Firezone Tunnel service is not running".
+if [ "$1" == 1 ]; then
+ return
+fi
+
+sudo systemctl disable "$SERVICE_NAME"
+sudo systemctl stop "$SERVICE_NAME"
diff --git a/rust/gui-client/src-tauri/tauri.conf.json b/rust/gui-client/src-tauri/tauri.conf.json
index b11fd0235..80c904af2 100644
--- a/rust/gui-client/src-tauri/tauri.conf.json
+++ b/rust/gui-client/src-tauri/tauri.conf.json
@@ -11,7 +11,7 @@
"deb": {
"preInstallScript": "./linux_package/preinst",
"postInstallScript": "./linux_package/postinst",
- "preRemoveScript": "./linux_package/prerm",
+ "preRemoveScript": "./linux_package/prerm_deb",
"files": {
"/usr/lib/systemd/system/firezone-client-tunnel.service": "./linux_package/firezone-client-tunnel.service",
"/usr/lib/sysusers.d/firezone-client-tunnel.conf": "./linux_package/sysusers.conf",
@@ -21,7 +21,7 @@
},
"rpm": {
"postInstallScript": "./linux_package/postinst",
- "preRemoveScript": "./linux_package/prerm",
+ "preRemoveScript": "./linux_package/prerm_rpm",
"files": {
"/usr/lib/systemd/system/firezone-client-tunnel.service": "./linux_package/firezone-client-tunnel.service",
"/usr/lib/sysusers.d/firezone-client-tunnel.conf": "./linux_package/sysusers.conf",
diff --git a/website/src/components/Changelog/GUI.tsx b/website/src/components/Changelog/GUI.tsx
index d92139b76..a1691f74e 100644
--- a/website/src/components/Changelog/GUI.tsx
+++ b/website/src/components/Changelog/GUI.tsx
@@ -18,6 +18,12 @@ export default function GUI({ os }: { os: OS }) {
Improves reliability by caching DNS responses as per their TTL.
+ {os == OS.Linux && (
+
+ Fixes an issue where the Tunnel Service was not running after a
+ version upgrade.
+
+ )}