本文へ移動
runlot

パッケージでインストール

コントロールプレーンと各データノードを、apt または dnf のパッケージとして、お送りするファイルまたは署名付きリポジトリからインストールします。

パッケージは runlot-cp と runlot-node の2つに加え、両方を1台のマシンにまとめ、PostgreSQL と MinIO も同居させる3つ目の runlot-eval があります。すべてのパッケージには共通のインストールコア runlot-admin が含まれ、マシンのチェック・設定の書き込み・サービスの起動を行います。postinstall はこのコマンドそのものであり、ご自身で実行できないことをシェルで行うことはありません。

リポジトリ

Debian, Ubuntu
curl -fsSL https://packages.runlot.io/gpg/runlot-archive-keyring.gpg \
  | sudo tee /usr/share/keyrings/runlot.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/runlot.gpg] https://<token>@packages.runlot.io/deb stable main" \
  | sudo tee /etc/apt/sources.list.d/runlot.list
sudo apt update
RHEL, Rocky
sudo tee /etc/yum.repos.d/runlot.repo <<'EOF'
[runlot]
name=Runlot
baseurl=https://<token>@packages.runlot.io/rpm/el/x86_64
gpgcheck=1
gpgkey=https://packages.runlot.io/gpg/runlot-archive-keyring.gpg
EOF

<token> はライセンスに付属します。これはダウンロードできる人を決めるだけで、他には何も影響しません。トークンのないマシンにコピーしたパッケージも、同じようにインストールされます。リポジトリホストが稼働するまでは、パッケージを署名付きバンドルとしてお送りします。インストール行以降の手順は、以下と同じです。バンドルの検証については エアギャップ を参照してください。

コントロールプレーン

site.env に値を設定する

Terminal
sudo mkdir -p /etc/runlot/license
sudo cp license /etc/runlot/license/license
sudo apt download runlot-cp && sudo dpkg --unpack runlot-cp_*.deb    # unpacks the example without configuring
sudo cp /usr/share/runlot/site.env.cp-example /etc/runlot/site.env
sudo chmod 0640 /etc/runlot/site.env
sudoedit /etc/runlot/site.env

サンプルには注釈が付いています。以下はデフォルト値がなく、必ず設定が必要なキーのみです:

キー内容
RUNLOT_MASTER_KEYopenssl rand -hex 32。弊社にはコピーがありません。
RUNLOT_DATABASE_URLお使いの PostgreSQL 18。データベースを所有するロールとして接続します
RUNLOT_OBJSTORE_ENDPOINT、_BUCKET、_ACCESS_KEY_ID、_SECRET_ACCESS_KEYお使いのオブジェクトストア
RUNLOT_CP_PRIVATE_ADDRノードがコントロールプレーンに接続するプライベートアドレス
RUNLOT_PUBLIC_URL、RUNLOT_ADMIN_HOSTダッシュボードのオリジンとホスト
RUNLOT_ADMIN_EMAILSプラットフォームの運用者。最初のアドレスは、招待なしでサインアップできる唯一のアドレスでもあります。
RUNLOT_APP_DOMAIN、RUNLOT_WIRE_DOMAIN、RUNLOT_GIT_DOMAIN要件 で決めたお客様のドメイン名

インストール

Debian, Ubuntu
sudo apt install runlot-cp
RHEL, Rocky
sudo dnf install runlot-cp

postinstall は runlot-admin preflight cp、runlot-admin install cp の順に実行し、その後サービスを起動します。ダッシュボードの URL と、ノード用の join token が表示されます。

チェックに失敗した場合は、何も変更される前に失敗し、問題の値が表示されます。site.env を修正して再開してください:

Debian, Ubuntu
sudo dpkg --configure -a
RHEL, Rocky
sudo /opt/runlot/bin/runlot-admin install cp --etc /etc/runlot --state /var/lib/runlot

両者で動作が異なるのは、rpm の postinstall が失敗してもトランザクションが中断されないためです。RHEL ではパッケージはインストールされたものの何も動いていない状態になるため、インストールコアを手動で再実行します。

各データノード

site.env に値を設定する

Terminal
sudo cp /usr/share/runlot/site.env.node-example /etc/runlot/site.env
sudoedit /etc/runlot/site.env
キー内容
RUNLOT_NODE_IDインストール内で一意の値。証明書とリースにこの値が含まれます
RUNLOT_CP_PRIVATE_ADDRコントロールプレーンのプライベートアドレス
RUNLOT_NODE_JOIN_TOKENコントロールプレーンの postinstall が出力した値
RUNLOT_PRIVATE_ADDRこのマシンのプライベートアドレス
RUNLOT_FRONT_TLS_CERT、_KEYお使いの *.apps 証明書。または RUNLOT_FRONT_TLS_ADDR を空にして、お使いのプロキシで終端します
RUNLOT_WIRE_HOSTSワイヤ証明書のドメイン名: *.wire.acme.example,*.apps.acme.example

インストール

Terminal
sudo apt install runlot-node      # or: sudo dnf install runlot-node

join token が認証するのは、ちょうど 2 つの呼び出しだけです。1 つは CA 証明書とノードが自力では導出できない共有値を取得する呼び出し、もう 1 つはノード上で生成した鍵からノード自身の証明書を登録する呼び出しです。CA の秘密鍵はコントロールプレーンの外に出ることはなく、マシン間で手作業でコピーするものもありません。

ランタイムアーティファクト、つまり各プロジェクトが動作するサンドボックスは、パッケージに含まれています。サイズは約 1 GB で、ノードパッケージが大きいのはそのためです。

ノードの所在地を宣言する

ノードが自分のリージョンや国を自分で申告することはありません。登録の認証はノードが行うため、ノードが自分の管轄を申告すると、そのノード自身を制約する事実を自己申告することになるからです。ノードの登録後に、コントロールプレーンから一度だけ宣言します。

On the control plane
sudo /opt/runlot/bin/runlot-admin bootstrap --nodes node-1=icn/KR/do,node-2=fsn/DE

do は、そのノードが Durable Objects を保持できることを示します。すべてのアクティブなノードが宣言済みになるまで、プロジェクトで最初の Durable Object のデプロイは拒否されます。

評価用マシン

Terminal
sudo cp /usr/share/runlot/eval-site.env /etc/runlot/site.env
sudoedit /etc/runlot/site.env          # the master key; the join token after the control-plane half installs
sudo apt install runlot-eval

runlot-cp・runlot-node・ディストリビューションの postgresql-18 に依存し、MinIO の unit を同梱しています。MinIO のバイナリは再配布されません。AGPL のため、ダウンロードはお客様ご自身で行ってください。/opt/runlot/bin/minio に配置して systemctl enable --now minio を実行します。ファイルがない場合は、postinstall がその旨を表示します。

1 台のマシン、1 つのディスク、すべてループバックです。本番向けの構成ではありません。

初回ログイン

  1. RUNLOT_ADMIN_EMAILS に含まれるアドレスは、ダッシュボードの URL でメールとパスワードを使ってサインアップします。デフォルトの RUNLOT_SIGNUP=invite では、これが唯一許可されるサインアップで、それ以外のユーザーはダッシュボードから招待します。
  2. 運用コンソールは、RUNLOT_ADMIN_HOST の Host で振り分けられる同一オリジンです。別のアドレスはありません。
  3. CLI をお使いのインストールに向けて、何かをデプロイします。
Terminal
runlot login --api https://runlot.acme.example
npm create runlot@latest hello && cd hello && runlot deploy

公開プランのプロジェクト数の上限は適用されません。セルフホスト環境でのプロジェクト数の上限は、ライセンスの max_projects のみで、デフォルトでは上限はありません。

このページの目次