headscale

Headscale is a self-hosted open source implementation of the Tailscale control server. Built from source, signed with SLSA provenance, rebuilt daily.

Vulnerabilities
Compressed size
20 MB
Architectures
amd64, arm64
Default user
nonroot (65532)
Last built
today

Pull this image

docker pull ghcr.io/rtvkiz/minimal-headscale:latest
Repository
ghcr.io/rtvkiz/minimal-headscale
Digest
sha256:195a278ef3a774f6433beb21e62fb0b293942a8efa0cb1c92071f4c3f2529082
Built at
2026-11-12T08:38:25Z
Primary package
headscale
Entrypoint
/usr/bin/headscale
Cmd
serve
User
nonroot (65532)
Working dir
/
Architectures
x86_64, aarch64
Environment
PATH=/usr/bin:/binHOME=/tmp
Labels
org.opencontainers.image.titleminimal-headscale
org.opencontainers.image.descriptionHeadscale is a self-hosted open source implementation of the Tailscale control server. Built from source, signed with SLSA provenance, rebuilt daily.
org.opencontainers.image.urlhttps://github.com/rtvkiz/minimal
org.opencontainers.image.sourcehttps://github.com/rtvkiz/minimal/tree/main/images/headscale
org.opencontainers.image.licensesBSD-3-Clause
TagPullPublished
0.29 ghcr.io/rtvkiz/minimal-headscale:0.29 2026-11-12
0.29.7-r0 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0 2026-11-12
0.29.7-r0-20261112 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261112 2026-11-12
latest ghcr.io/rtvkiz/minimal-headscale:latest 2026-11-12
0.29-dev ghcr.io/rtvkiz/minimal-headscale:0.29-dev 2026-11-12
0.29.7-r0-20261112-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261112-dev 2026-11-12
0.29.7-r0-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-dev 2026-11-12
latest-dev ghcr.io/rtvkiz/minimal-headscale:latest-dev 2026-11-12
0.29.7-r0-20261111-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261111-dev 2026-11-11
0.29.7-r0-20261111 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261111 2026-11-11
0.29.7-r0-20261110 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261110 2026-11-10
0.29.7-r0-20261110-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261110-dev 2026-11-10
0.29.7-r0-20261108 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261108 2026-11-08
0.29.7-r0-20261108-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261108-dev 2026-11-08
0.29.7-r0-20261107 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261107 2026-11-07
0.29.7-r0-20261107-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261107-dev 2026-11-07
0.29.7-r0-20261106 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261106 2026-11-06
0.29.7-r0-20261106-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261106-dev 2026-11-06
0.29.7-r0-20261105 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261105 2026-11-05
0.29.7-r0-20261105-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261105-dev 2026-11-05
0.29.7-r0-20261104 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261104 2026-11-04
0.29.7-r0-20261104-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261104-dev 2026-11-04
0.29.7-r0-20261030 ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261030 2026-10-30
0.29.7-r0-20261030-dev ghcr.io/rtvkiz/minimal-headscale:0.29.7-r0-20261030-dev 2026-10-30
0.29.6-r0 ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0 2026-10-29
0.29.6-r0-20261029 ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261029 2026-10-29
0.29.6-r0-20261029-dev ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261029-dev 2026-10-29
0.29.6-r0-dev ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-dev 2026-10-29
0.29.6-r0-20261027 ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261027 2026-10-27
0.29.6-r0-20261027-dev ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261027-dev 2026-10-27
0.29.6-r0-20261026 ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261026 2026-10-26
0.29.6-r0-20261026-dev ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261026-dev 2026-10-26
0.29.6-r0-20261025 ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261025 2026-10-25
0.29.6-r0-20261025-dev ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261025-dev 2026-10-25
0.29.6-r0-20261024 ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261024 2026-10-24
0.29.6-r0-20261024-dev ghcr.io/rtvkiz/minimal-headscale:0.29.6-r0-20261024-dev 2026-10-24
0.29.5-r0 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0 2026-10-24
0.29.5-r0-20261024 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261024 2026-10-24
0.29.5-r0-20261024-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261024-dev 2026-10-24
0.29.5-r0-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-dev 2026-10-24
0.29.5-r0-20261023-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261023-dev 2026-10-23
0.29.5-r0-20261023 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261023 2026-10-23
0.29.5-r0-20261022 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261022 2026-10-22
0.29.5-r0-20261022-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261022-dev 2026-10-22
0.29.5-r0-20261021 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261021 2026-10-21
0.29.5-r0-20261021-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261021-dev 2026-10-21
0.29.5-r0-20261020 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261020 2026-10-20
0.29.5-r0-20261020-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261020-dev 2026-10-20
0.29.5-r0-20261019 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261019 2026-10-19
0.29.5-r0-20261019-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261019-dev 2026-10-19
0.29.5-r0-20261018 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261018 2026-10-18
0.29.5-r0-20261018-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261018-dev 2026-10-18
0.29.5-r0-20261016 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261016 2026-10-16
0.29.5-r0-20261017 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261017 2026-10-16
0.29.5-r0-20261016-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261016-dev 2026-10-16
0.29.5-r0-20261017-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261017-dev 2026-10-16
0.29.5-r0-20261015 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261015 2026-10-15
0.29.5-r0-20261015-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261015-dev 2026-10-15
0.29.5-r0-20261014 ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261014 2026-10-14
0.29.5-r0-20261014-dev ghcr.io/rtvkiz/minimal-headscale:0.29.5-r0-20261014-dev 2026-10-14

14 packages in the image, resolved from the SPDX SBOM.

PackageVersionLicense
alpine/ca-certificates20261020MPL-2.0 AND MIT
ca-certificates-bundle20261020-r0MPL-2.0 AND MIT
ca-certificates-bundle20261020-r0(MPL-2.0 AND MIT)
ca-certificates-bundle20261020-r0—
ca-certificates.yaml8061afafa65af5a9026707a8880e14120dd6f4a0Apache-2.0
headscale0.29.7-r0BSD-3-Clause
images/headscale/melange.yaml862101ee7af52b6dfb7db319fbf7c11793a3d433—
sha256:39cf82070b32172fec12fd95b6070abacbbb59837a1e1fd45a70150082f44b0720230201—
sha256:d9e4b5fedf10c4f4e8652860d4b395693a8ec629ae5a1bb13e8afb0d11912e87sha256:d9e4b5fedf10c4f4e8652860d4b395693a8ec629ae5a1bb13e8afb0d11912e87—
wolfi20230201—
wolfi-baselayout20230201-r31MIT
wolfi-baselayout20230201-r31MIT
wolfi-baselayout20230201-r31—
wolfi-baselayout.yamled415005c84750f03c4a9252137813734a224ae7Apache-2.0
1 high2 medium 0 fixable
CVESeverityPackageInstalledFixed in
GHSA-mgcc-cww5-fp2q High github.com/go-jose/go-jose/v3 v3.0.5 —
GHSA-4w3g-jfj2-cw2q Medium github.com/go-jose/go-jose/v3 v3.0.5 —
GHSA-vvm8-gf78-28g4 Medium github.com/go-jose/go-jose/v3 v3.0.5 —

Everything is verifiable without an account. Copy and run:

Build provenance (SLSA v1.0, Build L2)

gh attestation verify oci://ghcr.io/rtvkiz/minimal-headscale:latest --owner rtvkiz

Cosign signature

cosign verify \
  --certificate-identity-regexp='https://github.com/rtvkiz/minimal/' \
  --certificate-oidc-issuer='https://token.actions.githubusercontent.com' \
  ghcr.io/rtvkiz/minimal-headscale:latest

SBOM attestation (SPDX)

cosign verify-attestation --type spdxjson \
  --certificate-identity-regexp='https://github.com/rtvkiz/minimal/' \
  --certificate-oidc-issuer='https://token.actions.githubusercontent.com' \
  ghcr.io/rtvkiz/minimal-headscale:latest \
  | jq -r '.payload | @base64d | fromjson | .predicate'

Signatures are logged in the public Rekor transparency log.

More Infrastructure images

Weighing this against another provider? The comparison pages publish head-to-head scan data with the raw dataset, including the images where Minimal comes off worse — or read the migration guide for what actually breaks when you switch.