Skip to content

Commit ea1f881

Browse files
committed
prep for release
1 parent 543d051 commit ea1f881

File tree

7 files changed

+87
-35
lines changed

7 files changed

+87
-35
lines changed

.github/workflows/release.yml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
permissions:
2+
contents: write
3+
4+
name: release
5+
on:
6+
push:
7+
tags:
8+
- v*.*.*
9+
- '!v*.*.*-**'
10+
11+
jobs:
12+
goreleaser:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Checkout
16+
uses: actions/checkout@v2
17+
- name: Unshallow clone
18+
run: git fetch --prune --unshallow
19+
- name: Install Go
20+
uses: actions/setup-go@v2
21+
with:
22+
go-version: '1.22.x'
23+
- name: Run GoReleaser
24+
uses: goreleaser/goreleaser-action@v3
25+
with:
26+
args: release --clean --skip=validate
27+
version: latest
28+
env:
29+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

derper.service

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
[Unit]
22
Description=Tailscale DERP Server
33
After=network.target
4+
StartLimitIntervalSec=0
5+
StartLimitBurst=0
46

57
[Service]
6-
Type=simple
7-
User=derper
8-
Group=derper
9-
ExecStart=/usr/bin/derper -c /etc/derper/derper.conf
8+
LimitNOFILE=990000
9+
User=0
10+
Group=0
11+
ExecStart=/usr/bin/derper -certdir=/var/cache/derper/certs
1012
Restart=on-failure
1113
RestartSec=5
12-
LimitNOFILE=1048576
13-
14-
# Hardening measures
1514
AmbientCapabilities=CAP_NET_BIND_SERVICE
16-
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
1715

1816

1917
[Install]

scripts/postinstall.sh

+1-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,5 @@ systemctl enable derper.service
1010
systemctl start xdpderper.service
1111
systemctl start derper.service
1212

13-
# setcap
14-
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/derper
15-
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/xdpderper
13+
1614

scripts/preinstall.sh

+38-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,40 @@
11
#!/bin/sh
2-
getent group xdpderper >/dev/null || groupadd -r xdpderper
3-
getent passwd xdpderper >/dev/null || useradd -r -g xdpderper -s /bin/bash -c "XDPDERP server" xdpderper
4-
getent group derper >/dev/null || groupadd -r derper
5-
getent passwd derper >/dev/null || useradd -r -g derper -s /bin/bash -c "DERP server" derper
62

7-
mkdir /etc/derper
8-
chown -R derper:derper /etc/derper
3+
# Detect the correct configuration directory
4+
if [ -f /etc/os-release ]; then
5+
. /etc/os-release
6+
case "$ID" in
7+
rhel|centos|fedora|rocky|almalinux)
8+
CONFIG_DIR="/etc/sysconfig"
9+
;;
10+
debian|ubuntu)
11+
CONFIG_DIR="/etc/default"
12+
;;
13+
*)
14+
echo "Unknown OS. Defaulting to /etc/default"
15+
CONFIG_DIR="/etc/default"
16+
;;
17+
esac
18+
else
19+
# Fallback if /etc/os-release is not available
20+
if [ -d /etc/sysconfig ]; then
21+
CONFIG_DIR="/etc/sysconfig"
22+
else
23+
CONFIG_DIR="/etc/default"
24+
fi
25+
fi
26+
27+
# Create necessary directories
28+
mkdir -p /etc/derper
29+
mkdir -p /var/cache/derper/certs
30+
mkdir -p /var/lib/derper
31+
32+
# Create a configuration file if it doesn't exist
33+
if [ ! -f "$CONFIG_DIR/derper" ]; then
34+
echo "# Configuration file for DERP server" > "$CONFIG_DIR/derper"
35+
echo "HOSTNAME=your-default-hostname.example.com" >> "$CONFIG_DIR/derper"
36+
echo "Configuration file created at $CONFIG_DIR/derper"
37+
else
38+
echo "Configuration file already exists at $CONFIG_DIR/derper"
39+
fi
40+

tooling/get_tag.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
cd tailscale
4+
latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`)
5+
echo "Latest upstream tag: $latest_tag"

xdpderper.service

+7-17
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
11
[Unit]
2-
Description=Tailscale XDPDERP Server
3-
After=network.target
2+
StartLimitIntervalSec=0
3+
StartLimitBurst=0
44

55
[Service]
6-
Type=simple
7-
User=xdpderper
8-
Group=xdpderper
9-
ExecStart=/usr/bin/xdpderper
6+
ExecStart=xdpderper --dst-port=3478 --mode=xdpdrv
107
Restart=on-failure
11-
RestartSec=5
12-
LimitNOFILE=1048576
13-
14-
# Hardening measures
15-
PrivateTmp=yes
16-
ProtectSystem=full
17-
NoNewPrivileges=yes
18-
ProtectHome=yes
19-
ProtectKernelTunables=yes
20-
ProtectKernelModules=yes
21-
ProtectControlGroups=yes
8+
LimitNOFILE=990000
9+
AmbientCapabilities=CAP_NET_BIND_SERVICE
10+
User=0
11+
Group=0
2212

2313
[Install]
2414
WantedBy=multi-user.target

0 commit comments

Comments
 (0)