見出し画像

GCP無料枠でterraria server tModLoader calamity諸々導入備忘録(2024/09/19)




昔satisfactoryで同じようなことしたし簡単だろうと思っていたら全然覚えてなくて手こずったので個人的にメモ。
入っているmodは今のところ
"MagicStorage",
"BetterMultiplayer",
"NoMoreTombs",
"SerousCommonLib",
"JPFonts",
"AlchemistNPCLite",
"RecipeBrowser",
"BossChecklist",
"CalamityMod",
"CalamityModMusic",
"ExternalLocalizer",
"StarsAbove",
"SubworldLibrary",
"AutoTrash",
"FargoEnemyModifiers",
"ApacchiisClassesMod2",
"BSWLmod",
"TouhouPets",
"Tokens",
"WeaponDisplay",
"DisableCorruptionSpread",
"BannerBonanza",
"WingSlotExtra",
"UnCalamityModMusic",
"WMITF",
"ClamExtraMusic"
プレイしていないのでバランスおかしかったら消したり増やしたりするかも。

構築に一番手こずったのはScriptをsystemdに登録するところ。
SSHを落としてもサーバーが起動し続けるようにしたかった。
結果的にsystemdに登録できてないような気がするが、SSH落としてもサーバーが起動しっぱなしになったからもういいや。

GCP無料枠の登録

このへんは他サイト見れば理解できたので割愛。

n1-standardが東京リージョンじゃ建てられなかったので台湾にした。
ブートディスクはなんもわからんのでCentOS 9 stream。
SSD永続ディスク20GBにした気がする。

tModLoaderやTerraria serverのインストール

外人様のとても分かりやすい動画があったのでこれ見て構築。
とりあえず最新のやつ落とす。
適宜最新のファイル名にして入力。

Windows PowerShell使ってModPacksをアップロードするのはわかんなかった(多分やればできる)
ブラウザSSHでファイルをアップロードボタンがあったのでそれ使った。便利だね。

これ

自動起動の設定

ここから大変だった。

SSHでscreenを導入

sudo yum install screen

これじゃなんかCentOS 9は導入できなかった。
ググったらEPELリポジトリにあるらしい。
そんなの分からんが。

sudo dnf install -y epel-release
sudo dnf install -y scree

自動起動のScriptを作成する


大体ここ見て構築した。ありがとうございます。でもvanilla Terrariaのserver構築の手順だったのでなんとなくtModloaderで使うように書き換える。

start-tModLoaderServer.shがあるtModLoaderフォルダterra.shを作成。

vi terra.sh

terra.shを弄くる

#!/bin/bash
 
USERNAME='ユーザー名'
SCNAME='ユーザー名'
BIN_PATH="/home/ユーザー名/tModLoader/"
SERVICE='start-tModLoaderServer.sh'
CONFIG='/home/ユーザー名/serverconfig.txt'
 
 
ME=`whoami`
 
if [ $ME != $USERNAME ] ; then
   echo "Please run the $USERNAME user."
   exit
fi
 
start() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
       echo "$SERVICE is already running!"
       exit
   fi
 
   echo "Starting $SERVICE..."
   screen -AmdS $SCNAME $BIN_PATH$SERVICE -config $CONFIG
   exit
}
 
stop() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
       echo "Stopping $SERVICE "
   else
       echo "$SERVICE is not running!"
       exit
   fi
 
   screen -p 0 -S $SCNAME -X eval 'stuff "say SERVER SHUTTING DOWN IN 10 SECONDS. "\015'
   sleep 10
   screen -p 0 -S $SCNAME -X eval 'stuff "exit"\015'
   exit
}
 
save() {
   echo 'World data saving...'
   screen -p 0 -S $SCNAME -X eval 'stuff "say World saveing..."\015'
   screen -p 0 -S $SCNAME -X eval 'stuff "save"\015'
   exit
}
 
status() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
                echo "$SERVICE is already running!"
                exit
   else
       echo "$SERVICE is not running!"
       exit
        fi
}
 
case "$1" in
   start)
       start
       ;;
   stop)
       stop
       ;;
   save)
       save
       ;;
   status)
       status
       ;;
   *)
       echo  $"Usage: $0 {start|stop|status|save}"
esac

'ユーザー名'のところは各自のユーザー名いれてね。
初期設定だったらGoogleアカウント名だった。
本当だったらTerrariaサーバー用のユーザーを作成しなきゃならないらしい。絶対問題ある気がするがまあいいや。
config.txtも中身弄ったけど変わってない気がするからしなくても良し。

パーミッションの設定

このままだと権限がなくて実行できないので付与する。

chmod 744 terra.sh

仮想端末でサーバーが起動するかテスト

sh -x ./terra.sh start

これで一応サーバーが稼働しっぱなしになるっぽい。
いいのかなこれで…。

仮想端末の状況を確認する

screen -ls

There is a screen on:
883.terraria (Detached)
1 Socket in /var/run/screen/S-terraria.

正常に稼働してたら大体こんなのが返ってくる。

仮想端末に接続

screen -r ユーザー名

Terraria Server v1.3.5.3

Listening on port 17777
Type ‘help’ for a list of commands.

正常に稼働してたらこれも大体こんなのが返ってくる。
ここでサーバーコマンドを実行できる。
saveとか

仮想端末から抜ける

「Ctrl」+「a」を押した後に「d」キーを押すことでscreen上の仮想端末から抜けられるらしい。

systemd用ファイル作成

自分はちゃんと設定できなかったので各自ここ見てやってね。

おわり

今のところはこれでずっと稼働してる。
いいのか悪いのかは分からん。
普通の人は自分のPCでサーバー建てるだろうしあんま関係なさそうだ。
誤字とかあったらごめんね。おつかれさまでした。


この記事が気に入ったらサポートをしてみませんか?