<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Headscale – self-hosted Tailscale control server with Cloudron SSO and a built-in DERP relay]]></title><description><![CDATA[<p dir="auto">I've packaged <a href="https://github.com/juanfont/headscale" target="_blank" rel="noopener noreferrer nofollow ugc">Headscale</a>, the open-source, self-hosted Tailscale control server, as a community app. Your devices keep using the official Tailscale apps (Linux, macOS, Windows, iOS, Android), but join a private WireGuard mesh coordinated by your Cloudron instead of Tailscale's hosted service.</p>
<p dir="auto"><img src="https://raw.githubusercontent.com/marcusquinn/cloudron-headscale-app/b0613489b549c49621f682067a06b0619277a094/media/listing-1-devices.png" alt="Headscale on Cloudron" class="img-markdown  img-fluid" /></p>
<p dir="auto"><strong>Install:</strong> add this catalog under <em>Settings → Community apps</em>, then install Headscale from the App Store:</p>
<pre><code>https://raw.githubusercontent.com/marcusquinn/cloudron-headscale-app/main/CloudronVersions.json
</code></pre>
<p dir="auto">or <code>cloudron install --versions-url &lt;that URL&gt; --location headscale.example.com</code>.</p>
<p dir="auto"><strong>What fits in with Cloudron</strong></p>
<ul>
<li><strong>Single sign-on:</strong> <code>tailscale up --login-server https://headscale.example.com</code> opens a Cloudron login. The app's access control decides who can add devices, and Headscale creates a user for each person on first sign-in.</li>
<li><strong>Pre-auth keys</strong> for servers and headless devices, created with the <code>headscale</code> CLI in the app's Terminal.</li>
<li><strong>One HTTPS domain</strong> carries the control protocol, Noise and the embedded DERP relay through Cloudron's reverse proxy. The only extra port is STUN on UDP <strong>3480</strong> by default (3478 is Cloudron's TURN port, and the NetBird package's optional STUN port defaults to 3479).</li>
<li><strong>Backups:</strong> the SQLite database, server keys and <code>config.yaml</code> live in <code>/app/data</code>, so a restore brings back the same server identity and enrolled devices keep working.</li>
</ul>
<p dir="auto"><strong>Good to know</strong></p>
<ul>
<li>Headscale has no web interface. You manage users, devices, routes and exit nodes with <code>headscale</code> in the Terminal; the README has the common commands.</li>
<li>A sign-in link only works while <code>tailscale up</code> is still waiting, and Headscale replaces it every 15 minutes. If you see "Gone: Your session has expired", run <code>tailscale up</code> again.</li>
<li>Devices connect directly where they can and fall back to the embedded relay. Tailscale's public relays stay in the config as a second fallback; you can remove them to rely only on your server. Disabling the STUN port disables the embedded relay.</li>
<li><code>config.yaml</code> is yours to edit (DNS, ACL policy, relays). The package reapplies only the keys it owns: server URL, listeners, the relay switch and the SSO block.</li>
<li>The image uses the checksum-verified upstream release binary on a digest-pinned Cloudron base image. Images and the catalog carry GitHub build provenance.</li>
</ul>
<p dir="auto"><strong>Tested</strong> on Cloudron 9.1 with Tailscale 1.104.1 clients: enrolment by SSO and pre-auth key, direct connections, relay-only connections through the embedded DERP server, restart, backup and restore, and an update between builds.</p>
<p dir="auto"><strong>Links</strong></p>
<ul>
<li>Package, setup guide and issues: <a href="https://github.com/marcusquinn/cloudron-headscale-app" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/marcusquinn/cloudron-headscale-app</a></li>
<li>Headscale docs: <a href="https://headscale.net/stable/" target="_blank" rel="noopener noreferrer nofollow ugc">https://headscale.net/stable/</a></li>
</ul>
<p dir="auto">This is a first release, so feedback is welcome, especially from people running it with many devices, subnet routers or exit nodes. I maintain the package independently of the Headscale project and I'm not affiliated with Tailscale Inc.; please report packaging problems on the package repo rather than upstream.</p>
]]></description><link>https://forum.cloudron.io/topic/16152/headscale-self-hosted-tailscale-control-server-with-cloudron-sso-and-a-built-in-derp-relay</link><generator>RSS for Node</generator><lastBuildDate>Mon, 19 Oct 2026 10:28:17 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/16152.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Oct 2026 20:19:10 GMT</pubDate><ttl>60</ttl></channel></rss>