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でサーバー建てるだろうしあんま関係なさそうだ。
誤字とかあったらごめんね。おつかれさまでした。
この記事が気に入ったらサポートをしてみませんか?