【Rust】自宅マルチサーバーの建て方

  • URLをコピーしました!

RustのマルチサーバーをVPSのテンプレート等使わず構築する方法を説明します。
OSはUbuntuを想定しています。

目次

前提条件

本記事では以下の環境で構築することを前提としています。

  • OSはUbuntu 22.04 であること
  • 「rust」の名前で一般権限ユーザ作成済みであること
    「rust」以外の名前でも問題ありませんが、本記事はrustユーザの前提なので変える場合は適宜読み替えてください。

本記事の操作は全てrustユーザで行います。

SteamCMDインストール

1.rustユーザでホームディレクトリに移動します。

$ su -u rust -s
$ cd /home/rust

2.aptでSteamCMDをインストールします。

$ sudo add-apt-repository multiverse
$ sudo apt install software-properties-common
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install lib32gcc-s1 steamcmd
$ sudo ln -s /usr/games/steamcmd /home/rust/steamcmd

Rustサーバーモジュールインストール

1.サーバーモジュールを配置するディレクトリを作成します。

$ sudo mkdir /opt/rust_server
$ sudo chmod 766 /opt/rust_server
$ sudo chown rust:rust /opt/rust_server

2.SteamCMD経由でサーバーモジュールをダウンロード

$ /usr/games/steamcmd +force_install_dir /opt/rust_server +login anonymous +app_update 258550 validate +quit
$ ll /opt/rust_server
⇒ファイルやディレクトリが作成されていれば成功

起動スクリプト作成

起動オプション等を記載したスクリプトファイルを作成します。

1.スクリプトファイルを配置するディレクトリを作成します。

$ mkdir /opt/rust_server/bin

2.スクリプトファイルを作成

$ vi /opt/rust_server/bin/start_rust.sh

3.中身を記載

#!/bin/sh
exec /opt/rust_server/RustDedicated \
-batchmode \
-server.ip 0.0.0.0 \
-server.port 28015 \
-server.queryport 28016 \
-rcon.ip 0.0.0.0 \
-rcon.port 28016 \
-rcon.password "fawf" \
-server.maxplayers 100 \
-server.hostname "[JP]DoraSaba.jp Battlefield/Loot+/1000x/Minicopter" \
-server.identity "RustServer" \
-server.level "Procedural Map" \
-server.seed 2102973004 \
-server.worldsize 3500 \
-server.saveinterval 600 \
-server.description "Welcome to DoraSaba!!\nDiscord: https://discord.gg/ujfavZsqQr \nCommands\n/mymini Spawn Minicopter.\n/nomini Call the Minicopter you have.\n/fmini Delete the Minicopter you have." \
-server.url "https://discord.gg/ujfavZsqQr" \
-server.tags "weekly,training,EA"

主なパラメータには以下のものがあります。

パラメータ説明
-batchmodeGUIなしで起動する
サーバーはGUIで起動する必要はないので、基本指定します。
server.ipサーバーに接続する際のIPアドレス
特殊なネットワーク構成にしていなければ「0.0.0.0」で自動的に設定されます。
server.portサーバーに接続する際のポート番号
特別な理由がなければ「28015」で大丈夫です。
server.queryportクエリポート
役割はわかりませんが、2023年2月から設定が必須になりました。
server.portの番号とは被らせないでください。
後述のrcon.portとは被っても問題ありません。
rcon.iprconのIPアドレス
特殊なネットワーク構成にしていなければ「0.0.0.0」で自動的に設定されます。
rcon.portrconを受け付けるポート番号
特別な理由がなければ「28016」で大丈夫です。
rcon.passwordrcon接続時のパスワード
簡単なパスワードにすると管理を乗っ取られてしまうので複雑なものにしてください。
server.maxplayers最大参加人数
server.hostnameサーバー名
サーバー一覧に表示する際のサーバー名です。
server.descriptionサーバーの説明文
サーバー選択時に表示するサーバーの説明文です。
「\n」で改行できます。
server.urlサーバー選択時に「WEBサイトを表示」をクリックした際にアクセスするURL
ホームページやDiscordの招待URLを設定できます。
server.tagsサーバーのタグ
サーバー一覧に表示する際のタグを設定します。
server.identityサーバー識別名
マップファイル等を配置するディレクトリの名前で使われます。
本記事の設定なら/opt/rust_server/serverの下に作成されるディレクトリ名です。
server.levelマップ種別
いろいろ設定できるようですが、基本「Procedural Map」です。
server.seedシード値
マップを生成する際のシード値です。
シード値毎に生成されるマップはRustMapで確認できます。
※マップサイズとセットで生成内容が変わります。
server.worldsizeマップサイズ
マップを生成する際のサイズです。
でかすぎるとサーバーが重くなるので適度に調整してください。
server.saveintervalセーブ間隔(単位:秒)
マップやプレイヤー情報をセーブする間隔を秒単位で指定します。
セーブ処理はかなり重く、セーブ時にラグが発生することがあるため、間隔があまりに短いと常にラグくなります。
600(10分)がちょうどいいくらいです。
server.globalchatグローバルチャット使用可否
true:使用可、false:使用不可
パラメータ説明

Oxideインストール

uModなどで配布されているプラグインを動作させるためにOxide環境を準備します。

1.unzipコマンド、wgetコマンドのインストール

$ sudo apt install unzip
$ sudo apt install wget

2.Oxideの配置ディレクトリへの移動とダウンロード

$ cd /opt/rust_server
$ wget https://umod.org/games/rust/download/develop -O oxide.zip

3.oxide.zipを展開

$ unzip -o oxide.zip

Systemdファイルを作成

先に作成したスクリプトファイルを実行するとコンソールに出力されてそこから離れられなくなり不便なので、Rustの起動や停止をSystemdで管理できるよう必要なファイルを作成します。

1.ファイルを作成

$ sudo vi /etc/systemd/system/rust-server.service

2.内容を記載

[Unit]
Description=Rust Server
After=network-online.target

[Service]
Type=simple
User=rust
Group=rust
WorkingDirectory=/opt/rust_server
ProtectSystem=full
ExecStartPre=/usr/games/steamcmd +@sSteamCmdForcePlatformType linux +force_install_dir /opt/rust_server +login anonymous +app_update 258550 validate +quit
ExecStartPre=wget https://umod.org/games/rust/download/develop -O oxide.zip
ExecStartPre=unzip -o oxide.zip
ExecStartPre=+/usr/bin/chown -R rust:rust /opt/rust_server/
ExecStart=/opt/rust_server/bin/start_rust.sh
KillMode=process
KillSignal=SIGINT
Restart=always

[Install]
WantedBy=multi-user.target

サーバー起動

Systemd経由でRustサーバーを起動します。

1.起動コマンド実行

$ sudo systemctl start rust-server.service

2.起動確認

$ sudo systemctl status rust-server.service

3.停止コマンド実行

$ sudo systemctl stop rust-server.service

ポート穴開け

ubuntuは初期状態だとファイアウォールが有効ではないので、自宅内からであればそのまま接続できます。
VPSなどで建てた場合はファイアウォールが有効な可能性があるので、適宜ポートの穴あけをしてください。

参考サイト

Rust Wiki
Creating a server System based on Windows, Linux or OSX 12 GB free RAM (6k map will use more) 15 GB free disc space (SSD/NVMe highly preferred) To estimate server RAM requirement...

間違いや質問などありましたらコメントをお願いします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

こんばんは!本サイトの管理人のdoraliverです。
普段遊んでいるゲームの情報を発信できればと思います。
最近はRustのサーバーを建てて遊んでいるので、サーバーに関する情報をお届けします。

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次