# DO - Droplets

{{#include ../../../banners/hacktricks-training.md}}

## 基本情報

DigitalOceanにおいて、「ドロップレット」はv**irtual private server (VPS)**であり、ウェブサイトやアプリケーションをホストするために使用できます。ドロップレットは、特定のCPU、メモリ、ストレージの量を含む**事前構成されたコンピューティングリソースのパッケージ**であり、DigitalOceanのクラウドインフラストラクチャ上で迅速かつ簡単に展開できます。

**一般的なOS**や、すでに稼働している**アプリケーション**（WordPress、cPanel、Laravelなど）を選択することができ、または**自分のイメージ**をアップロードして使用することもできます。

ドロップレットは**ユーザーデータスクリプト**をサポートしています。

<details>

<summary>スナップショットとバックアップの違い</summary>

DigitalOceanにおいて、スナップショットはドロップレットのディスクの時点コピーです。スナップショットが取得された時点でのドロップレットのディスクの状態をキャプチャし、オペレーティングシステム、インストールされたアプリケーション、ディスク上のすべてのファイルとデータを含みます。

スナップショットは、元のドロップレットと同じ構成の新しいドロップレットを作成するためや、スナップショットが取得された時点の状態にドロップレットを復元するために使用できます。スナップショットはDigitalOceanのオブジェクトストレージサービスに保存され、増分であるため、前回のスナップショット以降の変更のみが保存されます。これにより、効率的に使用でき、コスト効果も高くなります。

一方、バックアップはドロップレットの完全なコピーであり、オペレーティングシステム、インストールされたアプリケーション、ファイル、データ、ドロップレットの設定とメタデータを含みます。バックアップは通常、定期的に実行され、特定の時点でのドロップレットの全体の状態をキャプチャします。

スナップショットとは異なり、バックアップは圧縮され暗号化された形式で保存され、DigitalOceanのインフラストラクチャからリモートの場所に転送されて安全に保管されます。これにより、バックアップは災害復旧に理想的であり、データ損失やその他の重大なイベントが発生した場合に復元できるドロップレットの完全なコピーを提供します。

要約すると、スナップショットはドロップレットのディスクの時点コピーであり、バックアップはドロップレットの完全なコピーで、設定とメタデータを含みます。スナップショットはDigitalOceanのオブジェクトストレージサービスに保存され、バックアップはDigitalOceanのインフラストラクチャからリモートの場所に転送されます。スナップショットとバックアップの両方はドロップレットを復元するために使用できますが、スナップショットは使用と保存がより効率的であり、バックアップは災害復旧のためのより包括的なバックアップソリューションを提供します。

</details>

### 認証

認証のために、ユーザー名と**パスワード**（ドロップレット作成時に定義されたパスワード）を通じて**SSHを有効にする**ことが可能です。または、**アップロードされたSSHキーの1つ以上を選択**することもできます。

### ファイアウォール

> [!CAUTION]
> デフォルトでは**ドロップレットはファイアウォールなしで作成されます**（AWSやGCPなどの他のクラウドとは異なります）。したがって、ドロップレット（VM）のポートをDOに保護させたい場合は、**作成して接続する**必要があります。

詳細は以下を参照してください：

{{#ref}}
do-networking.md
{{#endref}}

### 列挙
```bash
# VMs
doctl compute droplet list # IPs will appear here
doctl compute droplet backups <droplet-id>
doctl compute droplet snapshots <droplet-id>
doctl compute droplet neighbors <droplet-id> # Get network neighbors
doctl compute droplet actions <droplet-id> # Get droplet actions

# VM interesting actions
doctl compute droplet-action password-reset <droplet-id> # New password is emailed to the user
doctl compute droplet-action enable-ipv6 <droplet-id>
doctl compute droplet-action power-on <droplet-id>
doctl compute droplet-action disable-backups <droplet-id>

# SSH
doctl compute ssh <droplet-id> # This will just run SSH
doctl compute ssh-key list
doctl compute ssh-key import <key-name> --public-key-file /path/to/key.pub

# Certificates
doctl compute certificate list

# Snapshots
doctl compute snapshot list
```
> [!CAUTION]
> **Dropletsにはメタデータエンドポイントがありますが、DOにはIAMやAWSのロール、GCPのサービスアカウントのようなものはありません。**

### RCE

コンソールにアクセスすると、**ドロップレット内でシェルを取得する**ことが可能で、URLにアクセスします: **`https://cloud.digitalocean.com/droplets/<droplet-id>/terminal/ui/`**

ホスト内でコマンドを実行するために**リカバリーコンソール**を起動することも可能で、**`https://cloud.digitalocean.com/droplets/<droplet-id>/console`**にアクセスします（ただし、この場合はルートパスワードを知っている必要があります）。

{{#include ../../../banners/hacktricks-training.md}}
