【Terraria】TShock Server構築の仕方

# はじめに
TShockの記事は基本的に古いか英語であり、サーバー構築についてあまり情報がないので記事にまとめてみました。
# 構築環境
- ubuntu 22.04LTS
- TShock 5.1.3
- .NET runtime 6.0
# TShock について
[https://terraria.fandom.com/wiki/TShock](https://terraria.fandom.com/wiki/TShock)より
>TShock is server software offering a vast array of server tools, such as:
Admin system to execute commands in-game
Build protection
Warping
Plugin support to get more commands or fixes
Some minor fixes/tweaks to the vanilla server >software
Edit hidden world settings in-game Other features

簡潔に言うと便利なコマンドや設定ができるサーバーソフトウェア
プラグインによる拡張
などがあります。
# サーバー構築
## ufw設定
基本的にTShockで使うipアドレスは7777番なのでまずはufwでポート開放しておきます。
<b>あらかじめ、ルーターの方もポート開放しておいてください。</b>
外部から接続できない原因は大体ルーターの設定ができてないからだと思います。
``` 
$ sudo ufw allow 7777/tcp
```
パスワードが求められる場合はパスワードを入力。
その後ファイアウォール有効化。
```
$ sudo ufw enable
```
これでポート周りは完了です。
## 実行ユーザー作成
サーバーを動作させるためのユーザーを作成します。
```
$ sudo adduser tshock
ユーザー `tshock' を追加しています...
新しいグループ `tshock' (1001) を追加しています...
新しいユーザー `tshock' (1001) をグループ `tshock' に追加しています...
ホームディレクトリ `/home/tshock' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しい パスワード: #パスワードを入力
新しい パスワードを再入力してください: #パスワードを再入力
passwd: パスワードは正しく更新されました
tshock のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
	フルネーム []: #Enter      
	部屋番号 []: #Enter
	職場電話番号 []: #Enter
	自宅電話番号 []: #Enter
	その他 []: #Enter
以上で正しいですか? [Y/n] #"y"を入力
```
## TShockインストール
https://github.com/Pryaxis/TShock/releases

URLから最新リリースの~linux-x64-Release.zipのリンクアドレスをコピーします。
![Screenshot from 2023-03-28 18-56-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3303001/8bc14c32-d3f6-9edd-3679-cfb13cce02a1.png)


今回は実行ユーザーのホームディレクトリに作成するので
作成した実行ユーザーにログインし、展開。
```
$ su tshock
$ wget https://github.com/Pryaxis/TShock/releases/download/v5.1.3/TShock-5.1.3-for-Terraria-1.4.4.9-linux-x64-Release.zip
$ unzip TShock-5.1.3-for-Terraria-1.4.4.9-linux-x64-Release.zip
```
を実行。
解凍すると、TShock-なんちゃら-linux-x64-Releaseみたいなディレクトリがあり、その中に.tarファイルがあるのでまず解凍します。
```
$ tar xvf　/path/to/*.tar
```
解凍するとこんな感じになってると思います。
![Screenshot from 2023-03-28 21-38-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3303001/65552c1b-39a5-6ee2-e1ec-beab576f24c1.png)
この中の<b>TShock.Server</b>が実行ファイルになるので、まず起動します。
起動すると、
![Screenshot from 2023-03-28 21-46-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3303001/4622d679-df6e-a6e5-b608-146e5ccb8daf.png)
のような表示がされます。(.NET未インストールのみ)
要するに「.NETランタイムをインストールしろ」とのことです。
## .NETインストール
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu

上のURLから.NET runtime 6.0をインストールします。
```
$ sudo apt install aspnetcore-runtime-6.0
```
もう一度TShock.Serverを実行。
Choose World画面になったら成功です。
## ワールドの立て方
サーバーを建てるワールドを指定。例として今回は1を選択。
![Screenshot from 2023-03-28 22-12-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3303001/9d48e426-89a4-7b36-bbf0-f2c6ba080740.png)
次にサーバーの最大プレイヤー数を設定。そのままEnterを押すと16人になります。
![Screenshot from 2023-03-28 22-14-02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3303001/7a575949-b622-6059-1955-a27db2c7bfb0.png)
続いてポート番号を設定。(デフォルトは7777)
![Screenshot from 2023-03-28 22-14-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3303001/091726a1-ae4c-1b3b-fc53-b3538724d6f2.png)
続いて、自動的にポートを開放するかと聞かれますがすでに開放したのでEnter直下。
![Screenshot from 2023-03-28 22-19-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3303001/7e7e48f9-9cf0-7252-10fb-08bc797cfcdd.png)
最後に、パスワードを設定。今回は未入力。
![Screenshot from 2023-03-28 22-20-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3303001/454f8e7a-fc95-2cb5-5002-98d23378fd6b.png)
<b>Server started</b>と出たら立ち上げ完了です。
# 接続方法
まず、Terrariaを起動します。起動後、Multiplayer>Join via IP>キャラクター選択>IPアドレス入力　となります。
サーバーを建てたPCで接続するなら、IPアドレスに<b>localhost</b>と入力。
同じルーター内でサーバーを建てたPCと別の場合は、サーバーのPCのプライベートIPアドレスを入力。そのPCのプライベートIPアドレスは、
```
$ hostname -I
```
の、「192.168.~　」みたいなやつです。
外部からの接続の場合は、ルーターのグローバルIPアドレスを入力。
グローバルIPアドレスは次のサイトで確認できます。
https://www.cman.jp/network/support/go_access.cgi
# 終わりに
以上で基本的なTShockのサーバー構築は終了です。
あとは自由にプラグインなどを入れて楽しんでください。
初めての投稿で参考になれば何よりです。
では、また。