Google Cloud で resonite ヘッドレスサーバ を構築する

この記事は resoniteHeadless Client(通称ヘッドレスサーバと呼ばれている為、以下ヘッドレスサーバと記載します)Google Cloud 上で動かす手順です。

resonite は開発スピードが速い為、基本的には最新情報を確認してください。 本手順は 3 ヶ月程度で使えなくなる可能性があります。

Google CloudGoogle Cloud Shell を使用してコマンドラインで操作します。

誰向けの記事?

下記の全てに当てはまる方向けです。

  • こちらの記事を見て興味を持った方

  • resonite を常用していて Linux で ヘッドレスサーバ を建てたいと考えている方

  • 既に Windows 上で ヘッドレスサーバ を起動することが苦でない方(参考 【手順解説】Resoniteヘッドレスサーバの建て方!(By akiRAMさん)

    • 現在 .NET9 Runtime が必要。Windows の場合は下記コマンドでインストール可能です

      winget install Microsoft.DotNet.Runtime.9
      

    注釈

    手順を実行する為にはヘッドレスサーバの概要を理解しており、ヘッドレスサーバを利用開始する為の条件をクリアしている必要があります。 Windows 版を起動することにより理解することが可能です。Linux 版はその時々の不具合でハマることがあるので最低限 Windows の起動が問題ないことを確認してください

  • Linux ディストリビューションでコマンドを打つのに抵抗が無い方(※Ubuntu24.04を使用します)

  • Google Cloud に興味がある方

概要

Google Cloud の VPC を作成し Google Compute Engine のインスタンス(VM=仮想マシン)上にヘッドレスサーバを構築します。 本手順は、構築/削除/再構築のサイクルが回しやすいように作られています。また、2~3ヶ月毎に再作成することをお勧めします。

改善点があれば resonite でお会いした時に教えてください。 または プルリクエスト をくれても良いです。

前提条件

resonite ヘッドレスサーバを Google Cloud で建てるオススメ を一読してください。

  • Google Cloud Shell が利用できる環境であること

    • 作業端末がインターネットに接続している必要があります

    • 作業端末で Web ブラウザが利用できる必要があります

  • Linux ディストリビューションを CUI 操作できること

    • bash 等のシェルを扱えること

  • クレジットカードが使える方( Google Cloud への支払いが発生します)

警告

起動時間の料金がかかります。 本手順を実行し、すぐにインスタンスを停止した場合は数十円かかります。 本手順で使っているインスタンスタイプ(t2d-standard-2)を1か月起動しっぱなしにした場合は、 1万2000円程度かかってしまうので、必要な時以外は停止することを忘れないようにしましょう。

構築及び設定するクラウドリソース

Google Cloud や AWS その他パブリックラウドをある程度知ってる方向けなので、よくわからない方は読み飛ばしてください

  • VPC

  • サブネット

  • VPC ファイアウォール

  • Compute Engine のインスタンス(VM=仮想マシン)

  • Secret Manager のシークレット

構築するヘッドレスサーバについては こちら を確認してください。

準備作業の流れ

  1. Google Cloud を契約しクレジットカード登録する(省略)

    https://cloud.google.com/

  2. Google Cloud Shell をセットアップする

    • mise、fzf をインストールする

    • ${HOME}/.bashrc を作成する

  3. Steamガードをオフにする

Google Cloud Shell をセットアップする

  1. ブラウザで Google Cloud Shell にアクセスします https://shell.cloud.google.com

  2. Google Cloud のプロジェクトを指定します

    ../../../_images/google_cloud_project.png
  1. 作業用リポジトリをクローンします

    git clone https://github.com/usaturn/resonite-headless-infra.git
    
  2. Google Cloud Shell セットアップ用チュートリアルを起動します

    teachme resonite-headless-infra/setup-cloudshell.md
    
  3. teachme コマンドを打つとブラウザの右側にチュートリアルが表示されますので指示に従ってください

注釈

Google Cloud Shell は毎回 ${HOME} のみ保持をして(120日間)、それ以外は Google 標準のイメージをマウントする関係上、

sudo apt install ~ でインストールをしても次回起動時に消えてしまいます。 ツール類は mise で ${HOME} 配下にインストールすると良いでしょう

Google Cloud Shell に 120 日間アクセスしないと ${HOME} は初期化されてしまうので、初期化されてしまった場合は初めから設定仕直しする必要があります

注釈

Google Cloud Shell 手順がうまくいかなくなった、環境が壊れてしまったという場合は初期化し、手順を初めからやり直してください

  1. 削除コマンドを打ちます

    # 削除するファイルを確認する
    ls -a $HOME
    
    # ユーザディレクトリを削除する(全て消えるので注意)
    sudo rm -rf $HOME
    
  2. 右上の三点リーダーをクリックし、再起動をクリックします

    ../../../_images/restart_cloudshell.webp
  3. 「VMの状態をクリーンにしたい」にチェックして再起動をクリックする

    ../../../_images/restart_cloudshell_param.webp

Steamガードをオフにする

steamcmd を自動でインストールする為に、Steamガードをオフにします。 一般的にはセキュリティ上、推奨されていないことに留意してください。 また、使用する各アカウント(Steam アカウントと及び resonite アカウント)はセキュリティ上、 必ずヘッドレスサーバ専用でクレカ登録せずに 作成してください。

  1. Windows で Steam を起動します

  2. メニューの Steam をクリックし、設定をクリックします

  3. セキュリティをクリックします

  4. Steam ガードを管理 をクリックします

  5. Steam ガードをオフ をチェックします

    ../../../_images/steam_gard.png
  6. Steam ガードを無効化 をクリックします

  7. Steam に登録したメールアドレスへ Steamガード無効化の確認 というタイトルでメールが届くのでメールを見て STEAMガードを無効にする をクリックしてください

注釈

Steam ガードを有効にしたままでは、steamcmd を自動インストールできない為、無効化しています。 サーバ構築後は、Steam ガードを有効に戻すことをお勧めします

Google Cloud にインフラを構築する

  1. Google Cloud Shell のターミナルでヘッドレスサーバ構築用チュートリアルを起動します

    cd ~/resonite-headless-infra
    teachme setup-headless-infra.md
    

ヘッドレスサーバ が起動して他のアカウントが参加できたら成功です。

明日の記事 へ続きます。

環境を削除する

必要なくなったら一旦環境を削除しましょう

# インスタンスを削除する
gcloud compute instances delete ${RESONITE_HEADLESS_SERVER_INSTANCE_NAME}

# ファイアウォールルールを削除する
gcloud compute firewall-rules delete allow-iap-forwarding-to-resonite-headless

# サブネットの割り当てを外す
gcloud compute networks subnets delete "${SUBNET_NAME}" --region ${REGION}

# VPC を削除する
gcloud compute networks delete ${VPC_NAME}