Terraformを使ってパルワールド - Palworld の専用サーバーをGoogle Cloudにさくっとたてたい

2024/02/04に公開

パルワールド、おもしろいですよね
仲間内でいつでも遊べる環境を作りたいということで、専用サーバーをたてたい!
せっかくならTerraform使ってやってみようということでやってみました。

※雑に書いてる部分あとで加筆します

概要

  • https://github.com/sbleru/my-palworld/blob/main/infra/terraform/README.md
    • の設定方法を順に追って説明する
  • 対象
    • パルワールドの専用サーバーたてたいけどよくわかってない
    • Google Cloud がなんとなくわかる(分からなくてもなんとかなるかも)
    • Terraform がなんとなくわかる(分からなくてもなんとかなるかも)
  • ※技術的な説明、現時点(2024/02/04)では書けてないです

手順

CLI インストール

Google Cloudのプロジェクトを作成する

パルワールドサーバーの各種設定

設定用のファイルを作成する

git clone https://github.com/sbleru/my-palworld
cd my-palworld/infra/terraform/env/dev/service/palworld-server
touch terraform.tfvars

terraform.tfvarsファイルを開き、各種設定する

project_id = "your_project_id"
server_password = "pass"
admin_password  = "admin_pass"
palworld_server_name = "Aincrad"
palworld_server_description = "これは、ゲームであっても遊びではない"
palworld_server_tz = "JST"
  • project_id
    • 作成したGoogle Cloud ProjectのIDを設定
  • server_password
    • これが専用サーバーに入るときのパスワードになります
  • admin_password
    • wip
  • palworld_server_name
    • 専用サーバーの名前。みんなで決めましょう。
  • palworld_server_description
    • 専用サーバーの説明。
  • palworld_server_tz
    • タイムゾーン。ゲームデータのバックアップの時間などに影響します。

補足

インフラを構築する

# infra/terraform/env/dev/service/palworld-server にいる想定

# アカウントとプロジェクトの設定。
gcloud config set account <your email>
gcloud config set project <your google cloud project id>
# これにより、terraformにGCPのアクセス権限を与える
gcloud auth application-default login

# terraformのstate管理のバケットを作成
gsutil mb gs://dev-my-palworld-tfstate

# 適用
terraform init
terraform plan -var-file terraform.tfvars
terraform apply -var-file terraform.tfvars

パルワールドの専用サーバーにアクセスする

GCEの外部アドレスを確認する
https://console.cloud.google.com/compute/instances

Steamでパルワールドを立ち上げて、専用サーバーへアクセスする
パスワードのチェックをつけ、IPアドレス部分をコンソールで確認した外部IPアドレスに書き換えて接続する
※terraform applyから5分ほど待たないと起動していない可能性があります

さあ、はじめよう

おわりに

サーバー立てっぱなしだと、パルワールドしていなくてもお金がかかってしまうので、遊ぶときに起動する方針がいいと思います。仲間内で相談して決めましょう。
Discord Botでさくっと起動するやつも作りたい。
月のBillingをStripeとか使って割り勘するやつも作りたい。

あと、さくっと専用サーバーをたてることにフォーカスして書いた記事だけど、もう少し技術的なことも別途書けたら書きたい

  • Terraformの構成
  • GCE起動スクリプト
  • etc

参考

Discussion