https://github.com/slchris/derp-server
Tailscale/Headscale derp server
https://github.com/slchris/derp-server
ansible-playbook derp headscale tailscale
Last synced: about 2 months ago
JSON representation
Tailscale/Headscale derp server
- Host: GitHub
- URL: https://github.com/slchris/derp-server
- Owner: slchris
- Created: 2022-10-28T14:16:46.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-07T10:27:47.000Z (7 months ago)
- Last Synced: 2025-04-09T17:14:25.117Z (about 2 months ago)
- Topics: ansible-playbook, derp, headscale, tailscale
- Language: Dockerfile
- Homepage:
- Size: 10.7 KB
- Stars: 45
- Watchers: 1
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# tailscale/headscale derp server
For fast deployment of derp servers
# easy to deploy
Preparatory
- domain DNS record (A、AAAA or CNAME) e.g example.com
- certificate
- dockerBefore you start you need to generate a certificate, which can be used certbot:
```shell
docker run -it --rm --name certbot \
-p 80:80 \
-v "/etc/letsencrypt:/etc/letsencrypt" \
-v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
certbot/certbot certonly
```Follow the prompts to generate the corresponding certificate.
deploy derp server:
```shell
docker run --restart always \
--name derper -p 12345:443 -p 3478:3478/udp \
-v /etc/letsencrypt/live/example.com/fullchain.pem:/app/certs/example.com.crt \
-v /etc/letsencrypt/live/example.com/privkey.pem:/app/certs/example.com.key \
-e derp_CERT_MODE=manual \
-e derp_DOMAIN=example.com \
-d ghcr.io/slchris/derp-server:v1
```## easy to use
### headscale
For headscale we need to modify the configuration to create a derp and then have headscale read that configuration.
```shell
vi /etc/headscale/derp.yaml
```The contents:
```yaml
regions:
900:
regionid: 900
regioncode: lv
regionname: Las Vegas, Nevada
nodes:
- name: 900a
regionid: 900
hostname: example.com
stunport: 3478
derpport: 12345
```Modify the headscale main configuration as follows:
```yaml
# vi /etc/headscale/config.yaml
derp:
# List of externally available derp maps encoded in JSON
#urls:
# - https://controlplane.tailscale.com/derpmap/default# Locally available derp map files encoded in YAML
#
# This option is mostly interesting for people hosting
# their own derp servers:
# https://tailscale.com/kb/1118/custom-derp-servers/
#
# paths:
# - /etc/headscale/derp-example.yaml
paths:
- /etc/headscale/derp.yaml# If enabled, a worker will be set up to periodically
# refresh the given sources and update the derpmap
# will be set up.
auto_update_enabled: true# How often should we check for derp updates?
update_frequency: 24h
```for test, we can comment out the following two lines:
```yaml
#urls:
# - https://controlplane.tailscale.com/derpmap/default
```Restart the headscale service:
```shell
systemctl restart headscale
```Check the link status on the client:
```shell
tailscale netcheck
```