sashimi4’s diary

日々の雑多なメモを書きます

さくらのVPSでFactorioマルチプレイサーバを建てる

まえがき

こんにちは、おさしみです。

最近Factorioに熱中しています。 知人とマルチプレイするようになりましたが、鯖立て役が必要なのが煩わしかったので、マルチプレイサーバを建てることにしました。 その手順と方法を、他の方のためにここに記しておこうと思います。

手順・仕組みはこちらの記事とほとんど同じです。 sashimi4.hatenablog.com

いつでも気軽にプレイすべく常時稼働させておきたかったので、コストパフォーマスンスの観点からまたまた さくらのVPS を使用することにしました。

なお、現在は2Gプランの初期費用無料キャンペーン中とのこと!
=> 2018/07/03 まで延長したとのことです!!

あとからスペックアップ(スケールアップ機能)はできるものの、予めスペックを要するとわかっている場合(e.g. 同時プレイ人数が多い等)はキャンペーンの活用をおすすめします。 www.sakura.ad.jp

手順

VPSを契約

省略します。

こちらの記事を参考に進めてください。

コピペ一発で!さくらのVPSでマイクラマルチサーバー - sashimi4’s diary

スタートアップスクリプトを登録

操作はこちらの記事と同じなので、詳細な手順については省きます。

コピペ一発で!さくらのVPSでマイクラマルチサーバー - sashimi4’s diary

下記スクリプトをコピー&ペースト登録します。

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

apt -y update || exit 1
apt -y install curl || exit 1
apt -y install screen || exit 1

# XXX: tar Jxvf でうまくいかないので一旦 xz を使う
# XXX: tar.gz で落ちる場合もあるらしいので tar zxvf と使い分けたい
apt -y install xz-utils

# さくらのVPSのUbuntu16.04のiptablesのデフォルト設定にfactorio使用ポートを追加
cat > "/etc/iptables/iptables.rules" <<EOF
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -p udp -m udp --dport 34197 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOF
iptables-restore < /etc/iptables/iptables.rules

# サーバファイルダウンロード
cd /home/ubuntu/
curl -LOJ https://www.factorio.com/get-download/0.16.36/headless/linux64

xz -dv factorio_headless*.tar.xz
tar xfv factorio_headless_*.tar

# サーバ作成(今すぐ遊びたい方や動作確認用。好みの設定があれば書き換えてください。)
./factorio/bin/x64/factorio --create first_map

# サーバ起動スクリプトを作成
cat <<EOF > /home/ubuntu/factorio/bin/x64/start_factorio_server.sh
#!/bin/bash
screen -AdmS factorio-server /bin/bash -lc 'cd /home/ubuntu/factorio/ && ./bin/x64/factorio --start-server ~/first_map'
EOF

chmod +x /home/ubuntu/factorio/bin/x64/start_factorio_server.sh
chown -R ubuntu .**

# OS再起動後に自動起動させるよう設定
cat <<EOF > /var/spool/cron/crontabs/ubuntu
@reboot    /bin/bash -lc /home/ubuntu/factorio/bin/x64/start_factorio_server.sh 2>&1 >> /home/ubuntu/factorio/cron.log
EOF
chown ubuntu /var/spool/cron/crontabs/ubuntu
chmod 600 /var/spool/cron/crontabs/ubuntu

# Reboot to trigger CRON
reboot

OSの再インストール(スクリプト適用)

何度もクドくてすみませんが、操作はこちらの記事と同じなので、詳細な手順については省きます。

コピペ一発で!さくらのVPSでマイクラマルチサーバー - sashimi4’s diary

なお、インストールOSについては必ず 標準OSUbuntu 16.04 amd64 を選択するようにしてください。

これで、例によって(?)サーバOSを再起動するたびに自動でfactorioサーバが立ち上がるようになります。

動作確認

f:id:sashimi4:20180613210432p:plain

マルチプレイサーバーに接続 から、

f:id:sashimi4:20180613211025p:plain

VPSに割り当てられたIPアドレスを入力して接続...!!

f:id:sashimi4:20180613210807j:plain

無事に接続されました!!

めも

  • クライアントの既存マップは C:\Users\ユーザ名\AppData\Roaming\Factorio\saves の中にzipで保存されているので、これをscpか何かでアップすれば良さそう

まとめ(反省)

  • とりあえず私は主に2人でプレイしているので、1CPU/512MB/SSD20GB で快適にプレイできています。
    • これから重くなるかもしれないけど…そのときはスペックアップします
  • Factorio楽しい!!!
  • 時間泥棒~ >< (←本記事に関係ない)
  • 書いたあとからスタートアップスクリプトは大げさな気がしてきました…。マイクラみたいにめんどくさいと思っていた…。
  • iptablesのアレはsedすべきだろ!(自分へツッコミ)
  • あまりリテラシの無い方に広めたくて書こうと思ったんですが…途中途中で過去記事参照したり適当になってしまいすみません…。
  • 思い出した頃にバージョンアップしたりメンテしたりします。
    • とりあえずは、バージョンアップ方法とかバックアップ、既存データのアップロード方法について優先的に追記したいと思います。
  • 特に、ただデフォルト設定で起動するだけなので、細かい設定の仕方だとか、既存マップのアップロード方法についても書かないとわからないですよね。
    • 早く欲しかったらコメント書いて急かしてください(笑)

では一旦ここまで。(^_^)/~