Memorandum of 7dtd server on ConoHa

依頼でGMOのレンタルサーバー(ConoHa)に「7 Days to Die」(以下7dtd)のゲームサーバー構築のサポートをしたので、備忘録。
なお、執筆時点の最新バージョンはAlpha 21.1でした。
初回インストールなどはConoHaのページに載っているので割愛します。
リンク

クライアントとサーバのバージョンが合ってないので、ゲームに入れない問題の解決方法

Steamでサーバの「Alpha 21」とクライアントの「Alpha 21.1」でバージョンが合っておらず、起動できないという状況(サポートを頼まれたきっかけ)。
解決方法は以下の二つあるようですが、今回はサーバのバージョンを上げました。

1.サーバーにインストールされているイメージのバージョンを上げる方法

大体の人はバージョン上げたいんだと思います。
基本的にはConoHaのサポートページ(見つけにくい)に載っています。
リンク
「app_update 294420」と打つ場所、たぶん「204420」はアプリケーションIDなのでそのままでOKで、最新版がダウンロードされるはずです。
コントロールパネルのコンソールでできるけど、使いづらいのでWinSCPとかのSSHクライアント使う方が絶対に楽です(別項「SSHクライアントを使う方法」で説明します)。

2.クライアント側のバージョンを落とす方法

こちらでもとりあえずゲームに入ることはできるようですが…以下のページに情報があるので、一応参考に載せておきます。
リンク

SSHクライアントを使う方法

ConoHaにもブラウザから使えるコンソールが備わっていますが、とても使いづらいので、SSHクライアント(例えばWinSCP)を使う設定を記録しておきます。
具体的にはConoHaの7dtdの設定から、ネットワーク情報のセキュリティグループに「IPv4v6-SSH」を追加するだけでOKです。
サーバー側のファイアーウォールはデフォルトでSSHが許可されていたので特にいじらなくて良いです。
後はWinSCPなど適当なSSHで以下の接続をすればOKです。

  • ホスト:IPアドレス(ConoHaの7dtdの設定で見られるはずです)

  • ユーザー:root

  • パスワード:登録時にrootパスとして指定したもの

  • ポート:22

ゲームの設定を変更する方法

ゲームサーバーの以下のファイルをいじります。

/opt/7dtd/7dtd_server/serverconfig.xml

ファイルの変更後、以下のコマンドでサーバーの再起動を行います。
※再起動しないと設定が反映されません

systemctl restart 7dtd.service

サーバーのタイトルとか説明(Description)に日本語を使いたい場合、UTF-8で保存しないと多分文字化けするので、viエディタとか全然わからんって人は、一旦ローカルマシンにダウンロードしてから慣れたテキストエディタで保存して、またアップロードするってやり方のほうが楽だと思います。
WinSCPはSFTPクライアントの機能も持っているので、別項「SSHクライアントを使う方法」で使えるようにしておくとファイルのやり取りが楽です。

telnetを使えるようにする方法

一番最初にプレイヤーに管理者権限を与えたらそれ以後は使う機会は少ないかもしれませんが、とにかく一番最初に管理者権限を設定するのにtelnetの設定が必要です。
7dtdのサーバーの設定を以下のように変更します(設定方法は別項「ゲームの設定を変更する方法」参照)。

  • 「TelnetEnabled」:「true」

  • 「TelnetPort」:(デフォルトの8081で良い)

  • 「TelnetPassword」:(適切に変えておく)

あとは、SSHクライアントかコンソールでtelnetコマンドを実行して、telnetでゲームのコマンドの実行が可能になります。

以下telnetでのログインの例です。
ログインできたらパスワードを聞かれるので、「TelnetPassword」で指定していたパスワードを入力します。

telnet localhost 8081

なお、telnetから抜ける場合は「quit」コマンドを実行してください。

7dtdのプレイヤーに管理権限を与える方法

誰も権限が無い初期状態で管理者権限を与えるには、対象のプレイヤーがゲームに入っている状態で、telnetで設定が必要です。
別項の「telnetを使えるようにする方法」を参照してください。
telnetに入れたら以下のようにプレイヤーに管理者権限を与えるコマンドを実行します。

#コマンドの例
admin add player_name

管理者権限を持ったプレイヤーは、telnetで行うコマンドの実行(新しく他のプレイヤーに管理者権限を与えたり、キックしたりなど)が、ゲーム画面からできるようになります。

7dtdのWeb管理コンソール(ダッシュボード)を使う方法

7dtdのバージョン21から、Webブラウザからダッシュボード上でコマンドを実行することができるようになったようです。
使用できるようにするためには、以下のステップが必要です。

1.7dtdのサーバー設定でWebダッシュボードを使えるように変更する

以下の設定を変更します(設定方法は別項「ゲームの設定を変更する方法」参照)。

  • 「WebDashboardEnabled」:「true」

  • 「WebDashboardPort」:(デフォルトの8080で良い)

  • 「EnableMapRendering」:※ダッシュボードからマップ見られるようにする設定っぽいから「true」にしておいたけど、不要なら「false」でも良いかも

2.サーバーのファイアーウォール設定でダッシュボードページのポート(デフォルト:8080)接続を許可する

SSH、またはコンソールで以下のコマンドを実行します。

ufw allow 8080

ホントはufwの設定ファイルとかいじった方が管理がスマートなんだけど割愛(詳しくはググってください)。
デフォルトで作られていたUFW(Uncomplicated Firewall)の設定ファイルは以下の場所にあるのでご参考に。

/etc/ufw/applications.d/

3.管理者権限を持ったユーザーで、ゲーム内でコマンド「createwebuser」を実行し、ログイン用のIDとパスワードの設定を行う

見出しの通りですが、コマンドを実行するとブラウザを開く画面が出てくるので、その後IDとパスワードの設定を行うことができます。

4.Webブラウザでダッシュボードページを開き、ログインする

適当なブラウザ(スマホのブラウザとかでも可)で「http://(IPアドレス):8080」を開いて、「Log in」してください。
※「IPアドレス」の部分は契約したサーバーのIPアドレス

ワールドをリセットする方法

サーバー内のすべてのデータをクリアすることでも実現できるようですが、おそらく管理者権限なども同時に消えてしまうと思います。
7dtdの設定ファイルの「GameName」の値を変更するだけで、新しくゲームを始めることができるようです。
この値を元に戻すことで、前の状態のゲームにも戻すことができると思いますし、こちらの方がお手軽でしょう。
設定の変更、適用については、別項「ゲームの設定を変更する方法」で説明します。

※特定のゲーム(ワールド)のデータを消すこともできるのかもしれませんが、調べていません。
多分以下のフォルダをまるっと消すだけだと思うけど未検証。

/home/sdtd/.local/share/7DaysToDie/Saves/(GameWorld)/(GameName)

この記事が気に入ったらサポートをしてみませんか?