コンテンツにスキップ
youtube-automation ドキュメント
Esc
navigateopen⌘Jpreview

/streaming

Use when ライブ配信用 Vultr VPS・動画配信本体を Terraform で構築・運用・トラブルシュートするとき。「ライブ配信」「24/7 配信」「配信止まった」で発動。ライブチャット自動返信は /reply の live mode を使う

何ができるか

Terraform で Vultr VPS を構築し、YouTube ライブ配信を開始・監視・復旧する運用スキルです。初回構築から動画差し替え、帯域確認、障害調査、VPS の破棄までを案内します。既定は 24/7 連続配信で、アーカイブを残したい場合は 11 時間配信 + 1 時間休止へ切り替えられます。

mode すること 主な確認先
初回構築 VPS、cloud-init、動画転送、配信開始 terraform plan / terraform output
動画差し替え VPS を作り直さず動画だけ更新 deploy resource の replace
監視・復旧 service、帯域、アーカイブ、配信枠を診断 systemd / Discord / recovery result
破棄 VPS を削除して課金を止める terraform destroy

24/7 ライブ配信を始めたいとき

/streaming

Terraform、SSH 鍵と ssh-agent、1Password の Vultr API key・stream key・Discord webhook、operator IP の /32 CIDR を確認します。terraform plan でリソースと動画品質を確認し、明示承認後に apply すると配信が始まります。secret は tfvars に書かず TF_VAR_* 環境変数で渡します。

配信動画を差し替えたいとき

swap script で plan を確認してから apply します。動画 hash だけが変わる通常ケースでは deploy resource だけが置き換わり、VPS 自体は残ります。24/7 配信中は数秒から数十秒の中断があるため、必要なら告知や休止時間を調整してください。

配信停止や帯域を調べたいとき

service status と journal を起点に、stream key、動画破損、SSH、通知を切り分けます。24/7 運用は bandwidth check、11 時間 + 1 時間運用は archive check を使います。ingest が動いているのに active 配信枠だけが消えた場合は、broadcast recovery を必ず dry-run してから復旧します。ライブチャット返信は /reply --live の担当です。

長期休止して課金を止めたいとき

Vultr API key を再注入し、terraform destroy の対象を確認して VPS を破棄します。service の停止だけでは VPS の時間課金は続くため、長期休止では destroy まで完了してください。

つまずいたら

  • Permission denied (publickey)ssh-add -l を確認し、毎セッション ~/.ssh/yt_stream_key を ssh-agent へ登録してください。手動の ssh -i 成功だけでは provisioner の確認になりません
  • plan が動画品質で止まる — キーフレーム間隔、ビットレート、H.264 profile を確認して配信向けに再エンコードしてください
  • Discord 通知が来ない — healthcheck の environment と journal を確認してください。secret が trace に出るため bash -x は使いません
  • 24/7 なのに archive check が不足を示す — 日次アーカイブ数は 11 時間 + 1 時間運用だけの指標です。24/7 では service、ingest、broadcast recovery を確認してください
  • VPS が増えそうな plan になる — workspace とチャンネル別の環境変数を照合し、意図しない instance replace が含まれる場合は apply しないでください

リファレンス

発動フレーズ

  • ライブ配信
  • 24/7 配信
  • 配信止まった

前後工程

  • 前工程: なし
  • 後工程: なし
  • 委譲先: なし

成果物

  • 書き込む: infra/terraform/streaming/terraform.tfvars, /var/lib/youtube-broadcast-recovery/last-result.json
  • 読み込む: infra/terraform/streaming/.terraform/terraform.tfstate, infra/terraform/streaming/README.md

想定 API call 数

API call 数 / 実行 変動要因
Vultr VPS(terraform apply) API call 数ではなく VPS 存在中は時間課金が継続 稼働時間(terraform destroy まで)
liveStreams.list(1 unit、yt-fetch-stream-key) 1
search.list + videos.list(≈ 101 units、yt-stream-archive-check) 各 1
search.list(100 units / ページ、yt-stream-bandwidth –report のみ) ページ数分 アーカイブ本数(default 実行は Vultr API / ローカルのみで無料)
liveBroadcasts.list + liveStreams.list(yt-stream-broadcast-recover) 1〜3 active 枠ありは 1、ingest inactive は 2、復旧判定は 3
liveBroadcasts.insert + bind + transition(yt-stream-broadcast-recover) 0〜3 --dry-run / no-op は 0、upcoming の再利用状況により 1〜3
  • 上限 / 承認: terraform plan で apply 前に差分確認し、§5 の terraform destroy で課金を停止する。yt-stream-archive-check は read のみで書き込みなし。yt-stream-broadcast-recover は必ず最初に --dry-run で予定 action を確認し、同じ --title を再試行時も使う。

前提

最初に Terraform 資産と実行場所の確定 を実行し、上流 AUTOMATION_ROOT・対象 CHANNEL_DIRTF_DIR を確定する。以下の相対パスとコマンドは上流 root 基準。動画など下流の入力は絶対パスで渡す。

以下を確認し、満たさなければ整備手順(各項目に記載、詳細は README §前提)を案内してから先へ進む:

  • terraform 1.15.x / python3 / uv / 1Password CLI (op)
  • SSH 鍵 ~/.ssh/yt_stream_key{,.pub}(無ければ ssh-keygen -t ed25519 -f ~/.ssh/yt_stream_key
  • ssh-agent に秘密鍵を登録済み(ssh-add ~/.ssh/yt_stream_key)。null_resource.deploy.connectionagent = true で ssh-agent 経由に接続するため、未登録だと apply 時に Permission denied (publickey) で失敗する。ssh-add -l で登録済み鍵を確認できる。OS 再起動・再ログイン時に agent は空に戻る(毎セッション再登録が必要)ssh -i ~/.ssh/yt_stream_key 経由の手動 SSH は agent 状態と独立で検証手段にならない(詳細は README §前提)
  • 1Password に以下が登録済み:
    • op://Personal/Vultr/api_key
    • op://Personal/YouTube/stream_key(未登録なら yt-fetch-stream-key --vault=Personal --item=YouTube で自動取得)
    • op://Personal/YouTube_Stream_Discord_Webhook/url(死活監視通知)
  • operator のグローバル IP を /32 CIDR で allowed_ssh_cidr に渡せること(Vultr ファイアウォールで SSH 22/tcp を operator IP のみに制限する。curl -s ifconfig.me で取得)

このページは役に立ちましたか?