Symptom: each app restart that didn't go through Stop daemon left
an orphan mycelium running as root, claiming the TUN \"mycelium\",
UDP/9650 (multicast discovery) and TCP/8990 (JSON-RPC, hardcoded
in 0.6.1 — no flag). Subsequent starts panicked with EBUSY or
\"Address in use\" on whichever port the orphan held.
We can't SIGKILL the orphan from user-space (root process). Move
the cleanup into an elevated context that runs in the same pkexec
authentication as the daemon spawn:
/usr/bin/mycellium-bootstrap (new shell script in the .deb)
pkill -9 -x mycelium
ip link del mycelium / mycel0
exec /usr/bin/mycelium \"\$@\"
The polkit policy now annotates this exact path with
auth_admin_keep so a single password prompt covers every
subsequent restart in the user's session.
Sidecar: when /usr/bin/mycellium-bootstrap exists (production
install) we hand pkexec that path instead of the bare daemon.
\`pnpm tauri dev\` falls back to the unwrapped binary path.
52 lines
1.3 KiB
JSON
52 lines
1.3 KiB
JSON
{
|
|
"$schema": "https://schema.tauri.app/config/2",
|
|
"productName": "Mycellium UI",
|
|
"version": "0.1.0",
|
|
"identifier": "tech.threefold.mycellium-ui",
|
|
"build": {
|
|
"beforeDevCommand": "pnpm dev",
|
|
"devUrl": "http://localhost:1420",
|
|
"beforeBuildCommand": "pnpm build",
|
|
"frontendDist": "../dist"
|
|
},
|
|
"app": {
|
|
"withGlobalTauri": false,
|
|
"windows": [
|
|
{
|
|
"label": "main",
|
|
"title": "Mycellium",
|
|
"width": 1100,
|
|
"height": 720,
|
|
"minWidth": 800,
|
|
"minHeight": 600,
|
|
"resizable": true
|
|
}
|
|
],
|
|
"security": {
|
|
"csp": null
|
|
}
|
|
},
|
|
"bundle": {
|
|
"active": true,
|
|
"targets": ["deb", "appimage"],
|
|
"category": "Utility",
|
|
"shortDescription": "Mycelium overlay network client",
|
|
"longDescription": "Desktop GUI for the Mycelium end-to-end encrypted IPv6 overlay network.",
|
|
"icon": [
|
|
"icons/32x32.png",
|
|
"icons/128x128.png",
|
|
"icons/128x128@2x.png"
|
|
],
|
|
"externalBin": ["binaries/mycelium"],
|
|
"linux": {
|
|
"deb": {
|
|
"depends": ["pkexec | policykit-1"],
|
|
"files": {
|
|
"/usr/share/polkit-1/actions/tech.threefold.mycellium-ui.policy": "packaging/polkit/tech.threefold.mycellium-ui.policy",
|
|
"/usr/bin/mycellium-bootstrap": "packaging/mycellium-bootstrap"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|