Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions docs/setup/install/sealos.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Sealos

!!! warning "Community documentation"

This page is maintained by the Sealos templates community and is not
verified by headscale developers. Report deployment-specific issues in the
[Sealos templates repository](https://github.com/labring-actions/templates/issues).
Confirm that the template uses a supported headscale release before
production use.

The community-maintained Sealos template deploys headscale and
[Headplane](https://github.com/tale/headplane) on Kubernetes. It configures
persistent storage, TLS-enabled endpoints, and SQLite by default. PostgreSQL is
available as a deployment option.

[![Deploy on Sealos](https://sealos.io/Deploy-on-Sealos.svg)](https://sealos.io/products/app-store/headscale)

## Deploy

1. Open the Sealos template and select **Deploy Now**.
1. Keep SQLite for the default deployment, or enable PostgreSQL to provision a
dedicated database.
1. Wait for the headscale and Headplane containers to become ready.
1. Open the application URL. The root path redirects to Headplane at `/admin/`.

The template also creates a separate TLS endpoint for the headscale gRPC API.

## Sign in and register a node

Create a headscale API key from the headscale container:

```shell
headscale apikeys create
```

Paste the key into the Headplane sign-in page. In Headplane, create a user and
then create a pre-authentication key for that user.

Connect a node with the public application URL and the pre-authentication key:

```shell
tailscale up \
--login-server=https://<HEADSCALE_DOMAIN> \
--authkey=<PRE_AUTH_KEY>
```

Continue with the [getting started guide](../../usage/getting-started.md) for
the standard headscale registration workflow.

## Persistence and database

The template persists these paths:

| Path | Contents |
| -------------------- | ---------------------------------------- |
| `/var/lib/headscale` | SQLite database, keys, and runtime state |
| `/etc/headscale` | Headscale configuration |
| `/var/lib/headplane` | Headplane state |

When PostgreSQL is enabled, Sealos provisions a dedicated database and injects
its credentials from a Kubernetes Secret. The headscale configuration and keys
remain on persistent volumes.

## Updating

Review the template's
[deployment notes](https://github.com/labring-actions/templates/tree/kb-0.9/template/headscale)
for its currently tested headscale and Headplane versions. Before changing the
headscale image version, back up the database and persistent volumes and follow
the [upgrade guide](../upgrade.md).
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ nav:
- Official releases: setup/install/official.md
- Community packages: setup/install/community.md
- Container: setup/install/container.md
- Sealos (community): setup/install/sealos.md
- Build from source: setup/install/source.md
- Development builds: setup/install/main.md
- Upgrade: setup/upgrade.md
Expand Down