個人的な趣味のためのスクレイピングのスクリプトをVPSで動かしていたが、節約のためVPSを解約してしまったので代替としてGitHub Actionsをつかうことにした。 しかし対象のサイトが日本以外の国からのアクセスを拒否するようになっていてうまくスクリプトが動かなかった。
ラズパイを使うとかLambdaとか使ってどうにかするみたいのも案として考えたが、可能な限りコストをかけたくなかったのでTailscaleを使うことにした。自宅のApple TVをTailscaleのExit Nodeとして設定しておき、GitHub Actions側からそのノードを経由してアクセスするようにした。
導入に関しては公式のブログを見ながらやったらすんなりうまくいった。
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