The built-in help also shows flags to given after the command. Align documentation examples accordingly.
5.1 KiB
Running headscale on OpenBSD
!!! warning "Community documentation"
This page is not actively maintained by the headscale authors and is
written by community members. It is _not_ verified by `headscale` developers.
**It might be outdated and it might miss necessary steps**.
Goal
This documentation has the goal of showing a user how-to install and run headscale on OpenBSD.
In addition to the "get up and running section", there is an optional rc.d section
describing how to make headscale run properly in a server environment.
Install headscale
-
Install from ports
You can install headscale from ports by running
pkg_add headscale. -
Install from source
# Install prerequistes pkg_add go git clone https://github.com/juanfont/headscale.git cd headscale # optionally checkout a release # option a. you can find official release at https://github.com/juanfont/headscale/releases/latest # option b. get latest tag, this may be a beta release latestTag=$(git describe --tags `git rev-list --tags --max-count=1`) git checkout $latestTag go build -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$latestTag" github.com/juanfont/headscale # make it executable chmod a+x headscale # copy it to /usr/local/sbin cp headscale /usr/local/sbin -
Install from source via cross compile
# Install prerequistes # 1. go v1.20+: headscale newer than 0.21 needs go 1.20+ to compile # 2. gmake: Makefile in the headscale repo is written in GNU make syntax git clone https://github.com/juanfont/headscale.git cd headscale # optionally checkout a release # option a. you can find official release at https://github.com/juanfont/headscale/releases/latest # option b. get latest tag, this may be a beta release latestTag=$(git describe --tags `git rev-list --tags --max-count=1`) git checkout $latestTag make build GOOS=openbsd # copy headscale to openbsd machine and put it in /usr/local/sbin
Configure and run headscale
-
Prepare a directory to hold
headscaleconfiguration and the SQLite database:# Directory for configuration mkdir -p /etc/headscale # Directory for database, and other variable data (like certificates) mkdir -p /var/lib/headscale -
Create a
headscaleconfiguration:touch /etc/headscale/config.yaml
(Strongly Recommended) Download a copy of the example configuration from the headscale repository.
-
Start the headscale server:
headscale serveThis command will start
headscalein the current terminal session.
To continue the tutorial, open a new terminal and let it run in the background. Alternatively use terminal emulators like tmux.
To run
headscalein the background, please follow the steps in the rc.d section before continuing. -
Verify
headscaleis running:Verify
headscaleis available:curl http://127.0.0.1:9090/metrics -
Create a user (tailnet):
headscale users create myfirstuser
Register a machine (normal login)
On a client machine, execute the tailscale login command:
tailscale up --login-server YOUR_HEADSCALE_URL
Register the machine:
headscale nodes register --user myfirstuser --key <YOUR_MACHINE_KEY>
Register machine using a pre authenticated key
Generate a key using the command line:
headscale preauthkeys create --user myfirstuser --reusable --expiration 24h
This will return a pre-authenticated key that can be used to connect a node to headscale during the tailscale command:
tailscale up --login-server <YOUR_HEADSCALE_URL> --authkey <YOUR_AUTH_KEY>
Running headscale in the background with rc.d
This section demonstrates how to run headscale as a service in the background with rc.d.
-
Create a rc.d service at
/etc/rc.d/headscalecontaining:#!/bin/ksh daemon="/usr/local/sbin/headscale" daemon_logger="daemon.info" daemon_user="root" daemon_flags="serve" daemon_timeout=60 . /etc/rc.d/rc.subr rc_bg=YES rc_reload=NO rc_cmd $1 -
/etc/rc.d/headscaleneeds execute permission:chmod a+x /etc/rc.d/headscale -
Start
headscaleservice:rcctl start headscale -
Make
headscaleservice start at boot:rcctl enable headscale -
Verify the headscale service:
rcctl check headscaleVerify
headscaleis available:curl http://127.0.0.1:9090/metricsheadscalewill now run in the background and start at boot.