Skip to content

Tailscale Exit Node #1145

Tailscale Exit Node

Tailscale Exit Node #1145

name: Tailscale Exit Node
on:
# Ручной запуск воркфлоу
workflow_dispatch:
push:
# Автозапуск ноды при изменении этого воркфлоу
paths:
- '/.github/workflows/*'
schedule:
# Запускает задание каждые 4 часов
- cron: '0 */4 * * *'
jobs:
deploy:
# Запуск на облачной Ubuntu в MS Azure
runs-on: ubuntu-latest
timeout-minutes: 240
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Установка Tailscale
run: |
# Выполнение автоустановки по скрипту с "https://tailscale.com/download"
curl -fsSL https://tailscale.com/install.sh | sh
# Включение IPv4-форвардинга для корректной работы Exit-Node согласно "https://tailscale.com/kb/1019/subnets/"
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
- name: Авторизация в Tailscale и настройка Exit Node
env:
# Предварительно нужно получить токен на "https://login.tailscale.com/admin/settings/keys" и указать его в секрете вашей репы
TAILSCALE_AUTH_KEY: ${{ secrets.TAILSCALE_KEY }}
# Предварительно нужное имя машины нужно добавить в секрет HOSTNAME
HOSTNAME: ${{ secrets.HOSTNAME }}
run: |
# Аутентификация с использованием нашего ключа, сохраненного в секретах GitHub
sudo tailscale up --authkey=${TAILSCALE_AUTH_KEY} --advertise-exit-node --accept-routes --hostname=${HOSTNAME}
# Удерживаем процесс на 4 часа (бесплатный максимум)
sleep 14400
# Отключаем от Tailscale
sudo tailscale down
- name: Очистка
if: always()
run: |
sudo tailscale down
sudo tailscale logout