I’m running into a persistent issue with Tailscale Funnel + Serve where the tailnet believes a “background configuration already exists,” even though the local machine shows no serve or funnel configuration at all.
This happens across clean Ubuntu installs, fresh Tailscale installs, new node IDs, and after fully deleting all local Tailscale state. At this point it seems likely that the stuck config is stored in the tailnet control plane, not on the device.
1. The Core Problem
‘tailscale funnel --https=443 on’
always returns:
‘background configuration already exists’
However, the device reports no active Funnel or Serve configuration:
‘tailscale serve status’
‘tailscale funnel status’
‘tailscale status --json | jq .ServeConfig’
All return:
‘No serve config’
‘null’
Despite this, Tailscale still directs me to a Funnel UI URL for old, deleted node IDs, such as:
https://login.tailscale.com/f/funnel?node=<old_node_id>
2. Local State Has Been Fully Deleted
I wiped the machine repeatedly and removed all known Tailscale state:
‘/var/lib/tailscale/tailscaled.state’
‘/root/.config/tailscale’
‘/var/cache/tailscale’
‘/run/tailscale/*’
‘/etc/apt/sources.list.d/tailscale.list’
‘/usr/share/keyrings/tailscale-archive-keyring.gpg’
Then:
• Reinstalled Tailscale
• Re-authenticated using a fresh authkey
• Verified the device receives a new node ID
‘tailscale’ serve works normally:
‘tailscale serve --bg 9071’
‘tailscale funnel’ still claims the phantom background config exists.
3. All Reset Paths Fail
LocalAPI reset attempts:
curl --unix-socket /var/run/tailscale/tailscaled.sock \
-X POST http://local-tailscale.sock/localapi/v0/serve/reset
Outputs:
‘invalid localapi request’
Public API reset attempts:
All variants return 404:
‘POST /api/v2/tailnet//serve/reset’
‘POST /api/v2/tailnet//serve/config/reset’
‘POST /api/v2/device//serve/reset’
Example:
‘curl -X POST \
-H “Authorization: Bearer <API_KEY>” \
https://api.tailscale.com/api/v2/tailnet//serve/config/reset’
→
‘404 page not found’
4. Evidence That the Stuck Config Is in the Control Plane
These points strongly suggest the stale Funnel background config exists in Tailscale’s backend, not locally:
• Local machine state is empty
• LocalAPI confirms no config
• Control Plane UI uses old node IDs
• Funnel resets don’t work even on a clean device
• The machine receives a new node ID, but the same Funnel error persists
This creates a loop where Funnel can’t be enabled nor fully disabled.
5. What I’m Trying to Understand
How to force-clear Funnel/Serve background configuration from the tailnet
Whether this is a known issue with the new Funnel/Serve system
Whether stale Funnel entries can remain in the control plane even after device deletion
6. Environment
• OS: Ubuntu 24.04 (Noble)
• Tailscale: 1.90.6 (also reproduced on unstable 1.91.x)
• Fresh auth keys used
• Machine reinstalled multiple times
• Tailnet type: personal (email-based)
Despite repeated reinstalls and device resets, Funnel is stuck in a phantom “background configuration exists” state. The configuration doesn’t appear locally and survives new node IDs, suggesting it may be stuck in the tailnet control plane.
