2021-10-20 20:09:57 +10:00
|
|
|
#!/bin/bash
|
|
|
|
|
2022-10-25 18:52:32 +10:00
|
|
|
set -m
|
|
|
|
|
|
|
|
# Enable IP forwarding
|
|
|
|
echo 'net.ipv4.ip_forward = 1' | tee -a /etc/sysctl.conf
|
|
|
|
echo 'net.ipv6.conf.all.forwarding = 1' | tee -a /etc/sysctl.conf
|
|
|
|
sysctl -p /etc/sysctl.conf
|
|
|
|
|
2023-05-01 15:10:42 +10:00
|
|
|
# Prepare run dirs
|
2021-10-20 20:09:57 +10:00
|
|
|
if [ ! -d "/var/run/sshd" ]; then
|
|
|
|
mkdir -p /var/run/sshd
|
|
|
|
fi
|
|
|
|
|
2022-10-25 18:52:32 +10:00
|
|
|
# Set root password
|
|
|
|
echo "root:${PASSWORD}" | chpasswd
|
2021-10-20 20:09:57 +10:00
|
|
|
|
|
|
|
# Install routes
|
|
|
|
IFS=',' read -ra SUBNETS <<< "${ADVERTISE_ROUTES}"
|
|
|
|
for s in "${SUBNETS[@]}"; do
|
|
|
|
ip route add "$s" via "${CONTAINER_GATEWAY}"
|
|
|
|
done
|
|
|
|
|
2023-05-01 15:10:42 +10:00
|
|
|
# Check if the machine exists
|
|
|
|
ID=$(curl -sSL "https://api.tailscale.com/api/v2/domain/${DOMAIN}/devices" -u "${API_KEY}:" | jq -r '.[][] | select(.hostname == "'${HOSTNAME}'") | .id' || echo "")
|
|
|
|
if [[ ! -z "$ID" ]]; then
|
|
|
|
# Check if this is a differing version. If so, remove the machine
|
|
|
|
VERSION=$(tailscale version | head -n 1)
|
|
|
|
CLIENT_VERSION=$(curl -sSL -XGET -u "${API_KEY}:" "https://api.tailscale.com/api/v2/device/$ID" | jq -r '.clientVersion' || echo "")
|
|
|
|
if [[ "$CLIENT_VERSION" != "$VERSION"* ]]; then
|
|
|
|
# Delete the machine
|
|
|
|
echo "Deleting tailscale machine: $ID";
|
|
|
|
curl -sSL -XDELETE -u "${API_KEY}:" "https://api.tailscale.com/api/v2/device/$ID";
|
|
|
|
fi
|
2022-10-25 18:52:32 +10:00
|
|
|
fi
|
|
|
|
|
2023-05-01 15:10:42 +10:00
|
|
|
# Start tailscaled and bring tailscale up
|
2022-07-30 13:47:27 +10:00
|
|
|
/usr/local/bin/tailscaled &
|
2021-10-20 20:09:57 +10:00
|
|
|
until /usr/local/bin/tailscale up \
|
2022-10-25 18:52:32 +10:00
|
|
|
--reset --authkey=${AUTH_KEY} \
|
|
|
|
--advertise-routes="${ADVERTISE_ROUTES}" \
|
|
|
|
${TAILSCALE_ARGS}
|
2021-10-20 20:09:57 +10:00
|
|
|
do
|
|
|
|
sleep 0.1
|
|
|
|
done
|
|
|
|
echo Tailscale started
|
|
|
|
|
|
|
|
# Start SSH
|
|
|
|
/usr/sbin/sshd -D
|
|
|
|
|
|
|
|
fg %1
|