🚀 Superjolt CLI (Beta)
🤖 MCP対応のAI搭載デプロイメントプラットフォーム
Superjoltの公式コマンドラインインターフェイスです。AIの支援を受けながらJavaScriptアプリケーションのデプロイと管理ができます。
⚠️ 重要提示
このバージョンはベータ版です。皆様からのフィードバックを元に、Superjoltを積極的に改善しています。皆様の経験を共有していただけると幸いです。Discordに参加して、ぜひご意見をお聞かせください!
ベータ版の間、CLIは互換性を保つために重大なアップデートを自動的にチェックします。
🚀 クイックスタート
JavaScriptフレームワークのプロジェクトフォルダで以下のコマンドを実行します。
npx superjolt deploy
これだけです!CLIが認証とデプロイの手順を案内します。
✨ 主な機能
- 🚀 1コマンドでのデプロイ:
npx superjolt deploy
- 🤖 MCPを介したAI搭載のインフラストラクチャ管理
- 🔧 サービスのライフサイクル全体の管理
- 🔐 セキュアな環境変数の取り扱い
- 📊 リアルタイムのログとモニタリング
- 🌐 自動SSLとカスタムドメイン
📦 インストール
npxを使用する場合(インストール不要)
npx superjolt deploy
グローバルインストール
npmを使用してSuperjolt CLIをグローバルにインストールします。
npm install -g superjolt
またはyarnを使用する場合:
yarn global add superjolt
💻 使用例
基本的な使用法
Node.jsアプリケーションのデプロイ
cd my-node-app
superjolt login
superjolt deploy
superjolt deploy --verbose
環境変数の管理
superjolt env:set NODE_ENV production
superjolt env:push
superjolt env:list
カスタムドメインの管理
superjolt domain:add app.example.com
superjolt domain:add app.example.com happy-blue-fox
superjolt domain:add www.example.com --primary
superjolt domain:list
superjolt domain:status app.example.com
superjolt domain:remove app.example.com
マシンの操作
superjolt machine:create
superjolt machine:list
superjolt machine:use happy-blue-fox
ClaudeによるAI搭載の管理
MCPを設定すると、自然言語で以下の操作ができます。
あなた: "実行中のすべてのサービスを表示して"
Claude: [すべてのサービスとそのステータスをリスト表示]
あなた: "APIサービスを再起動して、そのログを確認して"
Claude: [サービスを再起動し、最近のログを表示]
あなた: "データベース接続の環境変数を設定して"
Claude: [DATABASE_URLと関連する変数の設定を支援]
📚 ドキュメント
コマンド一覧
認証
superjolt login - Superjoltアカウントで認証する
superjolt logout - アカウントからログアウトする
superjolt me - 現在のユーザー情報を表示する
superjolt token - CI/CDで使用する認証トークンを表示する
--show - 完全なトークンを表示する(エクスポート用)
デプロイ
superjolt deploy [options] - アプリケーションをSuperjoltにデプロイする
-p, --path <path> - アプリケーションディレクトリのパス(デフォルトは現在のディレクトリ)
-s, --service <serviceId> - 既存のサービスにデプロイする(オプション)
-m, --machine <machineId> - デプロイ先のマシンID
-n, --name <name> - サービス名(新しいサービスの場合はpackage.jsonの名前がデフォルト)
-v, --verbose - 詳細なビルド出力とログを表示する
マシン管理
superjolt machine:create - 新しいマシンを作成する
superjolt machine:list - すべてのマシンをリスト表示する
superjolt machine:delete <machine-id> - マシンを削除する
superjolt machine:use <machine-id> - デプロイのデフォルトマシンを設定する
superjolt machine:rename [machine-id] <new-name> - マシンを改名する(IDを省略した場合はデフォルトマシンを使用)
サービス管理
superjolt service:list [machine-id] - マシンのサービスをリスト表示する
superjolt service:start <service-id> - サービスを起動する
superjolt service:stop <service-id> - サービスを停止する
superjolt service:restart <service-id> - サービスを再起動する
superjolt service:rename <service-id> <new-name> - サービスを改名する(エイリアス: rename)
superjolt service:delete <service-id> - サービスを削除する
カスタムドメイン
superjolt domain:add <domain> [service-id] - サービスにカスタムドメインを追加する(サービスIDを省略した場合は.superjoltファイルを使用)
-p, --primary - サービスのプライマリドメインとして設定する
superjolt domain:list [service-id] - カスタムドメインをリスト表示する(エイリアス: domains)
superjolt domain:status <domain> - ドメインの検証ステータスを確認する
superjolt domain:remove <domain> - カスタムドメインを削除する(エイリアス: domain:delete)
環境変数
superjolt env:list - 環境変数をリスト表示する
superjolt env:set <key> <value> - 環境変数を設定する
superjolt env:get <key> - 環境変数を取得する
superjolt env:unset <key> - 環境変数を削除する
superjolt env:push - .envファイルをアプリケーションにプッシュする
ログ
superjolt logs [service-id] - アプリケーションのリアルタイムログを表示する
その他のコマンド
superjolt reset - すべてのマシンとサービスを削除する(破壊的な操作 - 確認が必要)
superjolt update - CLIを最新バージョンに更新する
superjolt update --check - アップデートをチェックするがインストールしない
superjolt status - CLIの設定、バージョン、および保存されたデータを表示する(エイリアス: info, config)
--show-token - 完全な認証トークンを表示する
設定
プロジェクト設定
初回のデプロイ後、CLIは自動的にプロジェクトルートに.superjoltファイルを作成します。このファイルは以下の情報を追跡します。
{
"serviceId": "clever-red-deer"
}
これにより、CLIは既存のデプロイを更新するか、新しいデプロイを作成するかを判断できます。
デプロイ除外ファイル (.superjoltignore)
プロジェクトルートに.superjoltignoreファイルを作成することで、特定のファイルやディレクトリをデプロイから除外できます。このファイルは.gitignoreと同じ構文に従います。
デフォルトの除外パターンと例を表示
デフォルトの除外パターン
以下のパターンは常にデプロイから除外されます。
node_modules/
.git/
dist/
build/
.env*
*.log
coverage/
.nyc_output/
.next/
.nuxt/
.cache/
tmp/
temp/
.superjolt
カスタム除外パターン
.superjoltignoreファイルを作成して、独自の除外パターンを追加できます。
# テストファイルを無視
**/*.test.js
**/*.spec.js
__tests__/
# 開発ファイルを無視
*.dev.js
.vscode/
.idea/
# 特定のディレクトリを無視
docs/
examples/
# 開発中の大きなアセットを無視
videos/
*.mp4
.superjoltignoreのパターンはデフォルトの除外パターンと結合されるため、繰り返し記述する必要はありません。
ポート設定
アプリケーションがSuperjoltにデプロイされると、サーバーは自動的にPORT環境変数を通じてポート番号を提供します。アプリケーションはこのポートをリッスンする必要があります。
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
これはHerokuなどの他のPaaSプラットフォームと同様です。ポートを選択するのではなく、プラットフォームが動的に割り当てます。利用可能な場合は常にprocess.env.PORTを使用し、ローカル開発用のフォールバックを設定します。
CI/CD統合
Superjolt CLIは、環境変数を介した認証をサポートしており、シームレスなCI/CD統合が可能です。
CI/CD認証の設定
- 認証トークンを取得します。
superjolt token --show
- トークンをCI/CDプラットフォームのシークレットとして設定します。
- GitHub Actions:
SUPERJOLT_TOKENという名前のリポジトリシークレットとして追加します。
- GitLab CI: 保護されたCI/CD変数として追加します。
- CircleCI: プロジェクト設定の環境変数として追加します。
- その他のプラットフォーム:
SUPERJOLT_TOKENを安全な環境変数として設定します。
- CI/CDパイプラインで使用します。
GitHub Actionsの例
name: Deploy to Superjolt
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Deploy to Superjolt
env:
SUPERJOLT_TOKEN: ${{ secrets.SUPERJOLT_TOKEN }}
run: npx superjolt deploy
GitLab CIの例
deploy:
stage: deploy
image: node:18
script:
- npm ci
- npx superjolt deploy
only:
- main
variables:
SUPERJOLT_TOKEN: $SUPERJOLT_TOKEN
汎用スクリプトの例
#!/bin/bash
export SUPERJOLT_TOKEN="your-token-here"
npx superjolt deploy
セキュリティのベストプラクティス
- トークンをバージョン管理にコミットしないでください
- トークンをCI/CDプラットフォームの暗号化されたシークレットとして保存します。
- 異なる環境(ステージング、本番)には異なるトークンを使用します。
- 定期的にトークンをローテーションします。
- トークンはSuperjoltアカウントへの完全なアクセスを提供するため、慎重に取り扱ってください。
環境変数による認証
SUPERJOLT_TOKENが設定されている場合、CLIは以下の動作を行います。
- ブラウザベースのログインフローをスキップします。
- すべてのAPIリクエストにトークンを使用します。
- ヘッドレス環境(CI/CD、コンテナ)で動作します。
トークンのソースを確認するには、以下のコマンドを実行します。
superjolt status
🤖 AI統合 (MCP)
Superjoltは、ネイティブのModel Context Protocol (MCP) をサポートする最初のデプロイメントプラットフォームの1つです。これにより、Claude DesktopなどのAIアシスタントを通じて、インフラストラクチャ全体を管理できます。
MCPの利点
- 自然言語による制御: 会話形式のコマンドを使用してデプロイを管理できます。
- コンテキスト認識操作: AIがインフラストラクチャの状態を理解します。
- 自動化されたワークフロー: AIに複雑なデプロイシーケンスを処理させることができます。
- エラー解決: デプロイの問題に対してインテリジェントな支援を受けられます。
MCPの設定
- Superjolt CLIをインストールする(MCPサーバーを含む)
npm install -g superjolt
- Superjoltで認証する
superjolt login
- Claude Desktopの設定に追加する
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Linux:
~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"superjolt": {
"command": "superjolt-mcp",
"args": []
}
}
}
- Claude Desktopを再起動する
MCPの機能
設定が完了すると、自然言語を使用して以下の操作ができます。
認証とCI/CDの設定
- "CI/CD用の認証トークンを取得して"
- "GitHub Actionsの設定方法を教えて"
- "自分が認証されているか確認して"
インフラストラクチャ管理
- "新しい本番マシンを作成して"
- "実行中のすべてのサービスをリスト表示して"
- "停止しているサービスを表示して"
- "すべてのテストマシンを削除して"
デプロイ操作
- "APIサービスを再起動して"
- "ステージング環境を停止して"
- "Webサービスのログを表示して"
設定
- "バックエンドのDATABASE_URLを設定して"
- "すべての環境変数をリスト表示して"
- "本番環境のAPIキーを更新して"
カスタムドメイン
- "app.example.comをWebサービスに追加して"
- "すべてのカスタムドメインをリスト表示して"
- "自分のドメインの検証ステータスを確認して"
- "old.example.comを削除して"
利用可能なMCPツール
すべてのMCPツールを表示
認証
check_auth - Superjoltで認証されているか確認する
get_current_user - 現在のユーザー情報を取得する
get_token - CI/CDで使用する認証トークンを取得する
マシン管理
list_machines - すべてのマシンをリスト表示する
create_machine - 新しいマシンを作成する
delete_machine - マシンを削除する
rename_machine - マシンを改名する
set_default_machine - デプロイのデフォルトマシンを設定する
サービス管理
list_services - サービスをリスト表示する(オプションでマシンでフィルタリング)
start_service - サービスを起動する
stop_service - サービスを停止する
restart_service - サービスを再起動する
delete_service - サービスを削除する
rename_service - サービスを改名する
環境変数
list_env_vars - サービスのすべての環境変数をリスト表示する
set_env_vars - 1つ以上の環境変数を設定する
get_env_var - 特定の環境変数を取得する
delete_env_var - 環境変数を削除する
push_env_file - .envファイルをサービスにプッシュする
カスタムドメイン
add_custom_domain - サービスにカスタムドメインを追加する
list_custom_domains - サービスまたはすべてのサービスのカスタムドメインをリスト表示する
remove_custom_domain - カスタムドメインを削除する
get_custom_domain_status - カスタムドメインのステータスを取得する
ログ
MCPの要件とトラブルシューティング
- Node.js 16以上が必要です(MCPサーバーは最新のJavaScript機能を使用しています)
Unexpected token '??=' エラーが表示される場合は、Claude Desktopが古いNode.jsバージョンを使用しています。
解決策
- デフォルトのNodeバージョンを設定してClaude Desktopを再起動します。
nvm alias default 16
- または、Claude Desktopの設定で明示的なパスを使用します。
{
"mcpServers": {
"superjolt": {
"command": "/path/to/node16+/bin/node",
"args": ["/path/to/node16+/bin/superjolt-mcp"]
}
}
}
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEを参照してください。