Factorio headless serverを自宅に構築して、仲間と自動化を楽しむ

Factorioが正式リリースされてから、約1年がたちました。 といってもベータ版と何か明確に変わったかと聞かれてもよくわからないですし、1年たったからといってもおもしろさも変わりません。なぜか定期的にやりたくなる魅力を持っています。 ずっとずっと楽しめるゲームであることは間違いありません。
さて、ネットでFactorioのマルチサーバーについて検索しても数年前の内容が多く困っていました。 この記事では、自分の知る限りのことをまとめました。参考になれば幸いです。
なお、Ubuntuのインストールやポート開放、DDNSの設定などに関しましてはMinecraftの記事で方法を一通り紹介しています。 自宅サーバーを持ちたいけど、なにから始めたらわからないといった方はまずはこちらをお読みください。
https://site.tokiukaze.com/blog/minecraft-server-bedrock-create
マルチサーバー構築
環境はubuntuです。 この記事では、Factorioマルチサーバーの導入についてを主に扱います。 ポート開放やufwについては触れません。
まずは、必要なパッケージを導入します。 sudoコマンドを扱う際は先に sudo -i を使用して、権限を取得しておくとコピペが楽です。 パッケージ導入が終わったらroot権限を使用するのはやめといたほうがいいです。
sudo apt update
sudo apt install -y xz-utils curl
factorio用のディレクトリを作成します。
cd
mkdir app
cd app
headless-serverをダウンロードします。
curl -LOJ https://factorio.com/get-download/stable/headless/linux64
その後ファイルを解凍し、解凍 されたファイル「factorio」に入ります。
tar -Jxvf factorio_headless_x64*.tar.xz
rm factorio_headless_x64*.tar.xz
cd factorio
ワールドの作成とゲームの起動をします。 ゲームクライアントから、すでにあるセーブデータを持ってきてもよいです。
~/app/factorio/bin/x64/factorio --create [セーブデータ名]
~/app/factorio/bin/x64/factorio --start-server [セーブデータ名]
「ctrl + c」でサーバーを終了できます。
ゲームの設定ファイルを編集できます。 下記が設定ファイルになっています。
/config/config.ini
ゲームから接続
factorioから接続できるかを確認してください。
factorioを開きます。 「マルチプレイヤー」 -> 「アドレスに接続」
アドレスとポートを指定します。
例:
tokiukaze.mydns.jp:34197
「接続」をクリック
自動アップデート
面倒なアップデート操作を自動化します。 公開されているアップデートマネージャーを活用します。
https://github.com/narc0tiq/factorio-updater
factorio ディレクトリへ移動します。
cd ~/app/factorio
python3とパッケージのインストールを行います。
sudo apt install -y python3-pip
pip3 install requests
アップデーターをダウンロード。
curl -OL https://raw.githubusercontent.com/narc0tiq/factorio-updater/master/update_factorio.py
実行します。
python3 update_factorio.py --apply-to bin/x64/factorio
python3 <update_factorio.pyのパス> --apply-to <factorio/bin/x64/factoiroのパス>
インストールされているfactorioを指定することで自動でバージョンを確認しアップデートを行います。 現在のfactorioがあるpath を指定する必要があります。
上記コマンドを打ち込むことで、かんたんにサーバーのアップデートを実行することができます。
備考
いろいろと関連する情報を集めています。
セキュリティ設定
factorio はデフォルトで UDPプロトコル で 34197番ポート を利用します。
デフォルトポートは攻撃の対象になりやすいため、変更をお勧めします。 WANからルーターは別のポートで受信し、サーバー側では変わらず34197番ポートで受けるのが楽かと思います。
サーバーコマンド
メッセージやらチートやらゲーム設定やら充実してます。お好みで。
https://wiki.factorio.com/Console/ja