mcpField
V
vps

vps

github.com/hostingerクラウド・DevOps26262 回インストール19 週間前に更新
リポジトリ

vps について

Hostinger VPS APIと関連する管理手順を扱うスキルです。VPSの運用担当者向けに、仮想マシンのライフサイクル操作のほか、Dockerのデプロイ、ネットワーク保護、復旧、監視を説明します。

主な機能

  1. 01VPSインスタンスの作成と管理
  2. 02Docker Composeプロジェクトのデプロイ
  3. 03ファイアウォールとSSHキーの設定
  4. 04バックアップ、スナップショット、復旧の管理
  5. 05パフォーマンス指標の確認

活用シーン

  1. 01VPSインスタンスのセットアップと運用
  2. 02Docker Composeワークロードのデプロイ
  3. 03VMの復旧またはデータの復元

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hostinger/hostinger-agent-skills --skill vps

インストール後、Claude Code で/vpsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

deployment-workflow.md
docker-patterns.md
firewall-patterns.md
terraform-examples.md

詳細

Hostinger VPS

VPS API は、仮想プライベートサーバーの包括的な管理機能を提供します。購入やセットアップから、Docker のデプロイ、ファイアウォールの設定、SSH キー、バックアップ、スナップショット、OS の再インストール、リカバリモード、マルウェアスキャン、パフォーマンスの監視まで対応しています。

目次

基本概念

仮想マシン

専用の CPU、RAM、ディスク、ネットワークリソースを備えた VPS インスタンスです。各 VM には OS テンプレート、root アクセス、IP アドレスがあります。VM の状態は、initial → running → stopped と遷移します。

アクション

VM に対する非同期操作(起動、停止、再起動、再作成など)では、ポーリングして状態を確認できるステータス付きのアクションリソースが返されます。

Docker Manager

VPS インスタンス上で Docker Compose プロジェクトを直接デプロイ、管理します。docker-compose.yaml の内容または GitHub URL からプロジェクトを作成できます。

ファイアウォール

インバウンドトラフィックを制御するネットワークセキュリティルールです。デフォルトではすべての受信トラフィックが拒否されるため、許可ルールを明示的に追加する必要があります。VM ごとに有効にできるファイアウォールは一度に 1 つだけです。変更を反映するには、手動で同期する必要があります。

SSH 公開鍵

認証に使用する SSH キーです。キーはアカウントレベルで管理され、特定の VM に割り当てられます。

OS テンプレート

VM のインストールに使用する、事前設定済みの OS イメージです(Ubuntu、Debian、CentOS など)。パネルテンプレート(cPanel または Plesk 付きなど)も含まれます。

インストール後スクリプト

VM のインストール後に実行される自動化スクリプトです。実行権限付きで /post_install に保存されます。出力は /post_install.log に書き込まれます。最大サイズは 48KB です。

バックアップとスナップショット
  • バックアップ:Hostinger が管理する定期的な自動バックアップです
  • スナップショット:ユーザーが開始する特定時点のキャプチャです。VM ごとに保存できるスナップショットは 1 つのみで、新しく作成すると既存のものが上書きされます
リカバリモード

リカバリディスクイメージから VM を起動し、システムを復旧します。元のディスクは /mnt にマウントされます。

マルウェアスキャナー(Monarx)

VPS インスタンス上でのマルウェアの検出と防止に使用する、オプションのセキュリティツールです。

一般的なパターン

VPS の購入とセットアップ
# Step 1: Get available OS templates
curl -X GET "https://developers.hostinger.com/api/vps/v1/templates" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Step 2: Get available data centers
curl -X GET "https://developers.hostinger.com/api/vps/v1/data-centers" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Step 3: Purchase a VPS
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "item_id": "hostingercom-vps-kvm2-usd-1m",
    "payment_method_id": 517244,
    "template_id": 1,
    "data_center_id": 1,
    "hostname": "my-server",
    "password": "SecurePass123!"
  }'

# Step 4: Setup purchased VM (if in initial state)
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/setup" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": 1,
    "data_center_id": 1,
    "hostname": "my-server",
    "password": "SecurePass123!"
  }'

CLI(hapi):

hapi vps vm list

Python SDK:

from hostinger_api import Hostinger

client = Hostinger(api_token="YOUR_API_TOKEN")

# List all VPS instances
vms = client.vps.virtual_machines.list()
for vm in vms:
    print(f"{vm.hostname} - {vm.state} - {vm.ip_address}")

TypeScript SDK:

import { Hostinger } from "hostinger-api-sdk";

const client = new Hostinger({ apiToken: "YOUR_API_TOKEN" });

const vms = await client.vps.virtualMachines.list();
for (const vm of vms) {
  console.log(`${vm.hostname} - ${vm.state} - ${vm.ipAddress}`);
}

PHP SDK:

use Hostinger\Api\HostingerApi;

$client = new HostingerApi('YOUR_API_TOKEN');

$vms = $client->vps->virtualMachines->list();
foreach ($vms as $vm) {
    echo "{$vm->hostname} - {$vm->state} - {$vm->ip_address}\n";
}
VM のライフサイクル操作
# List all VMs
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Get VM details
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Start VM
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/start" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Stop VM
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/stop" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Restart VM
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/restart" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Set hostname
curl -X PUT "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/hostname" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "hostname": "new-hostname.example.com" }'

# Set root password
curl -X PUT "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/root-password" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "password": "NewSecurePass123!" }'

# Recreate VM (DESTRUCTIVE - all data lost)
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/recreate" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": 1,
    "password": "SecurePass123!"
  }'
Docker Compose プロジェクトのデプロイ
# List Docker projects on a VM
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/docker" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Deploy from docker-compose.yaml content
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/docker" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "project_name": "my-app",
    "content": "version: \"3\"\nservices:\n  web:\n    image: nginx:latest\n    ports:\n      - \"80:80\""
  }'

# Deploy from GitHub URL
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/docker" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "project_name": "my-app",
    "url": "https://github.com/user/repo"
  }'

# Get project containers and stats
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/docker/my-app/containers" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# View project logs (last 300 entries)
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/docker/my-app/logs" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Start / Stop / Restart / Update / Delete project
curl -X POST ".../docker/my-app/start" -H "Authorization: Bearer $HOSTINGER_API_TOKEN"
curl -X POST ".../docker/my-app/stop" -H "Authorization: Bearer $HOSTINGER_API_TOKEN"
curl -X POST ".../docker/my-app/restart" -H "Authorization: Bearer $HOSTINGER_API_TOKEN"
curl -X POST ".../docker/my-app/update" -H "Authorization: Bearer $HOSTINGER_API_TOKEN"
curl -X DELETE ".../docker/my-app/down" -H "Authorization: Bearer $HOSTINGER_API_TOKEN"
ファイアウォールの設定
# Create a firewall
curl -X POST "https://developers.hostinger.com/api/vps/v1/firewall" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "web-server" }'

# Add rules (default drops all — add accept rules for ports you need)
curl -X POST "https://developers.hostinger.com/api/vps/v1/firewall/1/rules" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "protocol": "tcp",
    "port": "80",
    "source": "0.0.0.0/0",
    "action": "accept"
  }'

# Activate firewall on a VM
curl -X POST "https://developers.hostinger.com/api/vps/v1/firewall/1/activate/12345" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Sync firewall after rule changes
curl -X POST "https://developers.hostinger.com/api/vps/v1/firewall/1/sync/12345" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"
SSH キーの管理
# Create SSH key
curl -X POST "https://developers.hostinger.com/api/vps/v1/public-keys" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-laptop",
    "key": "ssh-ed25519 AAAA... user@host"
  }'

# Attach key to VM
curl -X POST "https://developers.hostinger.com/api/vps/v1/public-keys/attach/12345" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "ids": [1, 2] }'

# List keys on a VM
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/public-keys" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"
バックアップとスナップショット
# List backups
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/backups" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Restore a backup (DESTRUCTIVE - overwrites all data)
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/backups/99/restore" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Create a snapshot (overwrites existing snapshot)
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/snapshot" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Get current snapshot
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/snapshot" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

# Restore from snapshot
curl -X POST "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/snapshot/restore" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"
パフォーマンスの監視
# Get VM metrics (CPU, memory, disk, network, uptime)
curl -X GET "https://developers.hostinger.com/api/vps/v1/virtual-machines/12345/metrics?date_from=2025-05-01T00:00:00Z&date_to=2025-06-01T00:00:00Z" \
  -H "Authorization: Bearer $HOSTINGER_API_TOKEN"

API リファレンス

仮想マシン
MethodEndpointDescription
GET/api/vps/v1/virtual-machinesすべての VM を一覧表示
POST/api/vps/v1/virtual-machines新しい VM を購入
GET/api/vps/v1/virtual-machines/{id}VM の詳細を取得
POST/api/vps/v1/virtual-machines/{id}/setup購入した VM をセットアップ
POST/api/vps/v1/virtual-machines/{id}/startVM を起動
POST/api/vps/v1/virtual-machines/{id}/stopVM を停止
POST/api/vps/v1/virtual-machines/{id}/restartVM を再起動
POST/api/vps/v1/virtual-machines/{id}/recreateVM を再作成(破壊的操作)
PUT/api/vps/v1/virtual-machines/{id}/hostnameホスト名を設定
DELETE/api/vps/v1/virtual-machines/{id}/hostnameホスト名をリセット
PUT/api/vps/v1/virtual-machines/{id}/root-passwordroot パスワードを設定
PUT/api/vps/v1/virtual-machines/{id}/panel-passwordパネルのパスワードを設定
PUT/api/vps/v1/virtual-machines/{id}/nameserversネームサーバーを設定
GET/api/vps/v1/virtual-machines/{id}/metricsメトリクスを取得
GET/api/vps/v1/virtual-machines/{id}/public-keys割り当て済みの SSH キーを取得
GET/api/vps/v1/virtual-machines/{id}/actionsアクション履歴を取得
GET/api/vps/v1/virtual-machines/{id}/actions/{actionId}アクションの詳細を取得
Docker Manager(試験的)
MethodEndpointDescription
GET.../dockerプロジェクトの一覧を取得
POST.../dockerプロジェクトを作成
GET.../docker/{name}プロジェクトの内容を取得
GET.../docker/{name}/containers統計情報付きでコンテナを取得
GET.../docker/{name}/logsプロジェクトのログを取得(直近300件)
POST.../docker/{name}/startプロジェクトを起動
POST.../docker/{name}/stopプロジェクトを停止
POST.../docker/{name}/restartプロジェクトを再起動
POST.../docker/{name}/updateプロジェクトを更新
DELETE.../docker/{name}/downプロジェクトを削除(取り消し不可)
ファイアウォール
MethodEndpointDescription
GET/api/vps/v1/firewallファイアウォールの一覧を取得
POST/api/vps/v1/firewallファイアウォールを作成
GET/api/vps/v1/firewall/{id}ファイアウォールの詳細を取得
DELETE/api/vps/v1/firewall/{id}ファイアウォールを削除
POST/api/vps/v1/firewall/{id}/rulesルールを作成
PUT/api/vps/v1/firewall/{id}/rules/{ruleId}ルールを更新
DELETE/api/vps/v1/firewall/{id}/rules/{ruleId}ルールを削除
POST/api/vps/v1/firewall/{id}/activate/{vmId}VM で有効化
POST/api/vps/v1/firewall/{id}/deactivate/{vmId}VM で無効化
POST/api/vps/v1/firewall/{id}/sync/{vmId}ルールを VM に同期
SSH キー、テンプレート、スクリプト、バックアップ、スナップショット、復旧、PTR、マルウェア
MethodEndpointDescription
GET/POST/DELETE/api/vps/v1/public-keysSSH キーを管理
POST/api/vps/v1/public-keys/attach/{vmId}キーを VM に登録
GET/api/vps/v1/templatesOS テンプレートの一覧を取得
GET/api/vps/v1/templates/{id}テンプレートの詳細を取得
GET/POST/PUT/DELETE/api/vps/v1/post-install-scriptsスクリプトを管理
GET/api/vps/v1/data-centersデータセンターの一覧を取得
GET.../backupsバックアップの一覧を取得
POST.../backups/{id}/restoreバックアップを復元
GET/POST/DELETE.../snapshotスナップショットを管理
POST.../snapshot/restoreスナップショットを復元
POST/DELETE.../recovery復旧モードを開始/停止
POST/DELETE.../ptr/{ipId}PTR レコードを管理
GET/POST/DELETE.../monarxマルウェアスキャナーを管理

ベストプラクティス

セキュリティ
  • 可能な場合は、必ず SSH キーを登録し、パスワード認証を無効にしてください
  • ファイアウォールを設定してください。デフォルトではすべてのトラフィックが拒否されるため、必要なポートのみを追加してください
  • ルールを変更した後は、必ずファイアウォールを同期してください。変更は自動的には適用されません
  • VM ごとに使用できるファイアウォールは1つだけです。ルールは1つのファイアウォールにまとめてください
  • 本番サーバーには Monarx マルウェアスキャナーをインストールしてください
  • 強力なパスワード(12文字以上、大文字と小文字、数字を組み合わせ、漏えいしていないもの)を使用してください
バックアップと復旧
  • 破壊的な操作(再作成、大規模な変更)の前にスナップショットを作成してください
  • 注意:新しいスナップショットを作成すると、既存のスナップショットは上書きされます
  • バックアップを復元すると、VM 上のすべてのデータが上書きされます
  • ファイルシステムの修復には復旧モードを使用してください。元のディスクは /mnt にあります
Docker
  • Docker Manager のエンドポイントは試験的なものです。変更される可能性があります
  • GitHub URL は master ブランチの docker-compose.yaml に自動的に解決されます
  • 既存の名前を指定してプロジェクトをデプロイすると、そのプロジェクトは置き換えられます
  • コンテナの問題をデバッグするには、ログエンドポイントを使用してください
パフォーマンス
  • メトリクスを監視して、VPS プランのサイズを適切に調整してください
  • 独自のネームサーバーを設定するのは、設定方法を理解している場合のみにしてください。設定を誤ると DNS 解決に支障が出ます
インストール後のスクリプト
  • スクリプトの最大サイズ:48KB
  • スクリプトは /post_install として実行され、出力は /post_install.log に書き込まれます
  • まず本番環境以外の VM でスクリプトをテストしてください

トラブルシューティング

VM が起動しない
  • アクション履歴でエラーの詳細を確認してください
  • VM が復旧モードになっている可能性があります。まず復旧モードを停止してください
  • VM が initial 状態かどうかを確認してください。その場合は、まずセットアップを実行してください
VM に SSH 接続できない
  • SSH キーがアカウントに登録されているだけでなく、VM に割り当てられていることを確認します
  • ファイアウォールでポート 22 が許可されていることを確認します
  • ルールの変更後にファイアウォールが同期されていることを確認します
  • 診断のため、root パスワードでのログインを試します
ファイアウォールルールが反映されない
  • 変更後はルールの手動同期が必要です:POST .../firewall/{id}/sync/{vmId}
  • 1 台の VM で有効にできるファイアウォールは 1 つだけです
  • デフォルトのポリシーは DROP です。必要なポートに許可ルールが設定されていることを確認します
Docker プロジェクトが起動しない
  • プロジェクトのログを確認します:GET .../docker/{name}/logs
  • docker-compose.yaml が有効であることを確認します
  • 必要なポートがすでに使用されていないことを確認します
  • VM に十分なリソース(CPU、RAM、ディスク)があることを確認します
再作成時にパスワードが拒否される
  • パスワードは 12 文字以上で、大文字、小文字、数字を含める必要があります
  • パスワードは漏えいしたパスワードのデータベースと照合されます
  • まったく新しい、複雑なパスワードを試します
アクションが進行中のまま止まっている
  • アクションのステータスを確認します:GET .../actions/{actionId}
  • 一部の操作(再作成、バックアップの復元)には数分かかります
  • 長時間止まったままの場合は、サポートにお問い合わせください

関連項目

このスキルディレクトリでは、以下の詳しいガイドを利用できます。

  • deployment-workflow.md — Docker 化されたアプリ向けの SSH 優先デプロイワークフロー(7 ステップのプロセス、ロールバック戦略、検証レベル)
  • docker-patterns.md — Docker Compose のデプロイパターン(WordPress、Node+Redis+Postgres、Traefik SSL、ライフサイクル管理)
  • firewall-patterns.md — 一般的なファイアウォール設定(ウェブサーバー、データベース、Docker ホスト、メールサーバー、TypeScript/PHP の例)
  • terraform-examples.md — Hostinger Terraform Provider による Infrastructure as Code(VPS のプロビジョニング、SSH キー、ファイアウォール、インフラの完全な例)

参考資料

コメント