
2026/01/27 16:07
Rootsは、ゲームサーバー向けにDockerコンテナを管理するゲームサーバーデーモンです。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
(欠落している重要ポイントを組み込みつつ、明瞭さを保った翻訳)
Roots は軽量デーモンで、Docker コンテナ内にゲームサーバーを実行し、HTTP/HTTPS API、WebSocket コンソール、および SFTP ファイルアクセス経由で公開します。
プロジェクトは Go で構築されており、(またはmake build)を実行してバイナリをコンパイルし、go build -o roots ./cmd/rootsでsudo make installに配置します。デフォルトの設定ファイルは/usr/local/binにありますが、/etc/roots/config.yamlオプションで場所を上書きできます。--config
設定はセクションごとに整理されています:
- panel(リリース & 認証統合用 URL / トークン)
- daemon(ホスト、ポート、TLS フラグ)
- docker(ソケットパス、ネットワーク)
- storage(ルートディレクトリ、
展開)~- sftp(ポート、キー ファイル)
- resources(メモリ / ディスク制限)。
CLI は包括的な操作を提供します:、roots run、status、reload、validate;サーバー CRUD(diagnostics);および更新コマンド(servers list/start/stop/restart/kill/console、update --check、--force)。--channel beta
Roots は Docker ソケットパスを自動検出します(Linux:;macOS:/var/run/docker.sock)し、通常は以下のようなユニットファイルで systemd をサポートします:~/.docker/run/docker.sock[Service] ExecStart=/usr/local/bin/roots run Restart=alwaysREST API にはヘルスチェック、ステータス取得、CRUD 操作、電源操作、コンソール&統計 WebSocket、ファイル操作、およびノードリソース統計のエンドポイントが含まれます。すべてのエンドポイントは Bearer トークンを必要とします(
を除く)、WebSocket のベアラートークンはクエリ文字列で/healthとして渡されます。?token=<token>
Roots の更新では、パネルのから最新リリースを取得し、チェックサムを検証し、現在のバイナリをバックアップした上で置き換えます。TLS/HTTPS は Let’s Encrypt(/api/releases/latest)または自己署名証明書によりcertbotを設定することで有効化できます。tls.enabled
デプロイメント、セキュアアクセス、および更新の自動化によって、Roots は開発者とオペレーターが大量のゲームサーバーを最小限の手動構成で効率的に管理できるようにします。
本文
Roots – ゲームサーバー用デーモンのドキュメント
概要
Roots はゲームサーバー向け Docker コンテナを管理するデーモンです。以下の機能を公開します。
- HTTP/HTTPS API によるサーバー管理
- WebSocket を使ったリアルタイムコンソールアクセス
- SFTP ファイルアクセス
バイナリビルド方法
# ビルド(make で実行) make build # あるいは手動で go build -o roots ./cmd/roots # Git のコミット情報を埋め込んだリリース版のビルド make build-release # /usr/local/bin にインストール sudo make install
設定ファイル
Roots はデフォルトで
/etc/roots/config.yaml を参照します。別パスを指定したい場合は
--config オプションで設定できます。
インタラクティブセットアップ
インタラクティブモードで起動すると必須項目を入力して設定ファイルが生成されます。
roots init # 例:実際のコマンド名に合わせてください
設定ファイル形式(YAML)
# パネル接続設定 panel: url: "https://panel.example.com" # Sprout Panel の URL(必須) token: "your-api-token" # 認証用 API トークン(必須) # デーモン設定 daemon: host: "0.0.0.0" # リッスンアドレス(デフォルト:0.0.0.0) port: 8443 # ポート番号(デフォルト:8443) tls: enabled: false # HTTPS を有効にするか(デフォルト:false) cert_file: "/etc/roots/cert.pem" # TLS 証明書のパス key_file: "/etc/roots/key.pem" # TLS 秘密鍵のパス # Docker 関連設定 docker: socket: "/var/run/docker.sock" # Docker ソケット(自動検出) network: "roots_network" # コンテナ用 Docker ネットワーク名(デフォルト:roots_network) # ストレージパス(OS 毎に異なるデフォルト値あり、以下参照) storage: servers: "/var/lib/roots/servers" # サーバーデータディレクトリ backups: "/var/lib/roots/backups" # バックアップディレクトリ # SFTP サーバー設定 sftp: enabled: true # SFTP を有効にするか(デフォルト:true) port: 2022 # SFTP ポート番号(デフォルト:2022) host_key: "/etc/roots/ssh_host_key" # SSH ホスト鍵のパス # ノードリソース制限 resources: memory: "16GB" # サーバー用に割り当てる総メモリ disk: "100GB" # サーバー用に割り当てる総ディスク容量
設定オプションの詳細
panel
panel| オプション | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| url | string | はい | http://localhost:3000 | Sprout Panel の URL |
| token | string | はい | - | パネル認証用 API トークン |
daemon
daemon| オプション | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| host | string | いいえ | 0.0.0.0 | リッスンする IP アドレス |
| port | int | いいえ | 8443 | ポート番号(1-65535) |
daemon.tls
daemon.tls| オプション | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| enabled | bool | いいえ | false | HTTPS を有効にするか |
| cert_file | string | TLS 有効時 | - | 証明書ファイルへのパス |
| key_file | string | TLS 有効時 | - | 秘密鍵ファイルへのパス |
docker
docker| オプション | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| socket | string | いいえ | 自動検出 | Docker ソケットのパス |
| network | string | いいえ | roots_network | コンテナ用 Docker ネットワーク名 |
Docker ソケット自動検出
- macOS:
~/.docker/run/docker.sock- Linux:
/var/run/docker.sock
storage
storage| オプション | 型 | 必須 | 説明 |
|---|---|---|---|
| servers | string | いいえ | サーバーデータディレクトリ |
| backups | string | いいえ | バックアップディレクトリ |
OS 毎のデフォルトパス
| OS | Servers パス | Backups パス | SSH Host Key |
|---|---|---|---|
| Linux | | | |
| macOS | | | |
パスは
をホームディレクトリに展開します。~
sftp
sftp| オプション | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| enabled | bool | いいえ | true | SFTP サーバーを有効にするか |
| port | int | いいえ | 2022 | SFTP ポート番号 |
| host_key | string | いいえ | | SSH ホスト鍵へのパス |
初回起動時にホスト鍵が存在しない場合は自動生成されます。
resources
resources| オプション | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| memory | string | いいえ | - | サーバー用総メモリ制限 |
| disk | string | いいえ | - | サーバー用総ディスク容量 |
人間が読みやすいフォーマットをサポート
- バイト:
,10241024B- キロバイト:
,512K512KB- メガバイト:
,512M512MB- ギガバイト:
,16G16GB- テラバイト:
,1T1TB
CLI コマンド一覧
デーモン管理
# デーモン起動 roots run # カスタム設定ファイルで起動 roots run --config /path/to/config.yaml # ステータス確認 roots status # リアルタイムで監視 roots status --watch # 設定を再読み込み(再起動不要) roots reload # 設定検証 roots validate # デバッグ情報取得 roots diagnostics
サーバー管理
# すべてのサーバー一覧表示 roots servers list # サーバー開始(UUID の一部でも可) roots servers start <uuid> # 全サーバーを起動 roots servers start all # サーバー停止(優雅に終了) roots servers stop <uuid> # すべてのサーバーを停止 roots servers stop all # サーバー再起動 roots servers restart <uuid> # 強制終了 roots servers kill <uuid> # コンソールへ接続 roots servers console <uuid>
アップデート
# 更新確認 roots update --check # 最新バージョンに更新 roots update # 確認なしで強制更新 roots update --force # ベータチャンネルを使用 roots update --channel beta
はパネルのupdateエンドポイントから情報を取得し、現在バージョンと比較。変更ログ表示後、新しいバイナリ(直接実行ファイルまたは gz で圧縮された tarball)をダウンロードし、チェックサム検証済みで置き換え前にバックアップを作成します。/api/releases/latest
TLS / HTTPS 設定
Let’s Encrypt を使用する(本番推奨)
# certbot インストール sudo apt install certbot # 証明書取得(スタンドアロンモード) sudo certbot certonly --standalone -d daemon.example.com # config.yaml の更新 daemon: tls: enabled: true cert_file: /etc/letsencrypt/live/daemon.example.com/fullchain.pem key_file: /etc/letsencrypt/live/daemon.example.com/privkey.pem
自己署名証明書を使用する(開発時のみ)
# 証明書生成 openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes # config.yaml の更新 daemon: tls: enabled: true cert_file: /path/to/cert.pem key_file: /path/to/key.pem
CLI は
に接続する際に自己署名証明書を自動的に許可します。localhost
API エンドポイント
Roots は REST API を通じてサーバー管理機能を提供します。
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | | ヘルスチェック(認証不要) |
| GET | | デーモン状態 |
| POST | | 設定再読み込み |
| GET | | すべてのサーバー一覧 |
| POST | | サーバー作成/インストール |
| GET | | サーバー詳細取得 |
| PUT | | サーバー更新 |
| DELETE | | サーバー削除 |
| POST | | 電源操作(start/stop/restart/kill) |
| WS | | コンソール WebSocket |
| WS | | スタットス WebSocket |
| GET | | ファイル一覧取得 |
| GET | | ファイル内容読み込み |
| PUT | | ファイル書き込み |
| GET | | ノードリソース統計 |
| WS | | ノード統計 WebSocket |
を除くすべてのエンドポイントは Bearer トークン認証が必要です。/health
ヘッダーを付与してください。Authorization: Bearer <token>
WebSocket 接続時にはトークンをクエリパラメータで渡せます。
例:
wss://daemon.example.com/api/servers/{uuid}/console?token=<token>
systemd サービス設定
/etc/systemd/system/roots.service を作成します。
[Unit] Description=Roots Game Server Daemon After=network.target docker.service Requires=docker.service [Service] Type=simple ExecStart=/usr/local/bin/roots run Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
有効化して起動します。
sudo systemctl enable roots sudo systemctl start roots
以上で Roots デーモンのインストール・設定・運用に必要な情報は網羅されました。
ご不明点や追加要望があればお気軽にお問い合わせください。