Rust のサーバーを立てる
June 03, 2023 -概要
Rust のサーバーを立てます。
- クライアントは サーバーに GCP のリバースプロキシを介して接続するため、サーバー側のネットワーク(LAN)内でポート開放する必要はありません。
参考情報
GCP
GCP のファイアウォール、リバースプロキシ、DNS を設定します。
ファイアウォールの設定
VPC ファイアウォールのルールを作成します。
-
サイドメニューから
VPC ネットワーク
のファイアウォール
選択します。 -
ファイアウォール ルールを作成
を選択します。 -
項目に次の値を入力し
作成
ボタンを選択します。項目名 入力値 備考 名前 rust 任意の値 説明 rust のルール 任意の値 ターゲットタグ rust 任意の値 送信元 IPV4 範囲 0.0.0.0/0 プロトコルとポート > 指定したプロトコルとポート > TCP 28015,28016 28015: Rust
28016: rconプロトコルとポート > 指定したプロトコルとポート > UDP 28015,28017 28015: Rust
28017: Steam Networking
リバースプロキシの設定
Compute Engine で rathole を起動してリバースプロキシを立ち上げます。
Compute Engine のインスタンスは Google Cloud の無料プログラム を参考に設定します。
-
サイドメニューから
Compute Engine
のVM インスタンス
選択します。 -
インスタンスを作成
を選択します。 -
項目に次の値を入力し
作成
ボタンを選択します。項目名 入力値 備考 名前 instance-1 任意の値 リージョン オレゴン: us-west1 マシン構成 > シリーズ E2 マシン構成 > マシンタイプ e2-micro ブートディスク > OS Ubuntu ブートディスク > バージョン Ubuntu 18.04 LTS ブートディスク > ブートディスクの種類 標準永続ディスク ブートディスク > サイズ (GB) 30 ファイアウォール > HTTP トラフィックを許可する 許可 チェックボックスにチェックを入れる ファイアウォール > HTTPS トラフィックを許可する 許可 チェックボックスにチェックを入れる 詳細オプション > ネットワーキング > ネットワーク タグ rust ファイアウォールのターゲットタグを入力する
-
作成したインスタンスの
SSH
を選択し SSH 接続します。 -
インスタンスのポートを開放します。
2333
は rathole のポート番号です。sudo ufw allow 2333 sudo ufw allow 28015 sudo ufw allow 28015/udp sudo ufw allow 28016 sudo ufw allow 28017/udp sudo ufw reload
-
rathole の設定ファイル
server.toml
を作成します。詳細は readme を参照してください。# 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"
-
rathole を起動します。
sudo docker run -d -it --rm -p 28015:28015 -p 28015:28015/udp -p 28016:28016 -p 28017:28017/udp -v "/home/server.toml:/app/server.toml" rapiz1/rathole:latest --server /app/server.toml
予算の設定
-
サイドメニューから
お支払い
を選択します。 -
お支払いのサイドメニューから
請求先アカウント
を選択します。 -
お支払いのサイドメニューから
予算とアラート
を選択します。 -
予算を作成
を選択します。 -
項目に次の値を入力し
終了
ボタンを選択します。項目名 入力値 備考 範囲 > 名前 rust 任意の値 金額 > 目標金額 1000 予算の上限金額
Rust のサーバー
didstopia/rust-server で Rust のサーバーを立ち上げます。
準備
Rust に必要なフォルダ、ファイルを作成します。
-
フォルダを作成します。
フォルダ名 備考 data Rust データ用のフォルダ -
サーバーの環境変数を記述したファイル「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_ENABLED MOD を使用するため 1
を設定します。RUST_SERVER_MAXPLAYERS サーバーに接続できるプレイヤーの人数の上限を設定します。 -
rathole の設定ファイル
client.toml
を作成します。詳細は readme を参照してください。# 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"
コンテナ
サーバーのコンテナを作成、起動します。
-
コンテナの定義を作成します。
version: '3.7' services: # https://hub.docker.com/r/didstopia/rust-server rust: image: didstopia/rust-server container_name: 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 deploy: resources: limits: # メモリの上限 memory: 4g stdin_open: true tty: true volumes: - /Users/st-little/Documents/rust/data:/steamcmd/rust networks: - internal # https://github.com/rapiz1/rathole port_forwarding: 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 networks: - internal networks: internal:
-
コンテナを起動します。
docker-compose up
サーバへ接続
クライアントからサーバーに接続します。
-
Rust が起動したら
F1
キーを押します。 -
次のコマンドを入力してエンターキーを押します。
client.connect myserver:28015
MOD
uMod Plugins で Rust 用の Mod を探すことができます。
Whitelist
ホワイトリストに登録されたプレイヤーのうち、許可を得た人にサーバーへのアクセスを制限します。
-
「Download」ボタンを選択し
Whitelist.cs
をダウンロードします。 -
Whitelist.cs
を data/oxide/plugins にコピーします。 -
ブラウザで管理画面
myserver:28018/
を開きます。 -
Console を開いて一番下にある入力フィールドに次のコマンドを入力しエンターキーを押します。
myid
は SteamID64 です。oxide.grant user myid whitelist.allow
Backpacks
バックパックを持つことで、インベントリを増やすことができます。
-
「Download」ボタンを選択し
Backpacks.cs
をダウンロードします。 -
Backpacks.cs
を data/oxide/plugins にコピーします。 -
ブラウザで管理画面
myserver:28018/
を開きます。 -
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
リサイクラーのスピードを変更します。
-
「Download」ボタンを選択し
RecyclerSpeed.cs
をダウンロードします。 -
RecyclerSpeed.cs
を data/oxide/plugins にコピーします。 -
data/oxide/config/RecyclerSpeed.json の
Recyler Speed
でスピードを設定します。{ "Recyler Speed (Lower = Faster) (Seconds)": 1.0 }
-
ブラウザで管理画面
myserver:28018/
を開きます。 -
Console を開いて一番下にある入力フィールドに次のコマンドを入力しエンターキーを押します。
すべてのプレイヤーが Recycler Speed を使用できるようにします。
o.grant group default recyclerspeed.use
Discord Messages
メッセージを Discord に送信します。
-
「Download」ボタンを選択し
DiscordMessages.cs
をダウンロードします。 -
DiscordMessages.cs
を data/oxide/plugins にコピーします。
Inbound
パトロールヘリや補給物資の投下、貨物船などの入港を Discord でお知らせします。
前提条件
- Discord Messages のインストールが必要です。
- Discord の Webhook が必要です。
-
「Download」ボタンを選択し
Inbound.cs
をダウンロードします。 -
Inbound.cs
を data/oxide/plugins にコピーします。 -
data/oxide/config/Inbound.json を修正します。
Discord Messages の有効化、Webhook URL の設定を行います。
{ "Discord Messages": { "Enabled": true, "Webhook URL": "my Webhook url", }, }
Ingame Clock GUI
ゲーム内の時刻を表示します。
-
「Download」ボタンを選択し
IngameClockGUI.cs
をダウンロードします。 -
IngameClockGUI.cs
を data/oxide/plugins にコピーします。 -
data/oxide/config/IngameClockGUI.json で設定を変更します。
時刻のフォントサイズ、表示位置を変更します。
{ "FontSize": 16, "Position": { "Bottom": 0.015, "Left": 0.30 }, }
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
spawn f15e
コマンドで F-15E 戦闘機をスポーンすることができます。spawn bradleyapc
コマンドで Bradley APC をスポーンすることができます。