LightsailのUbuntu18.04に7 Days to Die鯖を構築する

月5,000円以下で運用したい、VPSでサクッと建てたい!と思ったのでLightsailでやることにしました。

マルチ鯖だと余裕で夜通しプレイするやつがいるので、基本的に24時間動かすことを前提にしています。

スペックは以下です。24時間稼働し続けても1ヶ月$40です。

さて、とりあえずコンソールでLightsailのインスタンスを作成して、SSHキーペアもアップロードして、静的IPも割り当てておきます。全部Webコンソールからポチポチでできます。

とりあえず環境構築

CentOSならWikiに手順が載っています。今回はUbuntu18.04を入れた前提なので64bitとして進めます。

まずは必要な依存パッケージとツールを導入していきます。dpkgでi386アーキテクチャを追加しておきます。

$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install lib32gcc1
$ sudo apt-get install screen wget

次にSteam関連のツールとアップデートを行います。シェルスクリプトファイルを実行してプロンプトがSteam>になればOKです。Steamプロンプトはquitで抜けられると書いてあります。

$ mkdir ~/steamcmd
$ cd ~/steamcmd
$ wget http://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
$ tar zxvf steamcmd_linux.tar.gz
$ bash ./steamcmd.sh

...省略

Steam>

では早速コンソールからSteamプロンプトでログインしてみます。login {USER_NAME}するとパスワードを求められるので入力します。Steam Guardによって登録されているメールアドレスに認証コードが飛ぶので、それも併せて入力します。

Steam> login {YOUR_USER_NAME}
password: xxxxxxxxxx

This computer has not been authenticated for your account using Steam Guard.
Please check your email for the message from Steam, and enter the Steam Guard
 code from that message.
You can also enter this code at any time using 'set_steam_guard_code'
 at the console.

Steam Guard code:XXXXX

Logged in OK
Waiting for user info...OK

7 Daysのサーバーファイル一式をダウンロードします。294429というのは7 DaysのゲームIDのようです。7daysのゲームファイル一式を7dtd_serverディレクトリにダウンロードするというコマンドのようです。ダウンロードが終わるまで時間がかかるので気長に待ちましょう。

Steam> force_install_dir 7dtd_server
Steam> app_update 294420

...省略

Success! App '294420' fully installed.
Steam> quit

ダウンロードが完了したら、quitでSteamプロンプトを抜けてください。プロンプトを実行したカレントディレクトリに7dtd_serverというディレクトリが新しく作成されているはずです。

ここまでできたら次に7 Daysのサーバー設定を変更していきます。詳細な設定項目が知りたければコチラを参照ください。

$ cd 7dtd_server
$ vim serverconfig.xml

XML編集は人類にはまだ早いですが頑張りましょう。

サーバー設定の編集が終わったらいよいよ起動してみます。起動には時間がかかるので気長に待ちましょう。

$ screen -S 7dtd
$ ./7DaysToDieServer.x86_64 -logfile output.log -configfile=$HOME/steamcmd/7dtd_server/serverconfig.xml -dedicated

ゲームのプロセスを落とさずにセッションを離れたい場合は、Ctrl-A => Ctrl-Dでデタッチする事ができます。

再度アタッチしたい場合は、以下のコマンドを実行します。

$ screen -r 7dtd

サーバーのログファイルはoutput.logに出力されます。screen -rしてるとCtrl-Cなどしてしまった場合にサーバーが落ちてしまうので、ログを確認したい場合は以下のようにします。

$ tail -F output.log

or

$ view output.log

このままだとゲームクライアントからはまだ接続ができないので、最後にポートを開放してあげます。WikiによるとTCPの26900、UDPの26900-26903までを開放すると良いらしいです。

$ sudo iptables -I INPUT -p tcp -m tcp --dport 26900 -j ACCEPT
$ sudo iptables -I INPUT -p udp -m udp --dport 26900 -j ACCEPT
$ sudo iptables -I INPUT -p udp -m udp --dport 26901 -j ACCEPT
$ sudo iptables -I INPUT -p udp -m udp --dport 26902 -j ACCEPT
$ sudo iptables -I INPUT -p udp -m udp --dport 26903 -j ACCEPT

$ sudo iptables -L
chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:26903
ACCEPT     udp  --  anywhere             anywhere             udp dpt:26902
ACCEPT     udp  --  anywhere             anywhere             udp dpt:26901
ACCEPT     udp  --  anywhere             anywhere             udp dpt:26900
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:26900

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

# このままだとUbuntuでは再起動時にiptablesが消えてしまうので、
# 再起動後にiptablesを復元してくれるやつをインストールします
$ sudo apt-get install iptables-persistent

サーバー起動時に以下のようなエラーが出ていますが、無視して大丈夫みたいです。ゲームクライアントからの接続時にoutput.logに何も出ない場合は、ネットワーク周りを疑いましょう。

[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.

良い7 Daysライフを


この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

😘
2
goを書く仕事をしています お仕事のご依頼はDMにて https://labo.yukpiz.me/
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。