Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitHub ActionsとTailscaleを使用して自宅VMへCD環境を整えた話。
Search
kemnix
June 19, 2026
Technology
29
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitHub ActionsとTailscaleを使用して自宅VMへCD環境を整えた話。
kemnix
June 19, 2026
Other Decks in Technology
See All in Technology
しろおびから始める!ログ活用の第一歩
shumei_ito
0
960
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
770
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
120
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2.4k
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
200
価値について
gree_tech
PRO
0
100
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
660
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
1k
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
340
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
200
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
120
Featured
See All Featured
Everyday Curiosity
cassininazir
0
360
Skip the Path - Find Your Career Trail
mkilby
1
260
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Navigating Weather and Climate Data
rabernat
0
560
Test your architecture with Archunit
thirion
2
2.4k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
BBQ
matthewcrist
90
10k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Transcript
GitHub Actions と Tailscale を使用して 自宅 VM へ CD 環境を整えた話。
GitHub × Tailscale けけけ, kemnix 26.06.19 KINDAI Info-Tech HUB LT
名前 所属・学年 B3 | サイバーセキュリティ コース/クラスタ やってること Web アプリ作成, 小さい自宅鯖
けけけ (kemnix) 学びたいこと IaC(Ansible, Terraform), アーキテクチャ @kemnix_ @kemnix A B O U T 自己紹介
突然ですが…… 自宅にサーバー、ありますか? そのサーバー、CI/CD してますか? …… 手で git pull して再起動、してませんか? 🙌🙌
01 やりたかったこと コードを push したら、自宅の機材へ自動デプロイ
0 1 / や り た か っ た こ
と push したら、自宅の機材に自動で反映したい CLOUD GitHub push → GitHub Actions ↓ …… どうやって届ける? 自宅ネットワーク(NAT) 機材 | サーバー
0 1 / や り た か っ た こ
と 素直にやるなら、SSH を外に開ける? Internet :22 → 自宅サーバー 世界中からアクセス可能 22番を全世界に開ける=攻撃・総当たりの的
0 1 / や り た か っ た こ
と ポートを変えれば繋がる。けど・・・ sshd を割り当て範囲内のポートに変更 + ルーター開放 → 繋がる(不可能ではない) MAP-E の制約 1つの IPv4 を複数人で共有 → 使えるのは割り当てられた範囲のポートだけ Well-known は不可 × 範囲内なら可 ◦ = 繋げられるけど、めんどくさい! 家の回線でポートあまり開けたくない!
02 Tailscale なら、いけるのでは? ポート開放、そもそも要らない説
0 2 / T a i l s c a
l e Tailscale = 機器どうしを直接つなぐ VPN 01 WireGuard ベースのメッシュ型 VPN 02 同じアカウントの機器が、1つの仮想ネットワーク(tailnet)に入る 03 NAT 越えを自動でやる → 内向きのポート開放は不要 PC ↕ tailnet ↕ 自宅サーバー DERP servers, UDPホールパンチング, NATトラバーサル
0 2 / T a i l s c a
l e さっきの問題が、全部消える 素直なやり方 Tailscale ポート変更+開放が必要 → ポート開放不要 MAP-E の制約に縛られる → 開放しないので無関係 世界に公開(攻撃の的) → tailnet 内に限定
03 どう実装したか GitHub Actions を tailnet に参加させる
0 3 / 実 装 ランナーを「使い捨てメンバー」として tailnet に入れる GitHub Actions
runner tailscale/github-action で参加 ↓ tailnet runner (ephemeral) SSH ↓ 自宅サーバー ※ ポート開放ゼロ deploy: needs: build runs-on: ubuntu-latest steps: # ① 一時的に tailnet に参加 - uses: tailscale/github-action@v3 with: oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }} oauth-secret: ${{ secrets.TS_OAUTH_SECRET }} tags: tag:ci # ② tailnet 経由で自宅 VM に SSH - uses: appleboy/ssh-action@v1 with: host: ${{ secrets.VM_SSH_HOST }} # Tailscale IP / MagicDNS username: ${{ secrets.VM_SSH_USER }} key: ${{ secrets.VM_SSH_KEY }} script: | cd /opt/app && docker compose pull && docker compose up -d
0 3 / 実 装 やったこと 01 auth key |
OAuth token を発行 Actions が tailnet に入る鍵を Secrets に保存 02 タグを付ける runner → tag:ci | 自宅サーバー → tag:server 03 ACL を整備 tag:ci → tag:server の通信だけ許可
0 3 / 実 装 push するだけ!快適! Before After 手で
git pull → サービス再起動 → push → 自動デプロイ ポート開放で悩む → ポート開放ゼロ | MAP-E も無関係 公開 SSH が不安 → tailnet 内で完結
ご清聴 ありがとうございました