正式リリース後のセールで汚いマイクラと言われている 7Days to Die を買ってみた。
折角なのでマルチプレイ用のサーバを立てるかとググってみても Windows か Linux だと ubuntu 環境での構築情報しか見当たらんので AlmaLinux9.4 で構築した内容を折角だから共有してみる。
先ず AlmaLinux9.4 を VM などにテキトーにインストール。
ウチの構成だと余剰だったら、減らせば良いだけなので 8cpu、メモリ 64GB、HDD 100GB のゲームサーバを作るときのテンプレスペックで構築。
OS のインストールは “ソフトウェアの選択” で “サーバー(GUI無し)” を選んで、後は IP とか追加ユーザを適当に設定。
OS インストール後の初回ログイン以降の手順は以下の通り
◆OS 基本アップデート
# dnf groupinstall base
# dnf groupinstall development
# dnf update
◆firewalld の穴あけ
※ゲームに利用するのは TCP/26900 となっているが、実際は UDP/26900、26901、26902、26903
も必要。
始める前に今の設定内容を確認した後、
# firewall-cmd --list-all
不要な許可設定(cockpit と dhcpv6-client)を削除
# firewall-cmd --remove-service=cockpit --permanent
# firewall-cmd --remove-service=dhcpv6-client --permanent
次に必要な通信許可設定を追加
# firewall-cmd --add-port=26900/tcp --permanent
# firewall-cmd --add-port=26900/udp --permanent
# firewall-cmd --add-port=26901/udp --permanent
# firewall-cmd --add-port=26902/udp --permanent
# firewall-cmd --add-port=26903/udp --permanent
追加したら設定を反映させて設定内容を目視確認
# firewall-cmd --reload
# firewall-cmd --list-all
以下のようになっていれば ok
— ログ
# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens34
sources:
services: ssh
ports: 26900/tcp 26900/udp 26901/udp 26902/udp 26903/udp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
–/ログ
◆SELinux 無効化
本来は無効化したくはないけど、動作しない場合の切り分けとして初めから無効化する。
# vi /etc/selinux/config
—
SELINUX=enforcing
↓下記に変更
SELINUX=disabled
—
合わせて grub 側でも無効にする。
# grubby --update-kernel ALL --args selinux=0
# shutdown -r now
◆追加パッケージをインストール
# dnf install glibc.i686 libstdc++.i686
◆ユーザ追加
専用ユーザを作成。
以降プロンプトが $ の時は 7dtd ユーザにて作業を実施。
好きなユーザ名で作成(ここでは 7dtd とする)
# useradd -m 7dtd
パスワードを設定。言うまでもなく簡易なものは設定しない。
# passwd 7dtd
スイッチ出来るか確認。(root からなのでパスワードは聞かれない)
# su - 7dtd
◆無事 7dtd ユーザになれたらインストール用のディレクトリを作成する
$ mkdir -p /home/7dtd/Steam/7dtd/
◆steamcmd のインストール
インストール先のディレクトリに移動
$ cd /home/7dtd/Steam/
必要なファイルを curl で拾ってくる(折り返してるけど、一行で)
$ curl -o steamcmd_linux.tar.gz https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
入手したファイルを解凍
$ tar xvf- steamcmd_linux.tar.gz
解凍したファイルに含まれる steamcmd.sh を実行
$ ./steamcmd.sh
◆7DtD サーバインストール
インストール先を指定する場合は以下で
※名目上インストール先を指定しましたが、必須ではないです。
指定なしだとインストールユーザの home ディレクトリ直下の Steam/steamapps か
カレント直下になると思います。
Steam>force_install_dir /home/7dtd/Steam/7dtd
anonymous ユーザでログイン
Steam>login anonymous
7DtD サーバ(294420) を指定してインストール
Steam>app_update 294420 validate
–成功時のログ
IPC function call IClientAppManager::GetUpdateInfo took too long: 64 msec
Success! App ‘294420’ fully installed.
–/成功時のログ
◆自動起動スクリプトを作成
7DtD サーバの自動起動スクリプトを書きます。
# vi /etc/systemd/system/7dtd-dedicated.service
–内容
[Unit]
Description=7Days to DIE Dedicated Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target
[Service]
ExecStart=/home/7dtd/Steam/7dtd/startserver.sh -configfile=serverconfig.xml
LimitNOFILE=100000
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s INT $MAINPID
Restart=always
User=7dtd
Group=7dtd
TimeoutStartSec=300
[Install]
WantedBy=multi-user.target
–/内容
◆サーバサービスの登録及び起動
デーモンの再起動(おまじない)
# systemctl daemon-reload
自動起動設定
#systemctl enable 7dtd-dedicated.service
サーバの起動
# systemctl start 7dtd-dedicated.service
サーバの停止(ここでは実行しません)
# systemctl stop 7dtd-dedicated.service
◆サーバ設定の編集
設定ファイルはインストールディレクトリ直下の serverconfig.xml なのでこちらを必要に応じて変更します。
設定ファイルがある場所に移動
$ /home/7dtd/Steam/7dtd/
編集する前にバックアップを取得
$ cp -p serverconfig.xml serverconfig.xml.yyyymmdd
$ diff serverconfig.xml serverconfig.xml.yyyymmdd
設定ファイルの編集
$ vi serverconfig.xml
何もしなくても多分動きますが、以下設定は最低限やりましょう
<property name=”ServerName” value=”My Game Host”/>
※サーバ検索時に入力したり、表示される名称なので好きな名前を付けます。
未変更で “My Game Host” のままの人も散見されます。
<property name=”ServerPassword” value=””/>
※パスワードを掛けないとデフォルトの公開レベル Public で作成したサーバが
検索に引っかかって、知らん人が住む可能性があるので必ず設定しましょう。
serverconfig.xml を変更した場合は必ずサービスの停止/起動を行ってください。
# systemctl stop 7dtd-dedicated.service
# systemctl start 7dtd-dedicated.service
ここまででサーバ(Linux)側の設定は終わりです。
◆NW 機器の設定
引き続き NW(一般的にはルータ)側の設定が必要になります。
ご利用の機器によって設定内容が違うので利用されている機器のマニュアルに従って設定してください。
なお、YAMAHA ルータだと、
・NAT(静的 IP マスカレード)
・パケットフィルター
の設定が必要となります。
必要な通信ポートはサーバ側の firewalld で穴あけしたポートと同じく以下になります。
tcp/26900
udp/26900
udp/26901
udp/26902
udp/26903
◇ここまでの設定が正しくできていればゲームクライアントから作成したサーバにログインが出来るかと思います。



長々と書きましたが、設定自体で詰まるところはありませんでしたが、ゲームで使用するポートが設定ファイルの serverconfig.xml では、26900 と決め打ち指定されているのに TCP/UDP の 26900 ポートの開放だけではサーバに接続できず。
serverconfig.xml をよく読むと、”26900 to 26905″ or “27015 to 27020” も必要かもとか微妙なコメントがあり、全開放が必要なのか? TCP なのか UDP なのかすら不明で困ったのでコミュニティサイトを見たら、外人が TCP/26900 だけではなく UDP/2690[0123] の 4 ポートの開放も必要だとアドバイスしていたので助かりました。
ポート関連は先行リリースの時と変わっているとかいう情報もあるので、今後のアップデートで繋がらなくなったら、この辺を怪しめばよさそうです。
ではそんな感じで汚いマイクラを皆さん楽しんでください!