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
自動起動の確認ができたら作業終了となります。
コメント