vps について
Hostinger VPS APIと関連する管理手順を扱うスキルです。VPSの運用担当者向けに、仮想マシンのライフサイクル操作のほか、Dockerのデプロイ、ネットワーク保護、復旧、監視を説明します。
主な機能
- 01VPSインスタンスの作成と管理
- 02Docker Composeプロジェクトのデプロイ
- 03ファイアウォールとSSHキーの設定
- 04バックアップ、スナップショット、復旧の管理
- 05パフォーマンス指標の確認
活用シーン
- 01VPSインスタンスのセットアップと運用
- 02Docker Composeワークロードのデプロイ
- 03VMの復旧またはデータの復元
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hostinger/ hostinger-agent-skills --skill vpsインストール後、Claude Code で/vpsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
deployment-workflow.mddocker-patterns.mdfirewall-patterns.mdterraform-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 リファレンス
仮想マシン
| Method | Endpoint | Description |
|---|---|---|
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}/start | VM を起動 |
POST | /api/vps/v1/virtual-machines/{id}/stop | VM を停止 |
POST | /api/vps/v1/virtual-machines/{id}/restart | VM を再起動 |
POST | /api/vps/v1/virtual-machines/{id}/recreate | VM を再作成(破壊的操作) |
PUT | /api/vps/v1/virtual-machines/{id}/hostname | ホスト名を設定 |
DELETE | /api/vps/v1/virtual-machines/{id}/hostname | ホスト名をリセット |
PUT | /api/vps/v1/virtual-machines/{id}/root-password | root パスワードを設定 |
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(試験的)
| Method | Endpoint | Description |
|---|---|---|
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 | プロジェクトを削除(取り消し不可) |
ファイアウォール
| Method | Endpoint | Description |
|---|---|---|
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、マルウェア
| Method | Endpoint | Description |
|---|---|---|
GET/POST/DELETE | /api/vps/v1/public-keys | SSH キーを管理 |
POST | /api/vps/v1/public-keys/attach/{vmId} | キーを VM に登録 |
GET | /api/vps/v1/templates | OS テンプレートの一覧を取得 |
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 キー、ファイアウォール、インフラの完全な例)