見出し画像

Rust管理サイト「RustManager」を作った話

最初に…

RustのPvEサーバー「MServer PVE」(以下、当鯖)を運営しています。
早いもので、Season6を迎えております。
ご参加いただいているプレイヤーの皆様には感謝しかないです。
サーバーを管理するというと「難しい」や「めんどくさい」と思われるかもしれません。
そう思ってしまう要素を少しでも減らしたいと思い作り始めたのが今回お話しする「RustManager」です。

RustManagerを作る前の話

RustManagerを作る前のサーバー管理作業はどういうものだったか…。
当鯖は、ConohaさんのVPSサーバーを借りて運営を行っております。
Rustのサーバーには2種類のコンソールが存在します。
1つ目はConohaのVPSサーバー自体を操作するためのコンソール。
2つ目はRustゲームサーバーを操作するコンソール。
この2種類のコンソールが存在し、初めて触る方は慣れるまで苦戦するかもしれません。
しかも、この2つのコンソールはそれぞれ別のサイトで開かないといけないというめんどくささ…😞
Rustゲームサーバーにおいて、もう一つ管理が大変だったのが「ホワイトリストプラグイン」です。
このプラグインは、許可していないプレイヤーを弾いてくれるとても便利なプラグインではあるのですが、一つ欠点がありました。
別サーバーへのデータ移行ができないのです。
そのため、サーバーを違う会社で借りたりするとまた最初から地獄のような登録作業が待ち受けていました…😞

Rustゲームサーバーの管理に追い打ちをかける事態

とある日、Rustゲームサーバーのコンソールを操作できるサイトへのアクセスができなくなりました…。
しかも、愛用しているChromeブラウザだけという謎の症状でした…。

個人用にRustManagerの原型を作り始める

最初は個人用に大雑把に「Rustゲームサーバーのコンソール触れるやつを作れないかなー」っていう考えでいろいろ技術情報を探してました。
すると、Webブラウザから触れるようにするjavascriptライブラリがあるのを発見しました。
これを使うことでWebブラウザ上でRustゲームサーバーのいろいろな操作ができるようになりました。


RustのWebSocketはSSLに対応してなかった…

SSLサイトからRustゲームサーバーにRconで通信しようとすると、うまくつながらないという緊急事態が起きました。
これは、WebSocketが暗号化されていないためSSLサイトから直接通信しようとすると安全ではないという警告が出るためでした。
何とか、安全な通信を保ちながらできないか….
と考えた結果、NginxでProxyサーバーを構築し暗号化された通信をRustゲームサーバーへ送る仲介役にしました。
暗号化された通信をNginxで仲介し、Rustゲームサーバーへ送信する。
また、RustゲームサーバーからSSLサイトへも同様に仲介する。
この仕組みを構築することで、安全な通信を保ちながらRustManagerで管理ができるようになりました。

RustManagerのプロキシサーバーについて
RustManagerの管理画面

サーバーのコンソールもWebで触りたい!!

Rustゲームサーバーのコンソールはwebrcon.jsで触れるようになったおかげでとても楽になりましたが、サーバー自体のコンソールも触りたいなーって思ってしまいました。
VPSサーバーを借りたことがある人は触ったことがあるであろうWebコンソールをRustManagerでも実現させたいと思い、色々調べてみると結構たくさんヒットしますが動かないものも多数存在しました。
WebSSH2というNode.jsアプリケーションを見つけ、ローカル環境で試してみるとちゃんと動作してくれることがわかりました。
このWebSSH2もwebrcon.jsと同様にWebSocketが使われています。
これをRustManagerの稼働しているサーバーで構築し、稼働させています。

RustManagerのRCONコンソール画面
RustManagerのSSHコンソール画面

今後の予定

RustManagerは、Rustゲームサーバーの管理を快適にするために構築しています。今後も様々な機能を追加し、管理作業を快適化していきたいと考えています。

参考にしたサイト


いいなと思ったら応援しよう!