mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-12 04:10:32 +01:00
[Bug] Headscale embedded Derper Server speed slow #1070
Closed
opened 2025-12-29 02:28:06 +01:00 by adam
·
3 comments
No Branch/Tag Specified
main
update_flake_lock_action
gh-pages
kradalby/release-v0.27.2
dependabot/go_modules/golang.org/x/crypto-0.45.0
dependabot/go_modules/github.com/opencontainers/runc-1.3.3
copilot/investigate-headscale-issue-2788
copilot/investigate-visibility-issue-2788
copilot/investigate-issue-2833
copilot/debug-issue-2846
copilot/fix-issue-2847
dependabot/go_modules/github.com/go-viper/mapstructure/v2-2.4.0
dependabot/go_modules/github.com/docker/docker-28.3.3incompatible
kradalby/cli-experiement3
doc/0.26.1
doc/0.25.1
doc/0.25.0
doc/0.24.3
doc/0.24.2
doc/0.24.1
doc/0.24.0
kradalby/build-docker-on-pr
topic/docu-versioning
topic/docker-kos
juanfont/fix-crash-node-id
juanfont/better-disclaimer
update-contributors
topic/prettier
revert-1893-add-test-stage-to-docs
add-test-stage-to-docs
remove-node-check-interval
fix-empty-prefix
fix-ephemeral-reusable
bug_report-debuginfo
autogroups
logs-to-stderr
revert-1414-topic/fix_unix_socket
rename-machine-node
port-embedded-derp-tests-v2
port-derp-tests
duplicate-word-linter
update-tailscale-1.36
warn-against-apache
ko-fi-link
more-acl-tests
fix-typo-standalone
parallel-nolint
tparallel-fix
rerouting
ssh-changelog-docs
oidc-cleanup
web-auth-flow-tests
kradalby-gh-runner
fix-proto-lint
remove-funding-links
go-1.19
enable-1.30-in-tests
0.16.x
cosmetic-changes-integration
tmp-fix-integration-docker
fix-integration-docker
configurable-update-interval
show-nodes-online
hs2021
acl-syntax-fixes
ts2021-implementation
fix-spurious-updates
unstable-integration-tests
mandatory-stun
embedded-derp
prtemplate-fix
v0.28.0-beta.1
v0.27.2-rc.1
v0.27.1
v0.27.0
v0.27.0-beta.2
v0.27.0-beta.1
v0.26.1
v0.26.0
v0.26.0-beta.2
v0.26.0-beta.1
v0.25.1
v0.25.0
v0.25.0-beta.2
v0.24.3
v0.25.0-beta.1
v0.24.2
v0.24.1
v0.24.0
v0.24.0-beta.2
v0.24.0-beta.1
v0.23.0
v0.23.0-rc.1
v0.23.0-beta.5
v0.23.0-beta.4
v0.23.0-beta3
v0.23.0-beta2
v0.23.0-beta1
v0.23.0-alpha12
v0.23.0-alpha11
v0.23.0-alpha10
v0.23.0-alpha9
v0.23.0-alpha8
v0.23.0-alpha7
v0.23.0-alpha6
v0.23.0-alpha5
v0.23.0-alpha4
v0.23.0-alpha4-docker-ko-test9
v0.23.0-alpha4-docker-ko-test8
v0.23.0-alpha4-docker-ko-test7
v0.23.0-alpha4-docker-ko-test6
v0.23.0-alpha4-docker-ko-test5
v0.23.0-alpha-docker-release-test-debug2
v0.23.0-alpha-docker-release-test-debug
v0.23.0-alpha4-docker-ko-test4
v0.23.0-alpha4-docker-ko-test3
v0.23.0-alpha4-docker-ko-test2
v0.23.0-alpha4-docker-ko-test
v0.23.0-alpha3
v0.23.0-alpha2
v0.23.0-alpha1
v0.22.3
v0.22.2
v0.23.0-alpha-docker-release-test
v0.22.1
v0.22.0
v0.22.0-alpha3
v0.22.0-alpha2
v0.22.0-alpha1
v0.22.0-nfpmtest
v0.21.0
v0.20.0
v0.19.0
v0.19.0-beta2
v0.19.0-beta1
v0.18.0
v0.18.0-beta4
v0.18.0-beta3
v0.18.0-beta2
v0.18.0-beta1
v0.17.1
v0.17.0
v0.17.0-beta5
v0.17.0-beta4
v0.17.0-beta3
v0.17.0-beta2
v0.17.0-beta1
v0.17.0-alpha4
v0.17.0-alpha3
v0.17.0-alpha2
v0.17.0-alpha1
v0.16.4
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.16.0-beta7
v0.16.0-beta6
v0.16.0-beta5
v0.16.0-beta4
v0.16.0-beta3
v0.16.0-beta2
v0.16.0-beta1
v0.15.0
v0.15.0-beta6
v0.15.0-beta5
v0.15.0-beta4
v0.15.0-beta3
v0.15.0-beta2
v0.15.0-beta1
v0.14.0
v0.14.0-beta2
v0.14.0-beta1
v0.13.0
v0.13.0-beta3
v0.13.0-beta2
v0.13.0-beta1
upstream/v0.12.4
v0.12.4
v0.12.3
v0.12.2
v0.12.2-beta1
v0.12.1
v0.12.0-beta2
v0.12.0-beta1
v0.11.0
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.1
v0.6.0
v0.5.2
v0.5.1
v0.5.0
v0.4.0
v0.3.6
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
CLI
DERP
DNS
Nix
OIDC
SSH
bug
database
documentation
duplicate
enhancement
faq
good first issue
grants
help wanted
might-come
needs design doc
needs investigation
no-stale-bot
out of scope
performance
policy 📝
pull-request
question
regression
routes
stale
tags
tailscale-feature-gap
well described ❤️
wontfix
Mirrored from GitHub Pull Request
No Label
bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/headscale#1070
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @kocy33 on GitHub (Jul 22, 2025).
Is this a support request?
Is there an existing issue for this?
Current Behavior
Hello,
I am running Headscale with the embedded Derp Server on a VPS with docker compose.
The iperf3 results from the VPS shows fast speeds and with monitoring htop i can only see 10% utilization.
But I can only get approx 1mb/s - 2mb/s throughput.
I have also tried public derp servers, but this results in much worse latency and speed (700kb/s)
I run through 5g - 464xlat and local upload speed is 100mbit (so approx 12mb/s).
Is that expected speed for headscale?
Or did I misconfigure something?
My idea was to maybe run a wireguard tunnel from 5gwan home > vps.
(Because I can't open ports, since the 5G WAN sits behind CGNAT.)
Would that be useful?
My infrastructure looks like this right now.
Client announcing ipv4 routes > pfsense > 5G WAN > VPS control with embedded derp.
(IPV6 is disabled everywhere)
I also tested upload directly with iperf3 from client to vps, and that is no issue.
I tried to access with multiple outside clients. All with slow speed.
Is the embedded derp bad performance? Is it adviced to run a seperate docker container for derp server?
If so, could somone advice one?
The latency of the embedded derp server seems to be good, since i can run 6 camera streams in realtime.
(On public derp servers that is not possible.)
iperf3 from VPS result:
[ 5] 5.00-6.00 sec 119 MBytes 997 Mbits/sec
[ 7] 5.00-6.00 sec 132 MBytes 1.11 Gbits/sec
[ 9] 5.00-6.00 sec 101 MBytes 846 Mbits/sec
[ 11] 5.00-6.00 sec 124 MBytes 1.04 Gbits/sec
[SUM] 5.00-6.00 sec 476 MBytes 4.00 Gbits/sec
Expected Behavior
Little Overhead but fast speed.
Steps To Reproduce
Use embedded Derp Server.
See bad speed.
Environment
Runtime environment
Debug information
Relay derp used because no direct connection possible through 5gwan
@kradalby commented on GitHub (Jul 22, 2025):
I have no particular expectations about the speed, it shares part of the web server with Headscale, if your after performance I would try running the separate
derperbinary from Tailscale.I've never speed tested the embedded DERP, nor have we done anything to ensure its fast. I would view it as _purely for convenience.
@kocy33 commented on GitHub (Jul 23, 2025):
Aye!
I am pretty happy with headscale!
Getting it up and running was pretty drop in smooth. :)
Since this was the first time setting it up, I just wasn't sure what speeds to expect.
Since I have written this I made some more tests.
I setup the sending side with open ports and then tried the other side with a relayed side and a side with open ports.
The direct connected had full speed and one relayed side was getting approx half of it.
It made sense.
You reckon running a seperate derper server would gain more speed in general compared to the embedded?
Would running a tailscale client on the VPS that also runs the controlserver / embedded derper be beneficial?
Ill close it as a bug because its expected behavior i guess.
@kradalby commented on GitHub (Jul 23, 2025):
The main reason to have tailscale and derp on the same is that it supports a flag to validate so only nodes from your server can use the derp I believe, but I have never used it.
Otherwise I would expect better performance with a dedicated derp