aports/community/tailscale/tailscale.initd
Jakub Jirutka b12738c763 community/tailscale: fix problem with resolvconf wrapper
I still don't understand what happened to the OP in #16610 - I couldn't
reproduce it. However, this change makes it more defensive and should avoid
this problen.

Resolves #16610
2024-11-12 01:14:32 +01:00

46 lines
1.5 KiB
Bash

#!/sbin/openrc-run
# Uppercase variables are for backward compatibility (Alpine <3.21).
: ${capabilities="^cap_net_admin,cap_net_raw"}
: ${command_user:="root:tailscale"}
: ${logfile="${TAILSCALED_LOGFILE:-"/var/log/tailscaled.log"}"}
: ${no_logs_no_support:=no}
: ${port:="${TAILSCALED_PORT:-41641}"}
: ${socket:="/run/tailscale/tailscaled.sock"}
: ${statedir:="/var/lib/tailscale"}
: ${supervisor="supervise-daemon"}
: ${verbose:=0}
command="/usr/sbin/tailscaled"
command_args="--socket=$socket --state=$statedir/tailscaled.state --port=$port --verbose=$verbose $TAILSCALED_OPTS $command_args"
command_background=yes
pidfile="/run/$RC_SVCNAME.pid"
output_log="$logfile"
error_log="$logfile"
# Alpine uses the nf_tables backend by default (see #14058). The "auto"
# heuristic doesn't work correctly, it prefers iptables (and fails due to
# missing modules) even when nftables are in use.
# See https://tailscale.com/kb/1294/firewall-mode
export TS_DEBUG_FIREWALL_MODE="${firewall_mode:-"nftables"}"
depend() {
need net
after firewall
use logger
}
start_pre() {
yesno "$no_logs_no_support" && command_args="$command_args --no-logs-no-support"
if [ -e /usr/sbin/resolvconf ] && command -v doas >/dev/null; then
# The purpose of this is to make tailscaled use our resolvconf wrapper that
# executes /usr/sbin/resolvconf via doas.
export PATH="/usr/libexec/tailscale:$PATH"
fi
checkpath -f -m 0640 -o "$command_user" "$logfile" || return 1
checkpath -d -m 0755 -o "$command_user" "${socket%/*}"
}