#1117209 ITP: headscale -- An open source, self-hosted implementation of the Tailscale control server

#1117209#5
Date:
2025-10-04 21:11:53 UTC
From:
To:
* Package name    : headscale
  Version         : 0.26.0-1
  Upstream Author : Juan Font
* URL             : https://github.com/juanfont/headscale
* License         : BSD-3-clause
  Programming Lang: Go
  Description     : An open source, self-hosted implementation of the Tailscale control server

 Headscale aims to implement a self-hosted, open source alternative to
 the Tailscale (https://tailscale.com/) control server. Headscale's goal
 is to provide self-hosters and hobbyists with an open-source server
 they can use for their projects and labs. It implements a narrow scope,
 a *single* Tailscale network (tailnet), suitable for a personal use, or
 a small open-source organisation.
 .
 About Tailscale:
 .
 Tailscale is a modern VPN (https://tailscale.com/) built on top of
 Wireguard (https://www.wireguard.com/). It works like an overlay
 network (https://tailscale.com/blog/how-tailscale-works/) between the
 computers of your networks - using NAT traversal
 (https://tailscale.com/blog/how-nat-traversal-works/).
 .
 Everything in Tailscale is Open Source, except the GUI clients for
 proprietary OS (Windows and macOS/iOS), and the control server.
 .
 The control server works as an exchange point of Wireguard public keys
 for the nodes in the Tailscale network. It assigns the IP addresses of
 the clients, creates the boundaries between each user, enables sharing
 machines between users, and exposes the advertised routes of your nodes.
 .
 A Tailscale network (tailnet) (https://tailscale.com/kb/1136/tailnet/)
 is private network which Tailscale assigns to a user in terms of private
 users or an organisation.

#1117209#12
Date:
2026-04-11 15:11:29 UTC
From:
To:
I noticed this ITP after doing some initial packaging [1].

This is definitely dependent on getting tailscale in, too, and I have
some progress on that, too [2].

There might be some relatively simple changes that could cut down the
volume of dependencies.  Tailscale is good about having ts_omit_*
to disable features, and I suspect that a few strategic new go tags
might cut the number of dependencies a lot.

The current package builds and runs (I am running it.).

Best,
Antonio


[1] https://salsa.debian.org/aerusso/headscale
[2] https://salsa.debian.org/aerusso/golang-tailscale.com-tailscale

#1117209#17
Date:
2026-04-11 19:18:56 UTC
From:
To:
Awesome!
improving dh-make-golang to make it easier to package the dependencies.
Progress has been slow and tedious on that front.

Very cool.  I'm guessing we'll have to chip away at packaging those
vendorized dependencies before the Debian Go team will be happy
publishing headscale.  In the meantime, we could use an Ubuntu PPA
<https://launchpad.net/~headscale/+archive/ubuntu/ppa> or openSUSE Build
Service <https://wiki.debian.org/OpenSuseBuildService> to make rough
drafts (with the vendorized sources) available to the public for testing
and feedback.  What do you think?

I think it would be useful to pick a (temporary?) Salsa project that
both of us can access.  Options:

   * We could make yours the temporary home.
   * I gave you access to my repo; we could make that the temporary home.
   * We could create
<https://salsa.debian.org/go-team/packages/headscale> now, but I'm not
sure if @go-team reserves that namespace for already published (or
imminent) packages.
   * I created <https://salsa.debian.org/headscale-team> and gave you
access.  We can move any projects from @headscale-team to @go-team once
they're ready to upload to Debian.

I think I prefer that last option.  Thoughts?

Thanks,
Richard

#1117209#22
Date:
2026-04-11 19:33:54 UTC
From:
To:
I can certainly imagine!  I'm quite happy to work from the top down,
and meet you in the middle.

I neglected to mention it, but I have a (very crude, not even really
worth sharing) packaging of bufbuilder [1], which is also necessary for
headscale.

I've been meaning to look at openSUSE build services. I have
no objection to that (and will look into it a bit).

Let's go with that, then!

My progress on this will probably be "bursty."  Like, I'll probably
be AWOL for a while after this, but I wanted to make sure that others
can see what is happening/maybe chip in/use what progress I've been
able to make.


Best,
Antonio

[1] https://github.com/bufbuild/buf.git

#1117209#27
Date:
2026-04-12 04:56:19 UTC
From:
To:
headscale-team/headscale.  Let's also use the headscale-team namespace
to work on new packages for headscale dependencies until we think
they're ready, then move them to @go-team.

For anyone else paying attention to this bug report: Ping me if you want
to help prune or package dependencies and need access to the
@headscale-team group.  (I would invite @go-team to the group, but I'm
not sure if that will fire off hundreds of invitation emails to all of
the @go-team members.  I might try later; apologies in advance if it
spams everyone.)

No problem, that's expected for open source work.

Thank you for sharing!