ConoHaでFactorioのサーバーを建てる
初期設定で建てる
サーバー追加
ConoHa for GameならイメージタイプでFactorioを選択してサーバーを追加するだけで即接続可能なサーバーが起動する。
Factorioサーバーに接続する
Factorioを起動し、マルチプレイ>アドレスに接続を選択。
追加したサーバーのIPアドレスを入力して接続をクリックすると接続できる。
サーバーの設定をする
SSH接続の準備
teratermやWinSCP等、ConoHaのコンソール以外からサーバーの操作を行う場合、セキュリティグループでポート22の通信を許可する必要がある。
IPv4v6-SSHという名前のセキュリティグループが最初からあるのでそれを設定すれば良い。
server-settings.jsonを配置する
Factorioのサーバー設定はjsonファイルで行うが、初期状態ではその設定ファイルは存在していない。
/opt/factorio/factorio/dataにserver-settings.example.jsonがあるのでそれをserver-settings.jsonという名前で同じディレクトリにコピーする。
server-settings.jsonを編集する
server-settings.jsonに各パラメータの説明があるので必要そうなものを設定する。
特にname, game_password, オートセーブは設定しておくと良い。
server-settings.jsonを有効にする
/etc/systemd/system/factorio.serviceのExecStartを以下の通り変更する。
修正前
ExecStart=/bin/sh -c '/usr/bin/screen -DmS factorio /opt/factorio/factorio/bin/x64/factorio --start-server /opt/factorio/savedata/factorio_save'
修正後
ExecStart=/bin/sh -c '/usr/bin/screen -DmS factorio /opt/factorio/factorio/bin/x64/factorio --start-server /opt/factorio/savedata/factorio_save --server-settings /opt/factorio/factorio/data/server-settings.json'
以下のコマンドを実行しFactorioサーバーを再起動する。
再起動するとserver-settings.jsonが有効になる。
systemctl daemon-reload
systemctl restart factorio.service
設定が有効であることを確かめる
Factorioからサーバーに接続して設定が変わったことを確かめる。
もしサーバーへの接続が失敗したり設定が変わっていなかったりしたらログを確認する。
エラーが発生した場合 /opt/factorio/factorio/factorio-current.logに出力されているはず。
rconを使う
ユーザーがサーバーを建てるゲームにはrconという機能が備わっていることがあり、factorioでも有効にすることが出来る。
rconを使うとサーバーの外部からコマンドを実行することが出来る。
rconを有効にして起動する
/etc/systemd/system/factorio.serviceのExecStartを以下の通り変更する。
修正前
ExecStart=/bin/sh -c '/usr/bin/screen -DmS factorio /opt/factorio/factorio/bin/x64/factorio --start-server /opt/factorio/savedata/factorio_save --server-settings /opt/factorio/factorio/data/server-settings.json'
修正後
ExecStart=/bin/sh -c '/usr/bin/screen -DmS factorio /opt/factorio/factorio/bin/x64/factorio --start-server /opt/factorio/savedata/factorio_save --server-settings /opt/factorio/factorio/data/server-settings.json --rcon-port 34197 --rcon-password パスワード'
以下のコマンドを実行しFactorioサーバーを再起動する。
systemctl daemon-reload
systemctl restart factorio.service
外部から接続可能にする
セキュリティグループの設定
rcon用のセキュリティグループは用意されていないので作成する。
ConoHaのコントロールパネルからセキュリティグループを開き、以下の設定で追加する。
通信方向 | イーサタイプ | プロトコル | ポート範囲 | IP/CIDR |
---|---|---|---|---|
In | IPv4 | TCP | 34197 | 0.0.0.0/0 |
In | IPv6 | TCP | 34197 | ::/0 |
作成したセキュリティグループをサーバーに設定する。
ufwの設定
サーバー上で以下のコマンドを実行しポート34197の通信を許可する。
ufw allow 34197/tcp
接続テスト
適当なrconクライアントで適当なコマンドを実行してみる。
以下はpythonの例。
import factorio_rcon
client = factorio_rcon.RCONClient(IPアドレス, 34197, パスワード)
response = client.send_command("/time")
print(response)