<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DERP on E7Coding</title><link>https://www.e7coding.com/en/tags/derp/</link><description>Recent content in DERP on E7Coding</description><generator>Hugo</generator><language>en</language><managingEditor>Joy</managingEditor><webMaster>Joy</webMaster><lastBuildDate>Tue, 16 Jun 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://www.e7coding.com/en/tags/derp/index.xml" rel="self" type="application/rss+xml"/><item><title>Self-Hosted DERP Relay: Stable 20ms Domestic Fallback for Headscale</title><link>https://www.e7coding.com/en/posts/self-hosted-derp/</link><pubDate>Tue, 16 Jun 2026 12:00:00 +0800</pubDate><author>Joy</author><guid>https://www.e7coding.com/en/posts/self-hosted-derp/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Background: I self-hosted a private network with Headscale. Most devices can connect directly through WireGuard P2P, but several machines behind symmetric NAT or carrier-grade NAT always failed NAT traversal and had to use a relay. Official Tailscale DERP relays are overseas for me, often starting at 100ms+. So I built a domestic DERP relay and brought latency down to around &lt;strong&gt;20ms&lt;/strong&gt;. This post records the full process and three pitfalls.&lt;/p&gt;</description></item></channel></rss>