Rootsは、ゲームサーバー向けにDockerコンテナを管理するゲームサーバーデーモンです。

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
    diagnostics
    ;サーバー CRUD(
    servers list/start/stop/restart/kill/console
    );および更新コマンド(
    update --check
    --force
    --channel beta
    )。
    Roots は Docker ソケットパスを自動検出します(Linux:
    /var/run/docker.sock
    ;macOS:
    ~/.docker/run/docker.sock
    )し、通常は以下のようなユニットファイルで systemd をサポートします:
[Service]
ExecStart=/usr/local/bin/roots run
Restart=always

REST API にはヘルスチェック、ステータス取得、CRUD 操作、電源操作、コンソール&統計 WebSocket、ファイル操作、およびノードリソース統計のエンドポイントが含まれます。すべてのエンドポイントは Bearer トークンを必要とします(

/health
を除く)、WebSocket のベアラートークンはクエリ文字列で
?token=<token>
として渡されます。
Roots の更新では、パネルの
/api/releases/latest
から最新リリースを取得し、チェックサムを検証し、現在のバイナリをバックアップした上で置き換えます。TLS/HTTPS は Let’s Encrypt(
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

オプション必須デフォルト説明
urlstringはいhttp://localhost:3000Sprout Panel の URL
tokenstringはい-パネル認証用 API トークン

daemon

オプション必須デフォルト説明
hoststringいいえ0.0.0.0リッスンする IP アドレス
portintいいえ8443ポート番号(1-65535)

daemon.tls

オプション必須デフォルト説明
enabledboolいいえfalseHTTPS を有効にするか
cert_filestringTLS 有効時-証明書ファイルへのパス
key_filestringTLS 有効時-秘密鍵ファイルへのパス

docker

オプション必須デフォルト説明
socketstringいいえ自動検出Docker ソケットのパス
networkstringいいえroots_networkコンテナ用 Docker ネットワーク名

Docker ソケット自動検出

  • macOS:
    ~/.docker/run/docker.sock
  • Linux:
    /var/run/docker.sock

storage

オプション必須説明
serversstringいいえサーバーデータディレクトリ
backupsstringいいえバックアップディレクトリ

OS 毎のデフォルトパス

OSServers パスBackups パスSSH Host Key
Linux
/var/lib/roots/servers
/var/lib/roots/backups
/etc/roots/ssh_host_key
macOS
~/.local/share/roots/servers
~/.local/share/roots/backups
~/.config/roots/ssh_host_key

パスは

~
をホームディレクトリに展開します。

sftp

オプション必須デフォルト説明
enabledboolいいえtrueSFTP サーバーを有効にするか
portintいいえ2022SFTP ポート番号
host_keystringいいえ
~/.config/roots/ssh_host_key
SSH ホスト鍵へのパス

初回起動時にホスト鍵が存在しない場合は自動生成されます。

resources

オプション必須デフォルト説明
memorystringいいえ-サーバー用総メモリ制限
diskstringいいえ-サーバー用総ディスク容量

人間が読みやすいフォーマットをサポート

  • バイト:
    1024
    ,
    1024B
  • キロバイト:
    512K
    ,
    512KB
  • メガバイト:
    512M
    ,
    512MB
  • ギガバイト:
    16G
    ,
    16GB
  • テラバイト:
    1T
    ,
    1TB

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
はパネルの
/api/releases/latest
エンドポイントから情報を取得し、現在バージョンと比較。変更ログ表示後、新しいバイナリ(直接実行ファイルまたは gz で圧縮された tarball)をダウンロードし、チェックサム検証済みで置き換え前にバックアップを作成します。


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
/health
ヘルスチェック(認証不要)
GET
/status
デーモン状態
POST
/api/reload
設定再読み込み
GET
/api/servers
すべてのサーバー一覧
POST
/api/servers
サーバー作成/インストール
GET
/api/servers/{uuid}
サーバー詳細取得
PUT
/api/servers/{uuid}
サーバー更新
DELETE
/api/servers/{uuid}
サーバー削除
POST
/api/servers/{uuid}/power
電源操作(start/stop/restart/kill)
WS
/api/servers/{uuid}/console
コンソール WebSocket
WS
/api/servers/{uuid}/stats
スタットス WebSocket
GET
/api/servers/{uuid}/files
ファイル一覧取得
GET
/api/servers/{uuid}/files/content
ファイル内容読み込み
PUT
/api/servers/{uuid}/files/content
ファイル書き込み
GET
/api/node/status
ノードリソース統計
WS
/api/node/stats
ノード統計 WebSocket

/health
を除くすべてのエンドポイントは Bearer トークン認証が必要です。
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 デーモンのインストール・設定・運用に必要な情報は網羅されました。
ご不明点や追加要望があればお気軽にお問い合わせください。

同じ日のほかのニュース

一覧に戻る →

2026/01/31 9:51

**Show HN:** 私は自分の中国語(普通話)の声調を直すため、9Mパラメータの音声モデルを訓練しました。

## Japanese Translation: > **概要:** > AISHELL‑1 と Primewords から約300時間分の文字起こし済み中国語音声を用い、SpecAugment と4台の RTX 4090 GPU を使用して、約9 Mパラメータのコンフォーマーモデル(Conformer)を訓練しました。ネットワークは40 msごとにトークン確率を出力し、Viterbi アルゴリズムでピンイン音調トークン列(各音節+音調がユニークなトークン;中性音調はトーン5へマッピング)に沿ってアラインメントを強制します。語彙には1,254個のトークンと `<unk>`、`<blank>` が含まれます。 > このモデルでは Token Error Rate(TER)が約 5.3 %、音調精度が約 98.3 %です。INT8 量子化によりサイズを約37 MB から約11 MB に縮小し、TER は +0.0003 の増加のみで済みました。先頭の無音によるアラインメントミスを修正するため、 `<blank>` 確率が0.7 を超えるフレームは採点前に除外しました。 > 最終的な量子化モデル(約13 MB のダウンロード)は ONNX Runtime Web 経由でブラウザ上で完全に実行され、リアルタイムの発音フィードバックを可能にします。今後は Common Voice などの会話データセットを取り入れ、カジュアルまたは子供の話し言葉(通常より速く変動が大きい)に対する頑健性を向上させる予定です。 **短縮版(すべてのポイントを網羅):** > **概要:** > AISHELL‑1/Primewords から約300時間分の中国語音声で、SpecAugment と4× RTX 4090 を用いて9 Mパラメータのコンフォーマーを訓練しました。40 ms ごとにトークン確率を出力し、ピンイン‑音調語彙(1,254トークン+`<unk>`、`<blank>`)で Viterbi アラインメントを行います。TER は約 5.3 %、音調精度は約 98.3 %です。INT8 量子化によりモデルサイズが約11 MB に縮小され、TER は +0.0003 の増加のみでした。先頭無音のバグは、高い `<blank>` 確率(閾値0.7)を持つフレームを除外することで修正しました。13 MB の ONNX Runtime Web バージョンはブラウザ内で完全に動作し、即時発音フィードバックを提供します。将来的には会話データを追加してドメインシフトへの対処を図ります。

2026/01/31 5:40

ペアウェブ:WebTorrent を利用した分散型ウェブサイトホスティング

## 日本語訳: PeerWebは、WebTorrent技術を利用したピアツーピア(P2P)ネットワーク上で静的ウェブサイトを無料かつ検閲耐性のある形でホストできるサービスです。サイトはトレントハッシュ経由で配布され、少なくとも1人のユーザーがブラウザタブまたはデスクトップクライアントを開いている限りオンラインに留まります。 **動作原理:** - ユーザーはインターフェースにファイルをドラッグ&ドロップするだけで、シンプルなHTML/CSS/JSプロジェクトをアップロードできます。各サイトにはユニークなPeerWebリンクが付与され、どこからでもアクセス可能です。 - サイトは `index.html` ファイルを必ず含み、相対パスのみを使用し、静的コンテンツで構成されている必要があります。 - キャッシュ前に PeerWeb は DOMPurify で全ファイルをサニタイズし、XSS 攻撃から保護します。 - キャッシュされたサイトは IndexedDB に保存され即座に再読み込みが可能です。キャッシュは7日間の非アクティブ後に自動的にクリアされます。 **セキュリティとパフォーマンス:** - コンテンツはサンドボックス化された iframe 内でレンダリングされ、リソース検証によって正当な資産のみが表示されます。 - 開発者はデバッグモード(`&debug=true`)を有効にして詳細な進行状況とリアルタイムメトリクスを確認できます。 **使用例:** デモリンクではテストページ、SomaFM ラジオ、チェスゲーム、およびテキストエディタアプリが紹介されています。 多くのピアにコンテンツを分散させることで、PeerWeb は従来のホスティング費用なしでサイトを利用可能にし、キャッシュによる高速ロードとマルウェアからの保護を提供しつつ、検閲にも耐えます。

2026/01/31 8:47

**Stonebraker氏のCAP定理とデータベースに関する論考**

## 日本語訳: **要約:** マイク・ストーンブレーカー氏は、CACMブログ記事「データベースシステムにおけるエラー、最終的な一貫性、およびCAP定理」で、CAP定理が最終的一致性を強制するという広く受け入れられているNoSQLの見解に挑戦しています。彼は、多くのデータベース障害はネットワーク分断ではなく、アプリケーション、管理、実装上のバグから生じており、実際にはパケット損失や設定エラーなど他のネットワーキング欠陥と比べても稀であると主張しています。ストーンブレーカー氏は、2ノード冗長スキームが大規模では不十分であり、業界が最終的一致性に依存することで実際の問題を隠してしまう可能性があると指摘しています。 彼はAmazon SimpleDB が最近完全一致性へ移行したことを、高いスケールでも厳密な正確性を保証できる証拠として挙げ、実用的な緩和策として「遅延削除」(削除マークを付けてからガベージコレクションを遅らせる)を提案しています。ストーンブレーカー氏は完全一致性を早期に放棄すると微妙なバグが発生し、運用リスクが増大する可能性があると警告しています。 この記事はNoSQLコミュニティに対し、多くのワークロードで最終的一致性が適切かどうかを再検討し、強い一致性が大規模でも達成できることを示唆しています。

Rootsは、ゲームサーバー向けにDockerコンテナを管理するゲームサーバーデーモンです。 | そっか~ニュース