【Ubuntu】Terrariaサーバーのインストール

Ubuntu Server 20.04にTerrariaサーバをインストールする方法です。

VPS上にTerrariaサーバ構築することで、24時間好きな時にマルチプレイで遊ぶことができるようになります。

作業工程

Terrariaサーバを下記の工程でインストールしていきます。

  • ファイアウォール通信許可設定
  • unzipインストール
  • Terraria実行ユーザ作成
  • Terrariaインストール
  • 自動起動設定

ユーザがログインしていない状態でもTerrariaサーバを動作させるために、tmuxの仮想端末上で動作させていきます。

インストール環境

  • OS:Ubuntu Server 20.04
  • Terraria実行ユーザ terraria
  • インストールディレクトリ /opt/terraria
  • tmuxの仮想端末上で動作

ファイアウォール通信許可設定

ufwコマンドで、Terarriaで使用する7777番ポートの通信許可ルールを、ファイアウォールに追加します。

$ sudo ufw allow 7777/tcp
$ sudo ufw reload

設定の確認をufw statusコマンドで行います。

追加したルールのAction部分がALLOWと設定されていることを確認してください。

$ sudo ufw status

unzipインストール

Terrariaサーバのインストール用データは、zip形式で圧縮されているため、解凍に必要なunzipをインストールしておきます。

$ sudo apt update
$ sudo apt install unzip

Terraria実行ユーザ作成

Terrariaサーバを動作させるためのユーザを作成します。

$ sudo adduser terraria
Adding user `terraria' ...
Adding new group `terraria' (1001) ...
Adding new user `terraria' (1001) with group `terraria' ...
Creating home directory `/home/terraria' ...
Copying files from `/etc/skel' ...
New password:       # パスワードを設定
Retype new password:    # パスワードを再入力
passwd: password updated successfully
Changing the user information for terraria
Enter the new value, or press ENTER for the default
	Full Name []:        # Enterキーを押下
	Room Number []:      # Enterキーを押下
	Work Phone []:       # Enterキーを押下
	Home Phone []:       # Enterキーを押下
	Other []:            # Enterキーを押下
Is the information correct? [Y/n] y    #「y」を入力

Terrariaインストール

Terrariaサーバを以下の手順でインストールしていきます。

  • インストール用ディテクトリ作成
  • ダウンロードと解凍
  • 設定ファイル編集

インストール用ディレクトリ作成

Terrariaサーバをインストールするためのディレクトリを作成し、所有者をTerrariaサーバ動作用ユーザに変更します。

$ sudo mkdir -p /opt/terraria/{bin,downloads}
$ sudo chown -R terraria:terraria /opt/terraria

作成したディレクトリはそれぞれ下記のように使っていきます。

  • /opt/terraria/downlods インストール用データのダウンロード先
  • /opt/terraria/bin データの解凍先

ダウンロードと解凍

Terrairaサーバのインストール用データを/opt/terraria/downlodsディレクトリにダウンロードした後に、/opt/terraria/binにダウンロードしたデータを解凍していきます。

ダウンロード

「su」コマンドでterraiaサーバ動作用のユーザになってから、/opt/terraria/downlodsディレクトリに移動します。

$ su - terraria
$ cd /opt/terraria/downloads

下記のURLにアクセスすると、Terrariaサーバのダウンロード用リンクがあるので、最新バージョンのリンクを右クリックしてダウンロード用URLをコピーしてください。

https://terraria.gamepedia.com/Server#Downloads

ダウンロード用URLのコピーが完了したらcurlコマンドでダウンロードを行います。

最新のバージョンがTerraria1.4.3.1がだったのでそちらのURLをコピペしてダウンロードしていきます。

$ curl -LO https://terraria.org/api/download/pc-dedicated-server/terraria-server-1432.zip

バージョン1.4.3.2より新しいものがある場合はそちらのURLをコピペして、ダウンロードを行ってください。

解凍

ダウンロードしたデータをunzipコマンドで/opt/terraria/binディレクトリに解凍します。

$ unzip terraria-server-1432.zip -d /opt/terraria/bin

解凍すると、バージョン番号と同じ名前のディレクトリが作成されます。

$ ls -l /opt/terraria/bin
total 4
drwxrwxr-x 5 terraria terraria 4096 Nov 24 20:29 1432

設定ファイル作成

terrariaサーバの設定ファイルであるserverconfig.txtの雛形が、解凍したディレクトリ内のWindowsディレクトリにありますので、それを/opt/terrariaにコピーして設定ファイルを作成していきます。

$ cp -p /opt/terraria/bin/1432/Windows/serverconfig.txt /opt/terraria
$ cd /opt/terraria
$ vi serverconfig.txt

設定内容

ワールドデータが存在しない場合に行われるワールドの自動生成に関する項目や、ゲームの難易度等の設定を行っていきます。

その他の項目については必要があれば設定を変更してください。

ワールドデータ world=/ワールドデータ保存ディレクトリ/ワールド名.wld
ワールドを自動生成する際のサイズ autocreate=サイズを指定
 1(small), 2(medium), and 3(large)
ワールド名 worldname=ワールド名
ワールドデータ格納パス worldpath=ワールドデータ保存ディレクトリ
作成するワールドの難易度 difficulty=難易度を指定
0(classic), 1(expert), 2(master), 3(journey)
Terrariaサーバ接続パスワード password=パスワードを設定

ワールドのサイズ、ワールド名、難易度については、ワールド作成後に変更することができませんので注意してください。

今回はこんな感じで設定を変更しています。

world=/opt/terraria/Worlds/NewWorld.wld
autocreate=1
worldname=NewWorld
difficulty=0
password=terapass
worldpath=/opt/terraria/Worlds

動作確認

Ubuntu ServerでTerrariaサーバを動作させるための実行ファイルは、Linuxフォルダに格納されているTerrariaServer.bin.x86_64になります。

このファイルを実行できるように実行権限を設定したあとに、実際にTerrariaサーバを起動させて動作確認を行います。

$ cd /opt/terraria/bin/1432/Linux
$ chmod 744 TerrariaServer.bin.x86_64
$ ./TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt

初回起動時はワールド生成に時間が掛かります。

ワールドの作成が完了してTerrariaサーバが起動すると、下記のような画面が表示されます。

Terraria Server v1.4.3.2

Listening on port 7777
Type 'help' for a list of commands.

: Server started

Terrariaサーバが起動しましたら、Terrariaのゲームクライアントから接続してログイン出来るかの動作確認を行ってください。

接続方法

TerrariaのゲームクライアントからTerrariaサーバへの接続方法は下記のとおりです。

  • 「Multiplayer」を選択
  • 「Join via IP」を選択
  • 「Select Player」でログインさせるプレイヤーを選択(プレイヤー作成時の難易度がJoyrney以外のもの)
  • 「Enter Server IP Address」でTerrariaサーバのIPアドレスを入力して「Accept」をクリック
  • 「Enter Server Port」でポート番号を入力し「Accept」をクリック
  • 「Server Requires Password」でパスワードを入力

問題なくログイン出来ることを確認できたら、exitコマンドを実行して一度Terrariaサーバを停止させてください。

: exit

自動起動設定

Ubuntu Serverが起動した時に自動的にTerrariaサーバを起動させるための設定を行っていきます。

起動・停止スクリプト作成

まずはTerrariaサーバの起動・停止を行うためのスクリプトを/opt/terrariaディレクトリに作成していきます。

$ vi /opt/terraria/terra_script.sh

変数説明

スクリプト内で使われている変数について説明します。

変数 設定内容
USERNAME terrariaサーバ動作用ユーザ
SESSION_NAME tmuxの仮想端末名
TERA_VER 実行させたいバージョンのterrariaサーバが格納されているディレクトリ名
BIN_PATH terrariaサーバの実行ファイルがあるディレクトリ
SERVICE terrariaサーバの実行ファイル名
CONFIG 設定ファイル

作成するスクリプトの内容です。

#!/bin/bash
 
USERNAME='terraria'
SESSION_NAME='terraria'
TERA_VER='1432'
BIN_PATH="/opt/terraria/bin/$TERA_VER/Linux/"
SERVICE='TerrariaServer.bin.x86_64'
CONFIG='/opt/terraria/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!"
   else
       echo "Starting $SERVICE..."
       tmux new-session -d -s $SESSION_NAME
       tmux send-keys -t $SESSION_NAME:0 "$BIN_PATH$SERVICE -config $CONFIG" C-m
   fi 
}
 
stop() {
   if pgrep -u $USERNAME -f $SERVICE > /dev/null ; then
       echo "Stopping $SERVICE "
       tmux send-keys -t $SESSION_NAME:0 "say SERVER SHUTTING DOWN IN 10 SECONDS." C-m
       sleep 10
       tmux send-keys -t $SESSION_NAME:0 "exit" C-m
   else
       echo "$SERVICE is not running!"
       exit
   fi

   while :
   do
     if
      pgrep -u $USERNAME -f $SERVICE > /dev/null; then
      echo "Stopping $SERVICE"
      sleep 10
    else
      tmux kill-session -t $SESSION_NAME:0
      echo "Stoped $SERVICE"
      break
    fi
  done
}

case "$1" in
   start)
       start
       ;;
   stop)
       stop
       ;;
   *)
       echo  $"Usage: $0 {start|stop}"
esac

パーミッション変更

スクリプト作成が終わったらパーミッションを変更して、スクリプトを実行できるようにします。

$ chmod 744 /opt/terraria/terra_script.sh

これでスクリプトの実行はterraria実行用ユーザからのみ出来るようになります。

スクリプト動作確認

作成したスクリプトの動作確認を行ってください。

  • Terrariaサーバの起動 /opt/terraria/terra_script.sh start
  • Terrariaサーバの停止 /opt/terraria/terra_script.sh stop

Terrariaサーバの起動確認

スクリプトを実行する際の引数でstartを指定すると、スクリプト内のSESSION_NAMEで指定した名前のセッション(仮想端末)がtmuxで作成され、その中でTerrariaサーバが実行されます。

$ /opt/terraria/terra_script.sh start
tmuxセッションへの接続(アタッチ)

tmuxのセッションに接続に接続することをアタッチと言います。

Terraiaサーバが動作しているセッションにアタッチするには、Terrairaサーバ用のユーザで「tmux ls」コマンドを実行し、動作しているセッションを表示させます。

$ tmux ls
terraria: 1 windows (created Mon Nov 29 15:46:52 2021)

スクリプトで指定したセッション名(terraria)が表示されていることが確認できたら、セッション名を指定してアタッチします。

$ tmux a -t terraria

セッションにアタッチできたら、Terrariaサーバが起動しているか確認してください。

Terraria Server v1.4.3.2

Listening on port 7777
Type 'help' for a list of commands.

: Server started
tmuxセッションからの切断(デタッチ)

アタッチしたセッションから切断することをデタッチと言います。

接続しているセッションからデタッチするには、「Ctrl」+「b」キーを押下した後に「d」キーを押下します。

セッションからデタッチすることができましたら、[detached]と表示されます。

[detached (from session terraria)]

Terrariaサーバの停止確認

スクリプトを実行する際の引数でstopを指定すると、Terrariaサーバを停止させることができます。

$ /opt/terraria/terra_script.sh stop

Terrariaサーバが停止されると、起動していたtmuxのセッションも自動的に削除されます。

$ tmux ls
no server running on /tmp/tmux-1001/default

動作に失敗する場合

スクリプトがうまく動作しない場合は、$ sh -x /opt/terraria/terra_script.sh start または stop といったようにスクリプトを実行すると、コマンドの実行状態が表示されるので何か原因がわかるかもしれません。

$ sh -x /opt/terraria/terra_script.sh start
+ USERNAME=terraria
+ SESSION_NAME=terraria
+ TERA_VER=1432
+ BIN_PATH=/opt/terraria/bin/1432/Linux/
+ SERVICE=TerrariaServer.bin.x86_64
+ CONFIG=/opt/terraria/serverconfig.txt
+ whoami
+ ME=terraria
+ [ terraria != terraria ]
+ start
+ pgrep -u terraria -f TerrariaServer.bin.x86_64
+ echo Starting TerrariaServer.bin.x86_64...
Starting TerrariaServer.bin.x86_64...
+ tmux new-session -d -s terraria
+ tmux send-keys -t terraria:0 /opt/terraria/bin/1432/Linux/TerrariaServer.bin.x86_64 -config /opt/terraria/serverconfig.txt C-m

systemd登録

Terrariaサーバの起動・停止用スクリプトの動作確認が終わりましたら、Terrariaサーバの自動起動設定を行います。

systemd登録用ファイル作成

Terrariaサーバの自動起動にはsystemdを使用しますので、systemd登録用の設定ファイルを作成しますが、この作業はsoduできるユーザで行う必要があります。

ですので、まずsuコマンドでsudoができるユーザになってから作業を行っていきます。

$ su - sudoが出来るユーザ
$ sudo vi /etc/systemd/system/terraria.service
設定内容

Terrariaサーバ動作用のユーザをterraria以外で作成している場合は、Userの項目を適宜変更してください。

[Unit]
Description=Terraria Server
After=network.target local-fs.target
 
[Service]
Type=forking
User=terraria
ExecStart=/opt/terraria/terra_script.sh start
ExecStop=/opt/terraria/terra_script.sh stop
 
[Install]
WantedBy=multi-user.target

systemdへ登録

systemctlコマンドでsystemdに登録します。

$ sudo systemctl enable terraria

自動起動の確認

サーバを再起動してTerrariaサーバが自動起動しているかの確認を行ってください。

$ sudo reboot

自動起動の確認ができたら作業終了となります。

コメント

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