kastell について
Kastell は、サーバーのセキュリティ監査、修正、ハードニング、監視を行うコマンドラインツールで、4 社のクラウドプロバイダーへのサーバー構築にも対応しています。複数のサーバーを運用する管理者向けで、AI エージェントが直接サーバーを管理できる MCP サーバーを内蔵しています。
主な機能
- 01449 項目のセキュリティ監査
- 02安全な自動修正と 24 ステップの本番環境ハードニング
- 03バックアップ、リストア、スナップショット管理
- 044 社のクラウドプロバイダーでのサーバー構築
- 05SAFE_MODE がデフォルトで有効な内蔵 MCP サーバー
活用シーン
- 01既存サーバーのセキュリティ監査と安全な修正の適用
- 02本番公開前のサーバーハードニング
- 03AI エージェント経由での複数サーバーの状態確認
MCP 対応
Kastell は Claude や Cursor などのクライアントがサーバー管理に使える 17 のツールを提供する MCP サーバーを内蔵しています。SAFE_MODE がデフォルトで有効で、破壊的な操作はすべてブロックされます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y kastellHETZNER_TOKENシークレットHetzner Cloud API token (optional — only for Hetzner servers)DIGITALOCEAN_TOKENシークレットDigitalOcean API token (optional — only for DigitalOcean servers)VULTR_TOKENシークレットVultr API token (optional — only for Vultr servers)LINODE_TOKENシークレットLinode API token (optional — only for Linode servers)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
13掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| mode | enum | いいえ | 「sizes」アクションのサーバーモードフィルター。Coolify には最低 2 GB の RAM が必要です。デフォルト:coolifycoolify | bare |
| action | enum | はい | 実行するアクション:'list' はすべてのサーバーを一覧表示し、'status' はサーバー/クラウドの状態を確認し、'health' は Coolify への到達性(またはベアメタルサーバーへの SSH 到達性)を確認し、'sizes' はプロバイダーとリージョンで利用可能なサーバータイプと価格を一覧表示しますlist | status | health | sizes |
| region | string | いいえ | リージョン/ロケーション ID('sizes' アクションでは必須。例:Hetzner は 'nbg1'、DigitalOcean は 'fra1') |
| server | string | いいえ | サーバー名または IP。単一サーバーの status/health では必須です。省略するとすべてのサーバーが対象になります。 |
| provider | enum | いいえ | クラウドプロバイダー('sizes' アクションでは必須)hetzner | digitalocean | vultr | linode |
詳細
Kastell
インフラを堅牢に。
日本語 | Türkçe
Kastellを選ぶ理由
サーバーセキュリティは分断されています。Lynisはスキャンしますが、修正はしません。OpenSCAPは高機能ですが、複雑です。カスタムスクリプトは、うまくいかなくなるまでは機能します。そして、保守する人はいません。ツールごとに出力形式も、更新サイクルも、習得に必要な時間も異なります。
Kastellは異なるアプローチを採用しています。 監査、修正、強化、監視を行う1つのCLIです。サーバーをスキャンし、安全な修正を適用し、本番環境の基準に合わせて堅牢化したうえで、同じツールで継続的に監視できます。
初日からAIネイティブです。 KastellにはMCP サーバーが組み込まれているため、Claude、Cursor、その他のMCP対応AI エージェントからサーバーを直接管理できます。プロンプトから本番環境の堅牢化まで、わずか数秒です。
サーバーを保護するために、4つの別々のツールを用意する必要はありません。
クイックスタート
# Interactive mode -- no commands to memorize
npx kastell
引数なしでkastellを実行すると、グラデーション付きのASCIIバナーとクイックスタートの例を表示するインタラクティブな検索メニューが起動します。絵文字で分類されたグループからアクションを選び、入力して結果をすぐに絞り込み、手順に沿ってオプションを設定できます。コマンド名やフラグを覚える必要はありません。
██╗ ██╗ ██████╗ ███████╗████████╗███████╗██╗ ██╗
██║ ██╔╝ ██╔══██╗ ██╔════╝╚══██╔══╝██╔════╝██║ ██║
█████╔╝ ███████║ ███████╗ ██║ █████╗ ██║ ██║
██╔═██╗ ██╔══██║ ╚════██║ ██║ ██╔══╝ ██║ ██║
██║ ██╗ ██║ ██║ ███████║ ██║ ███████╗███████╗███████╗
╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚══════╝╚══════╝╚══════╝
KASTELL v2.3.1 · Your infrastructure, fortified.
$ kastell init --template production → deploy a new server
$ kastell status --all → check all servers
$ kastell secure setup → harden SSH + fail2ban
$ kastell maintain --all → full maintenance cycle
? What would you like to do?
Server Management
❯ Deploy a new server
Add an existing server
List all servers
...
Security
Harden SSH & fail2ban
Manage firewall (UFW)
...
各アクションにはサブオプション(サーバーモード、テンプレート、ログソース、ポート番号など)と、いつでもメインメニューに戻れる**<- 戻る**オプションがあります。
コマンドをすでに把握している場合は、引き続き直接実行できます。
kastell init # Deploy a new server
kastell status my-server # Check server status
kastell backup --all # Backup all servers
Kastellは、サーバーのプロビジョニング、SSHキーの設定、ファイアウォールの構成、プラットフォームのインストールを自動的に処理します。
Kastellの特長
| 問題 | 解決策 |
|---|---|
| アップデートでサーバーを壊してしまいましたか? | maintainによるアップデート前のスナップショット保護 |
| サーバーの状態がわかりませんか? | 組み込みの監視、ヘルスチェック、doctorによる診断 |
| セキュリティ対策が後回しになっていませんか? | ファイアウォール、SSHの強化、SSL、セキュリティ監査を標準搭載 |
| バックアップは? いつかやるつもりですか…… | マニフェスト追跡機能付きの、ワンコマンドでのバックアップと復元 |
| 複数のサーバーを管理していますか? | バックアップ、保守、ステータス、ヘルスチェックで--allフラグを使用 |
| 既存のサーバーが管理対象になっていませんか? | kastell addであらゆるサーバーを管理対象に追加 |
| コマンドを覚えたくありませんか? | kastellを実行するだけで、インタラクティブメニューが案内します |
Kastell と代替ツールの比較
| 機能 | Kastell | Lynis | OpenSCAP |
|---|---|---|---|
| インストール | npm i -g kastell | パッケージマネージャー | パッケージマネージャー |
| 言語 | TypeScript | Shell | C/Python |
| セキュリティチェック | 449 | 300+ | プロファイルにより異なる |
| 自動修正 | 安全な段階 | 提案のみ | 提案のみ |
| MCP(AI エージェント) | 17 ツール | -- | -- |
| コンプライアンス | CIS、PCI-DSS、HIPAA | CIS、HIPAA | CIS、STIG、PCI-DSS |
| クラウドプロビジョニング | 4 プロバイダー | -- | -- |
| ハードニング(ロック) | 24 ステップ | -- | -- |
| リモート監視 | Guard デーモン | -- | -- |
| Telegram ボット | 内蔵 | -- | -- |
| プラットフォーム対応 | Linux(SSH) | Linux/macOS/BSD | Linux |
| ライセンス | Apache 2.0 | GPL-3.0 | LGPL-2.1 |
何ができますか?
デプロイ
kastell # Interactive menu (recommended)
kastell init # Interactive setup (direct)
kastell init --provider hetzner # Non-interactive
kastell init --config kastell.yml # From YAML config
kastell init --template production # Use a template
kastell init --mode bare # Generic VPS (no platform)
kastell init --mode dokploy # Dokploy (Docker Swarm PaaS)
管理
kastell list # List all servers
kastell status my-server # Check server status
kastell status --all # Check all servers
kastell ssh my-server # SSH into server
kastell restart my-server # Restart server
kastell destroy my-server # Destroy cloud server entirely
kastell add # Add existing server
kastell remove my-server # Remove from local config
kastell config set key value # Manage default configuration
kastell config validate # Validate servers.yaml structure and types
kastell export # Export server list to JSON
kastell import servers.json # Import servers from JSON
更新と保守
kastell update my-server # Update platform (Coolify or Dokploy, auto-detected)
kastell update my-server --dry-run # Preview update without executing
kastell maintain my-server # Full maintenance (snapshot + update + health + reboot)
kastell maintain my-server --dry-run # Preview maintenance steps
kastell maintain --all # Maintain all servers
バックアップと復元
kastell backup my-server # Backup DB + config
kastell backup --all # Backup all servers
kastell restore my-server # Restore from backup
スナップショット
kastell snapshot create my-server # Create VPS snapshot (with cost estimate)
kastell snapshot list my-server # List snapshots
kastell snapshot list --all # List all snapshots across servers
kastell snapshot delete my-server # Delete a snapshot
セキュリティ
kastell firewall status my-server # Check firewall
kastell firewall setup my-server # Configure UFW
kastell secure audit my-server # Security audit
kastell secure setup my-server # SSH hardening + fail2ban
kastell domain add my-server --domain example.com # Set domain + SSL
セキュリティ監査
kastell audit my-server # Full security audit (31 categories, 449 checks)
kastell audit my-server --json # JSON output for automation
kastell audit my-server --threshold 70 # Exit code 1 if score below threshold
kastell audit my-server --fix # Interactive fix mode (prompts per severity)
kastell audit my-server --fix --dry-run # Preview fixes without executing
kastell audit my-server --watch # Re-audit every 5 min, show only changes
kastell audit my-server --watch 60 # Custom interval (60 seconds)
kastell audit --host [email protected] # Audit unregistered server
kastell audit my-server --badge # SVG badge output
kastell audit my-server --report html # Full HTML report
kastell audit my-server --score-only # Just the score (CI-friendly)
kastell audit my-server --summary # Compact dashboard view
kastell audit my-server --explain # Explain failed checks with remediation guidance
kastell audit my-server --compliance cis # Filter by compliance framework (cis-level1, cis-level2, pci-dss, hipaa)
セキュリティ強化
kastell lock my-server # 24-step production hardening (SSH + UFW + sysctl + auditd + AIDE + Docker)
kastell lock my-server --dry-run # Preview hardening steps without applying
監視とデバッグ
kastell monitor my-server # CPU, RAM, disk usage
kastell logs my-server # View platform logs (Coolify or Dokploy)
kastell logs my-server -f # Follow logs
kastell health # Health check all servers
kastell doctor # Check local environment
対応プロバイダー
| プロバイダー | ステータス | リージョン | 最低価格 |
|---|---|---|---|
| Hetzner Cloud | 安定版 | EU、US | 約€4/月 |
| DigitalOcean | 安定版 | グローバル | 約$18/月 |
| Vultr | 安定版 | グローバル | 約$12/月 |
| Linode (Akamai) | ベータ版 | グローバル | 約$12/月 |
価格は、2 GB 以上の RAM を搭載した最安プランを示しています(Coolify と Dokploy に必要)。Bare モードには最低要件がなく、プロバイダーによってプランは約$2.50/月から利用できます。セットアップ中に別のサイズを選択できます。Linode のサポートはベータ版です。コミュニティによるテストを歓迎します。
対応プラットフォーム
| プラットフォーム | モードフラグ | 最低 RAM | 最低 CPU | 説明 |
|---|---|---|---|---|
| Coolify | --mode coolify(デフォルト) | 2 GB | 2 vCPU | Docker ベースの PaaS(ポート 8000) |
| Dokploy | --mode dokploy | 2 GB | 2 vCPU | Docker Swarm ベースの PaaS(ポート 3000) |
| Bare | --mode bare | — | — | 汎用 VPS、プラットフォームによるオーバーヘッドなし |
Kastell は PlatformAdapter アーキテクチャを採用しており、同じコマンド(update、maintain、logs、health)をすべてのプラットフォームで使用できます。プラットフォームはサーバーレコードに保存され、各コマンドの実行時に自動検出されます。
開発者エクスペリエンス
| 機能 | コマンド/フラグ | 説明 |
|---|---|---|
| ドライラン | --dry-run | 実行せずに破壊的なコマンドをプレビューします。対応コマンド:destroy、update、restart、remove、maintain、restore、firewall、domain、backup、snapshot、secure。 |
| シェル補完 | kastell completions bash|zsh|fish | コマンドやオプションをタブ補完するためのシェル補完スクリプトを生成します。 |
| 設定の検証 | kastell config validate | Zod の厳密なスキーマを使用して、servers.yaml の構造と型のエラーを確認します。 |
| バージョン確認 | kastell --version | 現在のバージョンを表示し、npm で新しいバージョンが公開されている場合に通知します。 |
YAML 設定
単一の設定ファイルでデプロイできます:
# kastell.yml
provider: hetzner
region: nbg1
size: cax11
name: my-coolify
fullSetup: true
domain: coolify.example.com
kastell init --config kastell.yml
テンプレート
| テンプレート | 最適な用途 | 含まれるもの |
|---|---|---|
starter | テスト、個人プロジェクト | 1~2 vCPU、2~4 GB RAM |
production | 本番アプリケーション | 2~4 vCPU、4~8 GB RAM、完全なハードニング |
dev | 開発と CI/CD | starter と同じ、ハードニングなし |
kastell init --template production --provider hetzner
セキュリティ
Kastell はセキュリティを最優先に構築されており、専用のセキュリティテストスイートを含む380のスイートで12,132件のテストを実施しています。
- API トークンはディスクに保存されません。実行時に入力するか、環境変数で指定します
- 必要に応じて SSH キーが自動生成されます(Ed25519)
- すべての SSH 接続で
StrictHostKeyChecking=accept-newと、IP アドレスの検証(オクテット範囲)および環境変数のフィルタリングを使用します - ユーザー入力を受け付けるすべての箇所でシェルインジェクションを防止します(
spawn/spawnSyncを使用し、execSyncは使用しません) - プロバイダーのエラーメッセージをサニタイズし、トークンの漏えいを防ぎます
- stderr のサニタイズにより、エラー出力に含まれる IP アドレス、ホームパス、トークン、シークレットを伏せます
- 設定ファイル内のトークンを検出します(22種類以上のキー形式、大文字・小文字を区別しない検索、ネストに対応)
- インポート/エクスポート処理では機密フィールドを除去し、厳格なファイル権限(
0o600)を適用します --full-setupを使うと、UFW ファイアウォールと SSH の強化が自動的に有効になります- MCP:SAFE_MODE(デフォルト:オン)により破壊的な操作をすべてブロックします。すべての入力を Zod スキーマで検証し、バックアップの復元時にはパストラバーサルを防止します
- Claude Code フック:destroy-block は
--forceなしでの誤ったkastell destroyを防ぎ、pre-commit 監査ガードはスコアの低下を警告します - テレメトリーゼロ — Kastell は使用データ、分析データ、テレメトリーを一切収集しません。サーバーのデータがマシンの外に送信されることはありません。
セキュリティの動作(v2.3.1)
このセクションでは、v2.3.1 で提供されるセキュリティ上の契約について説明します。今後の作業については別の場所に記載しています(今後の項目については CHANGELOG.md を参照してください)。
KASTELL_STRICT_HOST_KEY=true— 設定すると、Kastell は未知の SSH ホストキーを明確に拒否します。直接 SSH 接続(つまり、accept-newを経由する接続)では、オペレーターがリスクを把握できるように、Trust-On-First-Use(TOFU)に関する警告を一度だけ表示します。KASTELL_STRICT_HOST_KEY=trueと併用すると、この警告は重大なエラーに昇格します。- 非 TTY 環境での破壊的なコマンド — 非対話型環境(CI、スクリプト、自動化)では、破壊的な操作に明示的な
--forceフラグ、またはコマンドで定義されたオプトインフラグが必要です。いずれも指定しない場合、コマンドはゼロ以外のステータスで終了し、明確なエラーを表示します。 - スキップされたチェックの構造化表示 — スキップされたチェック(VPS では該当しない、プラットフォームの不一致、前提条件の不足など)は、監査出力で黙って除外されず、中立的で確認可能な結果として表示されます。オペレーターは、どのチェックが実行されなかったか、その理由を正確に確認できます。
- Windows のシークレットファイル — Kastell が Windows 上に書き込むシークレットを含むファイルには、制限的な ACL(所有者のみのアクセス)が設定されます。Linux/macOS では POSIX 権限
0o600が引き続き基準となり、Windows では同等の DACL が使用されます。 - QuickWin の JSON 形式 —
audit --jsonの QuickWin エントリーには、既存のdescriptionとcommandsに加え、安定したid(チェック ID)とseverityフィールドが含まれるようになりました。これにより、人間向けの説明を解析せずに QuickWins をプログラムから利用できます。 - FORBIDDEN のプレビューに理由を表示 —
--dry-run(または MCP のserver_fixドライラン)で修正をプレビューすると、FORBIDDEN レベルの各修正に、その修正が FORBIDDEN に分類される理由が簡潔に表示されます(例:「再起動が必要」、「アクティブな SSH セッションに影響する」)。理由はチェックのforbiddenReasonフィールドから取得されます。
インストール
# Run directly (recommended)
npx kastell <command>
# Or install globally
npm install -g kastell
kastell <command>
Node.js 20以降が必要です。
安全モード
KASTELL_SAFE_MODE 環境変数で破壊的な操作を制御します。
- MCP のデフォルト:
true—provision、destroy、restoreがブロックされます - CLI のデフォルト:
false— すべての操作が有効です - 上書き:
KASTELL_SAFE_MODE=true kastell destroy <server>→ 拒否されます
対象となるコマンド:init、destroy、backup-restore、snapshot-restore、snapshot-delete、restart、maintain。
トラブルシューティング
サーバーの作成に失敗しますか?
kastell doctor --check-tokens を実行して、API トークンとローカル環境を確認してください。
サーバーが応答しませんか?
kastell status my-server --autostart を使ってプラットフォームの状態を確認し、必要に応じて自動再起動してください。または、kastell health を実行すると、すべてのサーバーを一度に確認できます。
最初からやり直す必要がありますか?
kastell destroy my-server を実行すると、クラウドサーバーが完全に削除されます。
コントリビューション
開発環境のセットアップ、テスト、コントリビューションのガイドラインについては、CONTRIBUTING.md を参照してください。
Kastell では、344 のスイートにわたる 11,206 件のテストを実施しています。PR を提出する前に npm test を実行してください。
MCP サーバー(AI 連携)
Kastell には、AI を活用したサーバー管理のための Model Context Protocol サーバーが組み込まれています。Claude Code、Cursor、Windsurf など、MCP 対応クライアントで利用できます。
{
"mcpServers": {
"kastell": {
"command": "npx",
"args": ["-y", "-p", "kastell", "kastell-mcp"],
"env": {
"HETZNER_TOKEN": "your-token",
"DIGITALOCEAN_TOKEN": "your-token",
"VULTR_TOKEN": "your-token",
"LINODE_TOKEN": "your-token"
}
}
}
}
利用可能なツール:
| ツール | 操作 | 説明 |
|---|---|---|
server_info | list, status, health, sizes | サーバー情報の照会、クラウドプロバイダーとプラットフォームの状態確認 |
server_logs | logs, monitor | SSH 経由でプラットフォーム/Docker のログとシステムメトリクスを取得 |
server_manage | add, remove, destroy | クラウドサーバーの登録、登録解除、削除 |
server_maintain | update, restart, maintain | プラットフォームの更新、サーバーの再起動、完全なメンテナンスの実行 |
server_secure | secure, firewall, domain | SSH の強化、ファイアウォールルール、ドメイン/SSL の管理(10 個のサブコマンド) |
server_backup | backup, snapshot | データベースのバックアップ/復元、VPS スナップショットの作成/管理 |
server_provision | create | クラウドプロバイダー上に新しいサーバーをプロビジョニング |
server_audit | audit | 449 項目のセキュリティ監査とコンプライアンスフレームワークによる絞り込み。修復のガイダンスには --explain を使用 |
server_evidence | collect | チェックサム付きのフォレンジック証拠パッケージを収集 |
server_guard | start, stop, status | 自律型セキュリティ監視デーモンを管理 |
server_doctor | diagnose | 修復コマンドを提示する予防的なヘルス分析 |
server_lock | harden | 24 段階の本番環境向け強化(SSH、UFW、sysctl、auditd、AIDE、Docker) |
server_fleet | overview | フリート全体の健全性とセキュリティ態勢のダッシュボード |
server_fix | fix --safe | バックアップ付きで安全な自動修正を適用(SAFE ティアのみ。デフォルトは dryRun) |
破壊的な操作(destroy、restore、snapshot-delete、provision、restart、maintain、snapshot-create)の実行には、
SAFE_MODE=falseが必要です。
Claude Code プラグイン
Kastell は、Anthropic マーケットプレイス向けの Claude Code プラグインとして利用できます。このプラグインには、以下が含まれています。
- 4 つのスキル:kastell-ops(アーキテクチャのリファレンス)、kastell-scaffold(コンポーネント生成)、kastell-careful(破壊的操作のガード)、kastell-research(コードベースの調査)
- 2 つのエージェント:kastell-auditor(並列監査アナライザー)、kastell-fixer(worktree で分離された自動修正)
- 5 つのフック:destroy-block、session-audit、session-log、pre-commit-audit-guard、stop-quality-check
Claude Code のプラグインマネージャーからインストールするか、claude --plugin-dir kastell-plugin を使って直接利用してください。
MCP プラットフォームのセットアップ
| プラットフォーム | 設定場所 | ガイド |
|---|---|---|
| Claude Code | claude mcp add または .mcp.json | セットアップガイド |
| Claude Desktop | claude_desktop_config.json | セットアップガイド |
| VS Code / Copilot | .vscode/mcp.json | セットアップガイド |
| Cursor | .cursor/mcp.json | セットアップガイド |
その他のプラットフォーム(JetBrains、Windsurf、Gemini など)は v2.0 で対応予定です。
AI からの見つけやすさ
Kastell は AI クローラー向けに llms.txt を提供しており、MCP Registry に io.github.kastelldev/kastell として登録されています。
v2.3 の信頼性契約
これらの契約は、CLI と MCP サーバーに適用されます。
プロビジョニングの動作
server_provision は、プロバイダーがサーバーを作成し、Kastell がそのサーバーを永続的に登録すると戻ります。readiness.status が pending の場合があります。その場合は、server_info status または server_info health を実行してください。対話形式の kastell init コマンドは、既存の準備状況チェックが完了するまで引き続き待機します。
自動化の契約
- サポートされていない CLI 操作と失敗した CLI 操作は、終了コード
1を返します。 - 結果が空でも有効な場合や、ユーザーがキャンセルした場合は
0を返します。 --allで一部の操作が失敗した場合は1を返します。audit --jsonとaudit --ciは、標準出力を 1 つの JSON ペイロード専用にします。
CI/CD との統合
CI パイプラインで kastell audit を使用して、セキュリティのベースラインを適用します。
# .github/workflows/security-audit.yml
name: Security Audit
on:
schedule:
- cron: '0 6 * * 1' # Weekly Monday 6 AM
workflow_dispatch:
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install -g kastell
- run: kastell audit --host root@${{ secrets.SERVER_IP }} --threshold 70 --json > audit-result.json
- uses: actions/upload-artifact@v4
with:
name: audit-report
path: audit-result.json
--threshold フラグを指定すると、スコアが目標を下回った場合にゼロ以外の終了コードが返され、CI ジョブが自動的に失敗します。
次のステップ
- テストの品質向上:ミューテーションテスト、カバレッジの不足箇所、統合テスト(v1.14)
- マーケットプレイスでの配布を備えたプラグインエコシステム(v2.0)
- ダッシュボードとマネージドサービス(v3.0)
理念
インフラストラクチャは、退屈で、予測可能で、安全であるべきです。
Kastell は単なるスクリプトではありません。セルフホスト可能なインフラストラクチャのための DevOps セーフティレイヤーです。
ライセンス
Apache 2.0 -- LICENSE を参照してください
サポート
- GitHub の Issues -- バグ報告と機能リクエスト
- 変更履歴 -- バージョン履歴
@omrfc が開発
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。