何かやってみるブログ

興味をもったこと、趣味のこと、技術について色々書きます。

[雑メモ]自宅のAppleTVをTailscaleのExitNodeにしてGitHub Actionsからつなぐ

個人的な趣味のためのスクレイピングのスクリプトをVPSで動かしていたが、節約のためVPSを解約してしまったので代替としてGitHub Actionsをつかうことにした。 しかし対象のサイトが日本以外の国からのアクセスを拒否するようになっていてうまくスクリプトが動かなかった。

ラズパイを使うとかLambdaとか使ってどうにかするみたいのも案として考えたが、可能な限りコストをかけたくなかったのでTailscaleを使うことにした。自宅のApple TVをTailscaleのExit Nodeとして設定しておき、GitHub Actions側からそのノードを経由してアクセスするようにした。

導入に関しては公式のブログを見ながらやったらすんなりうまくいった。

tailscale.com

name: run script
on:
  schedule:
    # 毎日7:30 JST (22:30 UTC前日)
    - cron: '30 22 * * *'
jobs:
  run_script:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Connect Tailscale
        uses: tailscale/github-action@v4
        with:
          oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
          oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
          tags: tag:ci
      - name: Set Exit Node
        run: sudo tailscale set --exit-node=apple-tv
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.4'
          bundler-cache: true
      - name: run
        env:
          SELENIUM_LOCAL: 'true'
        run: bundle exec ruby init.rb