Merge branch 'main' into cli-grpc

This commit is contained in:
Kristoffer Dalby 2021-11-06 20:12:19 +00:00 committed by GitHub
commit f5a196088a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,5 +1,6 @@
# Running headscale # Running headscale
## Server configuration
1. Download the headscale binary https://github.com/juanfont/headscale/releases, and place it somewhere in your $PATH or use the docker container 1. Download the headscale binary https://github.com/juanfont/headscale/releases, and place it somewhere in your $PATH or use the docker container
```shell ```shell
@ -12,8 +13,15 @@
docker pull ghrc.io/juanfont/headscale:x.x.x docker pull ghrc.io/juanfont/headscale:x.x.x
``` --> ``` -->
2. (Optional, you can also use SQLite) Get yourself a PostgreSQL DB running 2. When running headscale in a docker container, prepare a directory to hold all configuration
```shell
mkdir config
```
3. Get yourself a DB
a) Get a Postgres DB running in docker
```shell ```shell
docker run --name headscale \ docker run --name headscale \
-e POSTGRES_DB=headscale -e POSTGRES_DB=headscale
@ -22,16 +30,22 @@
-p 5432:5432 \ -p 5432:5432 \
-d postgres -d postgres
``` ```
or b) Prepare a SQLite DB file
3. Create a WireGuard private key and headscale configuration
```shell ```shell
wg genkey > private.key touch config/db.sqlite
cp config.yaml.example config.yaml
``` ```
4. Create a namespace 4. Create a WireGuard private key, headscale configuration, and a DERP map file. Refer to [tailscale sample](https://raw.githubusercontent.com/tailscale/tailscale/main/net/dnsfallback/dns-fallback-servers.json) for more guidance.
```shell
wg genkey > config/private.key
cp config.yaml.[sqlite|postgres].example config/config.yaml
cp derp-example.yaml config/derp.yaml
```
5. Create a namespace
```shell ```shell
headscale namespaces create myfirstnamespace headscale namespaces create myfirstnamespace
@ -39,15 +53,9 @@
or docker: or docker:
the db.sqlite mount is only needed if you use sqlite
```shell ```shell
touch db.sqlite
docker run \ docker run \
-v $(pwd)/private.key:/private.key \ -v $(pwd)/config:/etc/headscale/ \
-v $(pwd)/config.json:/config.json \
-v $(pwd)/derp.yaml:/derp.yaml \
-v $(pwd)/db.sqlite:/db.sqlite \
-p 127.0.0.1:8080:8080 \ -p 127.0.0.1:8080:8080 \
headscale/headscale:x.x.x \ headscale/headscale:x.x.x \
headscale namespaces create myfirstnamespace headscale namespaces create myfirstnamespace
@ -56,10 +64,10 @@
or if your server is already running in docker: or if your server is already running in docker:
```shell ```shell
docker exec <container_name> headscale create myfirstnamespace docker exec <container_name> headscale namespaces create myfirstnamespace
``` ```
5. Run the server 6. Run the server
```shell ```shell
headscale serve headscale serve
@ -67,44 +75,38 @@
or docker: or docker:
the db.sqlite mount is only needed if you use sqlite
```shell ```shell
docker run \ docker run \
-v $(pwd)/private.key:/private.key \ -v $(pwd)/config:/etc/headscale/ \
-v $(pwd)/config.json:/config.json \
-v $(pwd)/derp.yaml:/derp.yaml \
-v $(pwd)/db.sqlite:/db.sqlite \
-p 127.0.0.1:8080:8080 \ -p 127.0.0.1:8080:8080 \
headscale/headscale:x.x.x headscale serve headscale/headscale:x.x.x headscale serve
``` ```
## Nodes configuration
6. If you used tailscale.com before in your nodes, make sure you clear the tailscaled data folder If you used tailscale.com before in your nodes, make sure you clear the tailscaled data folder
```shell ```shell
systemctl stop tailscaled systemctl stop tailscaled
rm -fr /var/lib/tailscale rm -fr /var/lib/tailscale
systemctl start tailscaled systemctl start tailscaled
``` ```
### Adding node based on MACHINEKEY
7. Add your first machine 1. Add your first machine
```shell ```shell
tailscale up --login-server YOUR_HEADSCALE_URL tailscale up --login-server YOUR_HEADSCALE_URL
``` ```
8. Navigate to the URL you will get with `tailscale up`, where you'll find your machine key. 2. Navigate to the URL returned by `tailscale up`, where you'll find your machine key.
9. In the server, register your machine to a namespace with the CLI 3. In the server, register your machine to a namespace with the CLI
```shell ```shell
headscale -n myfirstnamespace nodes register -k YOURMACHINEKEY headscale -n myfirstnamespace nodes register -k YOURMACHINEKEY
``` ```
or docker: or docker:
```shell ```shell
docker run \ docker run \
-v $(pwd)/private.key:/private.key \ -v $(pwd)/config:/etc/headscale/ \
-v $(pwd)/config.json:/config.json \
-v $(pwd)/derp.yaml:/derp.yaml \
headscale/headscale:x.x.x \ headscale/headscale:x.x.x \
headscale -n myfirstnamespace nodes register -k YOURMACHINEKEY headscale -n myfirstnamespace nodes register -k YOURMACHINEKEY
``` ```
@ -113,7 +115,7 @@
docker exec <container_name> headscale -n myfirstnamespace nodes register -k YOURMACHINEKEY docker exec <container_name> headscale -n myfirstnamespace nodes register -k YOURMACHINEKEY
``` ```
Alternatively, you can use Auth Keys to register your machines: ### Alternative: adding node with AUTHKEY
1. Create an authkey 1. Create an authkey
@ -125,10 +127,7 @@ Alternatively, you can use Auth Keys to register your machines:
```shell ```shell
docker run \ docker run \
-v $(pwd)/private.key:/private.key \ -v $(pwd)/config:/etc/headscale/ \
-v $(pwd)/config.json:/config.json \
-v$(pwd)/derp.yaml:/derp.yaml \
-v $(pwd)/db.sqlite:/db.sqlite \
headscale/headscale:x.x.x \ headscale/headscale:x.x.x \
headscale -n myfirstnamespace preauthkeys create --reusable --expiration 24h headscale -n myfirstnamespace preauthkeys create --reusable --expiration 24h
``` ```
@ -139,7 +138,7 @@ Alternatively, you can use Auth Keys to register your machines:
docker exec <container_name> headscale -n myfirstnamespace preauthkeys create --reusable --expiration 24h docker exec <container_name> headscale -n myfirstnamespace preauthkeys create --reusable --expiration 24h
``` ```
2. Use the authkey from your machine to register it 2. Use the authkey on your node to register it
```shell ```shell
tailscale up --login-server YOUR_HEADSCALE_URL --authkey YOURAUTHKEY tailscale up --login-server YOUR_HEADSCALE_URL --authkey YOURAUTHKEY
``` ```