profile picture

Rust のサーバーを構築する

June 03, 2023 - game rust mod

概要

didstopia/rust-server を使用して Rust のサーバーを構築します。

前提条件

参考情報

サーバーの構築

Rust のサーバーを構築します。

  1. サーバーに必要なフォルダを作成します。

    フォルダ名備考
    dataRust データ用のフォルダ
  2. サーバーに必要な環境変数を記述したファイル「rust.env」を作成します。

    RUST_SERVER_STARTUP_ARGUMENTS=-batchmode -load -logfile - +server.secure 1 +fps.limit 30
    RUST_SERVER_IDENTITY=private_rust_server
    RUST_SERVER_SEED=2107922314
    RUST_SERVER_WORLDSIZE=2500
    RUST_SERVER_NAME=Private Rust Server
    RUST_SERVER_DESCRIPTION=Private Rust Server
    RUST_RCON_PASSWORD=mypw
    RUST_OXIDE_ENABLED=1
    RUST_SERVER_MAXPLAYERS=5
    

    環境変数の補足

    環境変数補足
    RUST_SERVER_STARTUP_ARGUMENTS+fps.limit でサーバー側の FPS を制限します。
    RUST_SERVER_SEEDシード値を設定します。
    RUST_SERVER_WORLDSIZEマップの広さを設定します。
    RUST_RCON_PASSWORDパスワードはできるだけ複雑な値にします。
    RUST_OXIDE_ENABLEDMOD を使用するため 1 を設定します。
    RUST_SERVER_MAXPLAYERSサーバーに接続できるプレイヤーの人数の上限を設定します。
  3. docker-compose.yaml を作成します。

    version: '3.7'
    
    services:
      # https://hub.docker.com/r/didstopia/rust-server
      rust:
        image: didstopia/rust-server
        ports:
          # Rust クライアント接続ポート
          - 28015:28015
          - 28015:28015/udp
          # Rcon クライアント接続ポート
          - 28016:28016
          # Steam Networking
          - 28017:28017/udp
          # Web Console
          - 28018:8080
        env_file:
          - /Users/st-little/Documents/rust/rust.env
       stdin_open: true
       tty: true
       volumes:
          - /Users/st-little/Documents/rust/data:/steamcmd/rust
    

サーバーの起動/停止

サーバへ接続

クライアントからサーバーに接続します。

  1. Rust が起動したら F1 キーを押します。

  2. 次のコマンドを入力してエンターキーを押します。

    client.connect myserver:28015
    

サーバーの公開

Tunnel を構築して自宅サーバーを公開する方法 を参考にしてください。
次のように nginx を Rust に読み替えてください。

# server.toml
[server]
bind_addr = "0.0.0.0:2333"

[server.services.rust-tcp]
token = "token"
type = "tcp"
bind_addr = "0.0.0.0:28015"

[server.services.rust-udp]
token = "token"
type = "udp"
bind_addr = "0.0.0.0:28015"

[server.services.rust-rcon]
token = "token"
type = "tcp"
bind_addr = "0.0.0.0:28016"

[server.services.rust-steam]
token = "token"
type = "udp"
bind_addr = "0.0.0.0:28017"
# client.toml
[client]
remote_addr = "myserver:2333"

[client.services.rust-tcp]
token = "token"
type = "tcp"
local_addr = "rust:28015"

[client.services.rust-udp]
token = "token"
type = "udp"
local_addr = "rust:28015"

[client.services.rust-rcon]
token = "token"
type = "tcp"
local_addr = "rust:28016"

[client.services.rust-steam]
token = "token"
type = "udp"
local_addr = "rust:28017"
# docker-compose.yaml > services > tunnel
tunnel:
  depends_on:
    - rust
  image: rapiz1/rathole
  restart: unless-stopped
  command: ["--client", "/app/client.toml"]
  tty: true
  volumes:
    - /Users/st-little/Documents/rust/client.toml:/app/client.toml

MOD

uMod Plugins で Rust 用の Mod を探すことができます。

Whitelist

ホワイトリストに登録されたプレイヤーのうち、許可を得た人にサーバーへのアクセスを制限します。

  1. 「Download」ボタンを選択し Whitelist.cs をダウンロードします。

  2. Whitelist.cs を data/oxide/plugins にコピーします。

  3. ブラウザで管理画面 myserver:28018/ を開きます。

  4. Console を開いて一番下にある入力フィールドに次のコマンドを入力しエンターキーを押します。myid は SteamID64 です。

    oxide.grant user myid whitelist.allow
    

Backpacks

バックパックを持つことで、インベントリを増やすことができます。

  1. 「Download」ボタンを選択し Backpacks.cs をダウンロードします。

  2. Backpacks.cs を data/oxide/plugins にコピーします。

  3. ブラウザで管理画面 myserver:28018/ を開きます。

  4. Console を開いて一番下にある入力フィールドに次のコマンドを入力しエンターキーを押します。

    すべてのプレイヤーがバックパックを使用できるようにします。

    o.grant group default backpacks.use
    

    すべてのプレイヤーがバックパック GUI ボタン ​​ を表示できるようにします。

    o.grant group default backpacks.gui
    

    バックアップ容量をデフォルトの 6 から 24 に変更します。

    o.grant group default backpacks.size.24
    

Recycler Speed

リサイクラーのスピードを変更します。

  1. 「Download」ボタンを選択し RecyclerSpeed.cs をダウンロードします。

  2. RecyclerSpeed.cs を data/oxide/plugins にコピーします。

  3. data/oxide/config/RecyclerSpeed.json の Recyler Speed でスピードを設定します。

    {
      "Recyler Speed (Lower = Faster) (Seconds)": 1.0
    }
    
  4. ブラウザで管理画面 myserver:28018/ を開きます。

  5. Console を開いて一番下にある入力フィールドに次のコマンドを入力しエンターキーを押します。

    すべてのプレイヤーが Recycler Speed を使用できるようにします。

    o.grant group default recyclerspeed.use
    

Discord Messages

メッセージを Discord に送信します。

  1. 「Download」ボタンを選択し DiscordMessages.cs をダウンロードします。

  2. DiscordMessages.cs を data/oxide/plugins にコピーします。

Inbound

パトロールヘリや補給物資の投下、貨物船などの入港を Discord でお知らせします。

前提条件

  1. 「Download」ボタンを選択し Inbound.cs をダウンロードします。

  2. Inbound.cs を data/oxide/plugins にコピーします。

  3. data/oxide/config/Inbound.json を修正します。

    Discord Messages の有効化、Webhook URL の設定を行います。

    {
      "Discord Messages": {
        "Enabled": true,
        "Webhook URL": "my Webhook url"
      }
    }
    

Ingame Clock GUI

ゲーム内の時刻を表示します。

  1. 「Download」ボタンを選択し IngameClockGUI.cs をダウンロードします。

  2. IngameClockGUI.cs を data/oxide/plugins にコピーします。

  3. data/oxide/config/IngameClockGUI.json で設定を変更します。

    時刻のフォントサイズ、表示位置を変更します。

    {
      "FontSize": 16,
      "Position": {
        "Bottom": 0.015,
        "Left": 0.3
      }
    }
    

Wipe

ワイプの確認、変更ができます。詳細は Rust Wiki - Server Wipe Timer を参照してください。

PrintWipe コマンドでワイプの確認ができます。

タイムゾーンの変更

デフォルトのタイムゾーンは wipetimer.wipetimezone: "Europe/London" です。次のコマンドで日本に変更します。

wipeTimezone Japan

ワイプ日の指定

UNIX タイムスタンプを使用して、正確なワイプ日時を設定できます。2023/7/31 15:00:00 GMT+0 を指定する場合は次のコマンドを実行します。

wipeUnixTimestampOverride 1690815600

Misc