<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Self-Hosted on E7Coding</title><link>https://www.e7coding.com/en/tags/self-hosted/</link><description>Recent content in Self-Hosted on E7Coding</description><generator>Hugo</generator><language>en</language><managingEditor>Joy</managingEditor><webMaster>Joy</webMaster><lastBuildDate>Tue, 16 Jun 2026 13:00:00 +0800</lastBuildDate><atom:link href="https://www.e7coding.com/en/tags/self-hosted/index.xml" rel="self" type="application/rss+xml"/><item><title>Joining Devices to Self-Hosted Headscale: From tailscale up to headscale-ui Management</title><link>https://www.e7coding.com/en/posts/tailscale-device-join/</link><pubDate>Tue, 16 Jun 2026 13:00:00 +0800</pubDate><author>Joy</author><guid>https://www.e7coding.com/en/posts/tailscale-device-join/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Background: the &lt;a href="https://www.e7coding.com/en/posts/tailscale-intro/"&gt;prologue&lt;/a&gt; explained the principles, &lt;a href="https://www.e7coding.com/en/posts/headscale-ui-setup/"&gt;headscale-ui&lt;/a&gt; added a management UI, and &lt;a href="https://www.e7coding.com/en/posts/self-hosted-derp/"&gt;self-hosted DERP&lt;/a&gt; moved the relay closer. This final post covers the most common daily operation: &lt;strong&gt;how a new device logs into self-hosted Headscale with the Tailscale client and is managed in headscale-ui&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Adding a Web UI to Headscale: headscale-ui Setup Notes</title><link>https://www.e7coding.com/en/posts/headscale-ui-setup/</link><pubDate>Tue, 16 Jun 2026 11:00:00 +0800</pubDate><author>Joy</author><guid>https://www.e7coding.com/en/posts/headscale-ui-setup/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Background: in the &lt;a href="https://www.e7coding.com/en/posts/tailscale-intro/"&gt;prologue&lt;/a&gt;, I explained the principles of Tailscale and self-hosted Headscale. Assume you already have Headscale running. Native Headscale is &lt;strong&gt;CLI-only&lt;/strong&gt;: adding nodes, approving devices, creating users, and configuring subnet routes all require SSH and &lt;code&gt;headscale&lt;/code&gt; commands. Once you have more devices, this becomes annoying. &lt;a href="https://github.com/gurucomputing/headscale-ui" target="_blank" rel="noopener noreferrer"&gt;headscale-ui&lt;/a&gt; is a static web frontend built by the community. It calls the Headscale API directly and brings these operations into the browser. This post records installation and two reverse-proxy / login pitfalls.&lt;/p&gt;</description></item></channel></rss>