fleetsh / ドキュメント

対話端末では fleetsh add hk1 が不足する項目を尋ねます。スクリプトと --json では 必須オプションを明示してください。対話設定 を参照してください。

使い始める

最初にホストを 1 台追加し、SSH ログインを確認します。 コマンドが PATH にない場合はインストールと PATHを参照してください。

npx または npm で実行する

Node.js 22 以降を使用します。

npx fleetsh add hk1 --host hk1.example.com --user ubuntu --auth key --key ~/.ssh/id_ed25519
npx fleetsh ssh hk1
npx fleetsh alive
npx fleetsh stats

または npm install -g fleetsh でグローバルにインストールし、 すべての例の npx fleetsh を fleetsh に置き換えてください。 直接バイナリーと同じホスト一覧、OS の資格情報ストアを使用します。

ランチャーは GitHub Release を自動で追従し、正式版を優先します。 正式版がない場合のみプレビューを使用します。 子コマンドの前に npx fleetsh --release bundled version を指定すると元の版を、 --release v0.1.0-alpha.1 を指定すると特定の Go 版を選択します。 npx fleetsh --launcher-help または バージョン選択、キャッシュと PATHを参照してください。

ヘルプとオフラインガイド

実行ファイルには、例付きの英語コマンドヘルプと 11 のオフラインガイドが含まれます。 init の実行前でも、設定ファイル、ネットワーク接続、資格情報ストアなしで参照できます。 オンライン文書は言語ごとに分かれており、既定は英語です。

位置引数の不足・過剰や不正なフラグがある場合、エラーと構文・使用例・ フラグのヘルプを標準エラー出力に表示し、終了コード 2 を返します。 npx fleetsh exec と npx fleetsh exec whoami はヘルプを表示します。 exec にはホスト・グループの指定と、一つに引用したコマンドが必要です。 例: npx fleetsh exec '@all' "whoami"。 ヘルプのリンクは HTTPS の配信先を直接使用し、GitHub Pages の既定 URL から継承される HTTP リダイレクトを避けます。

fleetsh --help
fleetsh help exec
fleetsh add --help
fleetsh docs
fleetsh docs passwords
fleetsh docs groups
fleetsh docs patching
トピック 内容
quickstart 最初のホスト、SSH の信頼設定、基本操作
config OS ごとの保存先、既定値、バックアップ
passwords 自動保存、更新、共有する参照、sudo
groups 複数グループ、所属の追加と削除、タグ
selectors ホストとグループの和集合、@all、タグ絞り込み
exec 並列数、引用符、タイムアウト、sudo、JSON
proxies 全体とホストごとの SOCKS5、HTTP/HTTPS CONNECT、ProxyJump
patching 更新の事前確認、apt などの更新、再起動
monitoring SSH 接続確認、CPU・メモリー・swap・ユーザー・ディスク
forwarding ローカル・リモート・動的 TCP 転送
troubleshooting 終了コード、信頼、認証、資格情報ストア

fleetsh docs TOPIC でガイドを表示します。オフラインの本文は英語のプレーンテキストです。 --json は対応する一覧や一括操作の結果に適用され、文書表示には適用されません。 ヘルプの表示は、例の実行や掲載リンクのブラウザー起動を行いません。

最初のホストを追加する

add はホストの保存時に、存在しないホスト一覧と親ディレクトリーを自動作成します。 init は空のコメント付きの例が必要な場合だけ使えます。既存の不正なファイルや 読み取りできないファイルは上書きせず、エラーとして報告します。不正なオプションや パスワード入力のキャンセルでは設定ファイルを作成しません。 ほかのコマンドでは、ホスト一覧がない場合に add または init を案内します。 独自のホスト一覧には、すべてのコマンドで同じ --config PATH を指定してください。 登録済みの別名は edit HOST で変更します。

ホスト一覧は現在の OS ユーザーのローカル設定ディレクトリに保存されます。 Windows は %APPDATA%\fleetsh\config.toml、 macOS は ~/Library/Application Support/fleetsh/config.toml、 Linux は $XDG_CONFIG_HOME/fleetsh/config.toml または ~/.config/fleetsh/config.toml です。 保存先、独自のホスト一覧、バックアップも参照してください。

fleetsh add hk1 --host hk1.example.com --user ubuntu --auth key --key ~/.ssh/id_ed25519 --groups asia,web
fleetsh add sg1 --host sg1.example.com --user ubuntu --auth password --groups asia
fleetsh ls
fleetsh ls '@asia' --json
fleetsh show hk1
fleetsh edit hk1 --port 2222

ホストの追加に必須の引数とオプション

fleetsh add HOST の HOST はローカルの別名で、接続先アドレスではありません。

引数・オプション 必須になる条件
HOST 常に必要: 新しいローカル別名
--host ADDRESS 常に必要: console-only ホストも含む
--user USER SSH ホスト。既定は --connection ssh
--key PATH --auth key を選択した場合

新規ホストでは --auth は省略可能で既定は password、--port の既定は 22 です。 --auth を省略するとパスワードを 2 回確認し、OS の認証情報ストアに保存します。 --auth agent は鍵を読み込んだ SSH Agent が動作している場合に使います。 秘密鍵ファイルには --auth key --key PATH を指定してください。 既存ホストの認証方式は維持します。SSH agent unavailable が表示され、パスワードでログインする場合は、 fleetsh edit HOST --auth password の後に fleetsh ssh HOST を実行してください。 別のホスト一覧を使う場合は、両方のコマンドに同じ --config PATH を指定します。 パスワードは非表示の入力で確認するため、パスワード用の必須オプションはありません。 追加時に必須値が不足または空の場合、ホスト一覧の読み込みや秘密値の入力より前に、 不足しているオプションとヘルプを表示します。不正なホスト設定でもヘルプを表示します。 edit HOST は省略した値を保持し、変更後の値を検証します。 --connection ssh や --auth key に変更すると、--user や --key が必要になる場合があります。 console-only ホストは --user を省略できます。 詳細は fleetsh add --help と fleetsh edit --help を参照してください。

パスワード入力は表示されません。秘密値は OS の認証情報ストアに保存し、 ホスト一覧には参照名だけを保存します。秘密鍵のパスフレーズも同じ --credential で参照できます。 参照がなければ、非表示の入力で確認します。

パスワード認証のホスト追加では、非表示の入力で 2 回確認し、自動で保存します。 生成した参照は fleetsh-ssh- で始まり、ホスト一覧には名前だけを保持します。 fleetsh edit sg1 --save-password で、参照を手動管理せずに更新できます。 パスワード保存とグループ変更も参照してください。

すべてのコマンドで --config PATH を指定できます。~/ で始まるパスは展開されます。 ホスト一覧は厳密に検証し、未知のフィールドや平文の password フィールドを拒否します。 edit は TOML を書き直すため、コメントを保持しません。

ホストの身元を確認する

fleetsh ssh hk1 --connect-timeout 60s
fleetsh hostkey show hk1

初回接続では SHA256 フィンガープリントを表示し、対話的な y の入力を求めます。 信頼する前に、独立した情報源で確認してください。この確認も接続タイムアウトに含まれるため、 必要に応じて --connect-timeout を調整します。 変更されたホスト鍵は常に拒否し、無人実行では未知の鍵も拒否します。

正当な鍵の交換を独立した情報源で確認した後は、次のように実行します。

fleetsh hostkey reset hk1
fleetsh ssh hk1 --connect-timeout 60s

専用の known_hosts は、選択したホスト一覧のファイルと同じディレクトリにあります。 SSH の標準入力が端末の場合は PTY と raw モードを使い、端末サイズの変更も転送します。 ポート転送は名前付き設定と fleetsh forward を使います。OpenSSH 引数の引き渡しは今後の予定です。

コマンドひとつでリモート監視

fleetsh alive
fleetsh stats
fleetsh alive '@web' --timeout 10s
fleetsh stats '@web' --parallel 5 --timeout 15s
fleetsh monitor hk1
fleetsh stats --json

alive は SSH 認証とコマンド実行の可否を確認します。ICMP の確認ではありません。 stats(別名 monitor)は Linux のスナップショットを 1 回表示します。 内容は whoami、1 秒間の CPU 使用率、メモリーと swap の使用量(MiB と割合)、 空き容量を含む df -h -P です。両コマンドの既定対象は @all で、 セレクター、タグ、並列数、タイムアウトを指定できます。コンソール専用ホストはスキップします。 JSON は通常の一括実行レポートで、スナップショットは各ホストの stdout に入ります。

Agent のインストールや sudo は不要です。Linux の /proc、awk、sleep、 whoami、df が必要です。メモリー使用量は総量から利用可能量を引き、swap 無効時は 0 と表示します。 CPU はホストの値で、コンテナーの割り当て上限ではありません。--sudo は表示されるユーザーを変更します。 オフラインの説明は fleetsh docs monitoring にあります。

ポート転送は fleetsh forward HOST [NAME] で起動します。 ローカル・リモート・動的転送の設定を参照してください。

コマンドを実行する

PowerShell では fleetsh ls '@asia' のようにグループ指定を引用符で囲みます。 これにより @ を変数展開として扱うことを防ぎます。同じ書式を Bash と Zsh でも使えます。

fleetsh exec hk1 "uptime"
fleetsh exec '@asia' "df -h" --parallel 10
fleetsh exec hk1,sg1 "uptime" --serial --json
fleetsh exec all "docker ps" --tag web --timeout 60s
fleetsh exec hk1 "apt-get update" --sudo

ホストに sudo_credential がない場合、--sudo はパスワード不要の sudo -n を使います。 参照した sudo パスワードは SSH チャネルの標準入力で送信し、コマンドには埋め込みません。 コマンドには対話的な標準入力を渡さないため、対話操作には ssh を使ってください。

出力はホストごとにまとめ、stdout と stderr をそれぞれ 4 MiB に制限します。 JSON は results と summary を持ち、ホスト、終了状態、時間、エラー分類、 出力の切り詰め、スキップの情報を含みます。コンソール専用のホストは明示的にスキップします。

終了コードは、0 が全実行対象の成功、1 がコマンド失敗・キャンセル・実行タイムアウト、 2 がローカルの引数・設定・認証情報の準備エラー、 3 が接続・認証・プロキシ・ホスト鍵の失敗(接続タイムアウトを含む)です。 複数種類のリモート失敗がある場合は、コマンド失敗を優先します。 対話シェルのリモート終了状態が非ゼロの場合は 1、通信エラーの場合は 3 を返します。

ホストの編集と保存したパスワードの修正

対話端末では edit HOST がメニューを開きます。スクリプトと --json では 変更オプションが必要です。設定の確認には show HOST を使います。 診断、継続監視、保存コマンド、ファイル転送は 日常操作 を参照してください。 保存したパスワードを間違えた場合は、正しいサーバーのパスワードを 2 回入力します。

npx fleetsh edit hk1 --save-password
npx fleetsh ssh hk1
npx fleetsh docs password

変更するのはローカルの保存値だけです。パスワードの修正も参照してください。 npx fleetsh docs password の空白を省略しないでください。fleetshdocs は別の npm パッケージです。

Linux VPS を更新、再起動する

fleetsh update '@asia' --dry-run --sudo
fleetsh update '@asia' --sudo
fleetsh update hk1 --dist --sudo --yes
fleetsh reboot '@asia' --dry-run --sudo
fleetsh reboot '@asia' --parallel 2 --sudo --wait-timeout 5m

更新のドライランは OS を調べるために接続しますが、パッケージ更新は実行しません。 対応 OS ID は Debian、Ubuntu、RHEL、Rocky、AlmaLinux、Fedora、CentOS、Arch、Manjaro です。 未対応 OS や事前確認の失敗がある場合、すべての対象への更新を中止します。 再起動のドライランでは接続しません。

実際の更新と再起動は対象の別名を表示し、確認を求めます。 自動実行を明示的に承認する場合は --yes を指定してください。 再起動の標準並列数は 2 です。Linux の起動 ID が変わり、uptime の確認に成功した場合のみ成功とします。 コマンドを自動で再試行することはありません。

一連の保守手順はすべての VPS を更新するを参照してください。