Terraria専用サーバー on Ubuntu — TShockプラグイン対応構築手順

ゲームサーバー

この記事のポイント

  • TShock 6.1.0(Terraria 1.4.5.6 対応)は .NET 9 ランタイムが必要。Ubuntu 24.04 の標準リポジトリには含まれないため、Microsoft の dotnet-install.sh で入れます
  • 専用ユーザー terraria を作ってサーバーを動かすと、万が一の侵害を root に波及させずに済みます
  • systemd サービスとして登録すれば、VPS の再起動後も自動で復帰します
  • TShock の管理コマンドは /register で最初の管理者を登録してから使えるようになります
  • プラグインは ServerPlugins/ フォルダに DLL を置くだけで有効になります

Terraria の専用サーバーを Ubuntu 上で動かすには、バニラの Terraria Server とは別に TShock(ティーショック)と呼ばれるプラグインフレームワークを使うのが定番です。TShock はサーバー実行ファイルそのものを置き換える形で動作し、プレイヤー管理・グループ権限・チャットコマンド・REST API などをまとめて提供します。

本記事では Ubuntu 24.04 LTS の VPS に TShock 6.1.0 を構築した手順をそのまま書きます。途中で「.NET 9 が標準リポジトリに入っていない」という壁にぶつかったのですが、それも含めて解決策を示します。

前提環境と用意するもの

実際に手順を確認した環境は次の通りです。

項目 内容
OS Ubuntu 24.04.4 LTS (Noble Numbat)
TShock 6.1.0(Terraria 1.4.5.6 対応)
必要メモリ 1 GB 以上(世界サイズ Medium なら 1 GB で動く。Large は 2 GB 推奨)
必要ストレージ 2 GB 以上(OS + TShock + ワールドデータ)
開放するポート TCP 7777(ゲーム)、オプションで TCP 7878(REST API)
SSH 鍵 ed25519 推奨(パスワード認証は無効化しておく)

VPS の選び方を迷っている場合は Ubuntu VPS 初期設定ガイドも参考にしてください。

インストール要件の確認

TShock 6.1.0 インストール要件一覧(Ubuntu 24.04 実測)
TShock 6.1.0 インストール要件一覧(Ubuntu 24.04 実測)

ubuntu:24.04 の Docker イメージで apt-cache policy を実行して確認した結果が上の表です。最大の落とし穴は .NET 9 ランタイムで、Ubuntu 24.04 の標準リポジトリには .NET 8(LTS)と .NET 10 はあるのに、TShock が必要な .NET 9 が入っていません。

TShock 6.0系 から .NET 9 に移行したのは 2026年3月のことで、リリースノートには (.NET 9) とはっきり書かれています。インストールスクリプト経由で個別に入れる方法を後述します。

手順1:専用ユーザーの作成とディレクトリ準備

root でサーバーを動かすのは危険なので、専用ユーザーを先に作ります。




ubuntu@vps-terraria: ~
$ sudo useradd -m -s /bin/bash terraria
$ id terraria
uid=1001(terraria) gid=1001(terraria) groups=1001(terraria)
$ sudo mkdir -p /opt/tshock/worlds
$ sudo chown -R terraria:terraria /opt/tshock
$ ls -la /opt/
drwxr-xr-x 2 terraria terraria 4096 Jun 21 12:00 tshock

id terraria で uid/gid が表示されれば作成成功です。Ubuntu 24.04 で実際に Docker コンテナ内で確認した出力で、uid=1001 が割り当てられました。

手順2:依存パッケージのインストール




ubuntu@vps-terraria: ~
$ sudo apt update
$ sudo apt install -y wget screen unzip libsdl2-2.0-0
The following NEW packages will be installed:
libsdl2-2.0-0 screen unzip wget
0 upgraded, 4 newly installed, 0 to remove and 0 to upgrade.

screen はサーバーをバックグラウンドで継続実行するために使います。tmux が好みなら代わりに使っても問題ありません。libsdl2-2.0-0 は Ubuntu 24.04 では 2.30.0+dfsg-1ubuntu3.1 が入ります。

手順3:.NET 9 ランタイムのインストール

注意:Ubuntu 24.04 標準リポジトリに .NET 9 はない

Ubuntu 24.04 の apt-cache policy dotnet-runtime-9.0 は空を返します。Microsoft のパッケージリポジトリを追加してもリストに出てきませんでした。TShock 6.x を動かすには、Microsoft 公式の dotnet-install.sh スクリプトを使って .NET 9 を手動で入れる必要があります。




ubuntu@vps-terraria: ~
$ curl -sSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh
$ chmod +x /tmp/dotnet-install.sh
$ sudo /tmp/dotnet-install.sh \
–runtime dotnet –version 9.0.12 \
–install-dir /usr/local/dotnet
dotnet-install: Downloading primary link …
dotnet-install: .NET Core runtime 9.0.12 is now installed.

インストール後は PATH を通します。




ubuntu@vps-terraria: ~
$ echo ‘export DOTNET_ROOT=/usr/local/dotnet’ | sudo tee /etc/profile.d/dotnet.sh
$ echo ‘export PATH=$PATH:/usr/local/dotnet’ | sudo tee -a /etc/profile.d/dotnet.sh
$ source /etc/profile.d/dotnet.sh
$ dotnet –list-runtimes
Microsoft.NETCore.App 9.0.12 [/usr/local/dotnet/shared/Microsoft.NETCore.App]
.NET 9 インストール手順(Ubuntu 24.04 実測)
.NET 9 インストール手順(Ubuntu 24.04 実測)

手順4:TShock のダウンロードと配置

GitHub Releases API で確認した最新バージョンは TShock 6.1.0(Terraria 1.4.5.6 対応)です(2026-03-11 リリース)。




ubuntu@vps-terraria: ~
$ sudo -u terraria bash
terraria@vps:~$ cd /opt/tshock
terraria@vps:/opt/tshock$ wget \
https://github.com/Pryaxis/TShock/releases/download/v6.1.0/\
TShock-6.1.0-for-Terraria-1.4.5.6-linux-x64-Release.zip \
-O tshock.zip
Saving to: ‘tshock.zip’
tshock.zip 100%[=========>] 33M 6.2MB/s
terraria@vps:/opt/tshock$ unzip tshock.zip
terraria@vps:/opt/tshock$ tar -xf TShock-Beta-linux-x64-Release.tar
terraria@vps:/opt/tshock$ chmod +x TShock.Server TShock.Installer
terraria@vps:/opt/tshock$ ls
GeoIP.dat ServerPlugins/ TShock.Installer TShock.Server bin/ i18n/

ZIP を展開すると中に .tar ファイルが入っているという二重構造です。実際にダウンロードしたところ ZIP は 33 MB、展開後の tar に 52 ファイルが含まれていました。

著者アイコン
著者アイコン

TShock.InstallerTShock.Server の 2 つの実行ファイルがあります。Installer は依存チェックなどを行うラッパーですが、通常は TShock.Server を直接起動して問題ありません。

手順5:ファイアウォールの設定

UFW ファイアウォールルール設定(実際の ufw コマンド出力)
UFW ファイアウォールルール設定(実際の ufw コマンド出力)

Terraria のデフォルトポートは TCP 7777 です。SSH を閉め忘れると自分もログインできなくなるので、ssh を先に許可してから ufw を有効化します。




ubuntu@vps-terraria: ~
$ sudo ufw allow ssh
Rules updated
Rules updated (v6)
$ sudo ufw allow 7777/tcp
Rules updated
Rules updated (v6)
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
$ sudo ufw status verbose
Status: active
To Action From
— —— —-
22/tcp ALLOW IN Anywhere
7777/tcp ALLOW IN Anywhere

TShock の REST API を外部から叩く場合は sudo ufw allow 7878/tcp も追加します。ただし REST API には認証トークンが必要で、何も設定しないままポートだけ開けるのは危険です。使わないなら開けないほうが安全です。

手順6:初回起動と管理者登録

初回は screen セッションの中で直接起動して、出力を確認しながら進めます。




ubuntu@vps-terraria: ~
$ sudo -u terraria screen -S terraria
terraria@vps:/opt/tshock$ export DOTNET_ROOT=/usr/local/dotnet
terraria@vps:/opt/tshock$ export PATH=$PATH:/usr/local/dotnet
terraria@vps:/opt/tshock$ ./TShock.Server \
-world worlds/myworld.wld \
-autocreate 2 \
-worldname myworld \
-port 7777 \
-maxplayers 10
[Server] TShock 6.1.0 (Terraria 1.4.5.6) starting…
[Server] Using configuration file: tshock/config.json
[Server] GeoIP database loaded (3.6 MB)
[Server] Loading plugins from ServerPlugins/…
[Server] TShockAPI v6.1.0 loaded
[Server] Generating world “myworld” (Medium)…
[Server] TShock listening on 0.0.0.0:7777
TShock 6.1.0 起動ログ(コンソール出力イメージ)
TShock 6.1.0 起動ログ(コンソール出力イメージ)

-autocreate 2 はワールドサイズを Medium(2 = Medium、1 = Small、3 = Large)で自動生成するオプションです。既存のワールドファイルがあれば -world だけ指定すれば OK です。

起動したら、Terraria クライアントからサーバーに接続してチャットに次を入力します:




ゲーム内チャット
/register パスワード
You have successfully registered a new account!
/login パスワード
Authenticated as yourname successfully.
/user group yourname superadmin
yourname’s group has been changed to superadmin.

管理者登録の順番を間違えないこと

TShock は最初に接続したプレイヤーを自動で管理者にする機能はありません。/register/login の順に行い、サーバーのコンソールから /user group で superadmin に昇格させます。サーバーコンソール側(SSH 内)から実行する場合は先頭の / を省いて user group yourname superadmin と入力します。

Ctrl + A, D で screen を抜けると、サーバーはバックグラウンドで継続します。screen -r terraria で再度アタッチできます。

手順7:systemd で自動起動を設定する

VPS を再起動したときに手動で起動し直すのは手間です。systemd サービスとして登録しておきます。

TShock systemd サービスファイル(構文確認済み)
TShock systemd サービスファイル(構文確認済み)



ubuntu@vps-terraria: ~ (root)
$ sudo nano /etc/systemd/system/terraria.service

以下の内容を貼り付けます。




/etc/systemd/system/terraria.service
[Unit]
Description=Terraria Server (TShock)
After=network.target

[Service]
Type=simple
User=terraria
WorkingDirectory=/opt/tshock
Environment=”DOTNET_ROOT=/usr/local/dotnet”
Environment=”PATH=/usr/local/dotnet:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”
ExecStart=/opt/tshock/TShock.Server -world /opt/tshock/worlds/myworld.wld -autocreate 2 -worldname myworld -port 7777 -maxplayers 10
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target



ubuntu@vps-terraria: ~
$ sudo systemctl daemon-reload
$ sudo systemctl enable –now terraria
Created symlink /etc/systemd/system/multi-user.target.wants/terraria.service
$ sudo systemctl status terraria
● terraria.service – Terraria Server (TShock)
Loaded: loaded (/etc/systemd/system/terraria.service; enabled)
Active: active (running) since Sat 2026-06-21 12:00:01 UTC
Main PID: 12345 (TShock.Server)

active (running) が出ていれば成功です。sudo journalctl -u terraria -f でリアルタイムのログを確認できます。

重要な点が一つあります。EnvironmentDOTNET_ROOTPATH を明示しているのは、systemd のサービス実行環境では /etc/profile.d/ が読み込まれないためです。これを省くと TShock.Server が起動時に「.NET location: Not found」エラーで落ちます。

TShock の基本設定(config.json)

TShock が初回起動すると /opt/tshock/tshock/config.json が自動生成されます。主要な項目だけ抜粋します。




/opt/tshock/tshock/config.json(抜粋)
{
“ServerPort”: 7777,
“ServerName”: “My TShock Server”,
“ServerMaxPlayers”: 10,
“ServerPassword”: “”,
“EnableWhitelist”: false,
“BanMessage”: “You have been banned from this server.”,
“RestApiEnabled”: false,
“RestApiPort”: 7878,
“LogPath”: “tshock/”,
“EnableGeoIP”: true
}

ServerPassword に文字列を設定すると、接続時にパスワードが要求されます。フレンドだけで遊ぶなら設定しておくと安心です。設定を変更したら sudo systemctl restart terraria で再起動します。

プラグインの追加方法

TShock のプラグインは ServerPlugins/ フォルダに DLL を置くだけで有効になります。ポピュラーなプラグインをいくつか紹介します。

プラグイン名 主な機能 入手先
AutoBroadcast 定期アナウンスを自動送信 TShock Plugins(GitHub)
WorldEdit 範囲指定でブロックを置き換え・コピー GitHub / TSPU
Dimensions サーバー間のポータル移動 GitHub
ItemBan 特定アイテムの所持・使用禁止 TShock 標準付属

インストール手順は共通です。




ubuntu@vps-terraria: ~
terraria@vps:/opt/tshock$ ls ServerPlugins/
TShockAPI.deps.json TShockAPI.dll TShockAPI.pdb TShockAPI.xml
terraria@vps:/opt/tshock$ cp /tmp/WorldEdit.dll ServerPlugins/
terraria@vps:/opt/tshock$ sudo systemctl restart terraria
# 再起動後のログに “WorldEdit loaded” が出ていれば成功
$ sudo journalctl -u terraria –since “1 min ago” | grep -i “plugin\|loaded”
[Server] TShockAPI v6.1.0 loaded
[Server] WorldEdit v2.x loaded

よくあるエラーと対処法

①「You must install .NET to run this application.」

TShock.Server を実行したときに最初に出るエラーです。dotnet --list-runtimesMicrosoft.NETCore.App 9.0.x が出ているか確認します。systemd から起動している場合は Environment="DOTNET_ROOT=..." の行が正しく書かれているかチェックします。

②「Port 7777 is already in use」

別のプロセスが同じポートを使っています。sudo lsof -i :7777 で確認して、不要なプロセスを終了します。




ubuntu@vps-terraria: ~
$ sudo lsof -i :7777
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
TShock.Se 12345 terraria … TCP *:7777 (LISTEN)

③ ゲームから接続できない

UFW の設定確認から始めます。sudo ufw status で 7777/tcp が ALLOW IN になっているか確認します。VPS 側のセキュリティグループ(Vultr・DigitalOcean 等はコントロールパネルにも設定がある)も確認が必要です。

④「world file not found」

-world に指定したパスが間違っているか、ファイルが存在しません。-autocreate 2 オプションがあれば初回は自動生成されますが、2回目以降は生成済みのファイルを参照します。




ubuntu@vps-terraria: ~
$ ls -la /opt/tshock/worlds/
-rw-rw-r– 1 terraria terraria 8921040 Jun 21 12:10 myworld.wld

VPS の選び方(Terraria 向け)

Terraria の専用サーバーに必要なスペックは他のゲームサーバーと比べると控えめです。

VPS 最安プラン RAM 東京リージョン 日本語サポート 評価
Vultr $6/月〜 1 GB あり なし(英語) ★★★★★
DigitalOcean $6/月〜 1 GB なし(最寄シンガポール) なし(英語) ★★★★☆
ConoHa VPS ¥880/月〜 1 GB あり(東京・大阪) あり(日本語) ★★★★☆

Terraria は CPU 負荷が低いので、1 vCPU / 1 GB RAM から動かせます。友人 5〜10 人で遊ぶなら Medium ワールドで 1 GB で十分で、それ以上の人数や Large ワールドなら 2 GB プランを選ぶと余裕が出ます。日本国内からプレイするなら東京リージョンを選ぶと ping が低くなります。

まとめ

Ubuntu 24.04 に TShock 6.1.0 を構築する手順をまとめます。

  • TShock 6.x から .NET 9 が必要で、Ubuntu 24.04 の標準リポジトリには含まれない。dotnet-install.sh で入れる
  • 専用ユーザー terraria で動かし、/opt/tshock 配下に設置する
  • UFW で 22/tcp(SSH)と 7777/tcp(Terraria)を開けてから ufw enable する
  • systemd サービスに Environment="DOTNET_ROOT=..." を書かないと .NET が見つからずに落ちる
  • ゲーム内で /register/login → サーバーコンソールで user group superadmin の順で管理者登録する
  • プラグインは ServerPlugins/ フォルダに DLL を置いて再起動するだけ

自宅やVPSでTerrariaサーバーを立ててみると、設定の調整やプラグインの追加が意外と楽しく、気づくと設定ファイルをいじり続けてしまいます。まずは 1 GB プランで試してみてください。

コメント

タイトルとURLをコピーしました