Hetzner、Vultr、LinodeへのPotatoのデプロイ
potato deployを使い、月額約€6からPotatoのアノテーション研究をHetzner、Vultr、Linodeの仮想マシンに載せます。HTTPSと、消えないディスクが使えます。
potato deploy up --provider hetznerは、アノテーション研究を月額約€6でHetzner Cloudの仮想マシンに載せます。これはPotatoの有料VMデプロイ先の中で最も安いデフォルト価格です。--provider vultrと--provider linodeは、同じことをVultrとAkamaiのLinodeで、それぞれ月額$10と$12で行います。どれも再起動しても残るディスクを持つ通常の仮想マシンなので、バックアップサービスなしで研究を数週間動かせます。Potatoは3つとも同じ方法でセットアップします。ポート22、80、443だけを開くファイアウォール、Docker、Let's Encryptの証明書を使うCaddyウェブサーバーを用意し、Potatoをシステムサービスとして動かします。このページの手順にはPotato 2.10以降と、すでにpotato startで実行したことのある設定が必要です。
3つから選ぶ
3つは、価格、メモリ、請求通貨、デフォルトでマシンが動く場所が異なります。次の表は、--sizeを指定しない場合にPotatoが作成するサイズを、Potatoが表示する月額料金とともに示したものです。
--provider hetzner | --provider vultr | --provider linode | |
|---|---|---|---|
| デフォルトのサイズ | cx23、2 vCPU、4 GB | vc2-1c-2gb、1 vCPU、2 GB | g6-standard-1、1 vCPU、2 GB |
| 月額料金 | 約€6(IPv4アドレス込み) | $10 | $12 |
| デフォルトの場所 | nbg1、ニュルンベルク | ewr、ニュージャージー | us-east、ニューアーク |
| トークンの環境変数 | HCLOUD_TOKEN | VULTR_API_KEY | LINODE_TOKEN |
価格あたりのメモリはHetznerが最も多く、Potatoはアイテムセットをメモリに保持するので、少ない予算で大きなコーパスを扱うならHetznerが向いています。Hetznerはドイツの企業がユーロで請求するため、所属機関の購買規則によっては認められません。VultrとLinodeは米ドルで請求します。
APIトークンを作成する
どのプロバイダーも、そのコンソールで作成して環境に設定するAPIトークンで認証します。
- Hetzner。 Hetzner Cloudのコンソールでプロジェクトのセキュリティのセクションを開き、読み取りと書き込みの権限を持つAPIトークンを作成します。
- Vultr。 VultrのダッシュボードでAPIキーを作成し、自分のマシンのIPアドレスをキーのアクセス制御リストに追加します。追加しないと、Vultrはすべてのリクエストを拒否します。
- Linode。 Linodes、Firewalls、Volumesへの読み取りと書き込みのアクセス権を持つパーソナルアクセストークンを作成します。
deployのextraをインストールし、トークンをexportして、Potatoがそれを使えることを確認します。
pip install 'potato-annotation[deploy]'
export HCLOUD_TOKEN=...
potato deploy providers --verifyサインインできる人を決める
potato deployはサインインの設定を変更せず、マシンのアドレスは公開されています。設定で誰でも登録できるようになっていれば、下のドライランが警告D003「Anyone who finds the URL can register and annotate.」(URLを見つけた人は誰でも登録してアノテーションできます)を表示します。クラウドソーシングの研究では、公開登録は通常は意図したとおりの設定です。名前の決まったアノテーターの場合は、デプロイする前に、allow_all_users: falseを設定してuser_config.usersの下に一覧を書くか(パスワード管理)、Google、GitHub、所属機関でサインインしてもらうようにしてください(SSOとOAuth認証)。
計画を確認してデプロイする
ドライランにはアカウントが必要なく、何も作成しません。すべての手順、費用の見積もり、設定のうち危険な項目を表示します。
potato deploy up myproject/config.yaml --provider hetzner --dry-run
potato deploy up myproject/config.yaml --provider hetzner2つ目のコマンドは、計画を確認した後にデプロイします。最後に、マシンのIP上のhttps://アドレスであるURLと、設定の隣にある管理者キーファイル.potato/secrets.jsonのパスが表示されます。管理者キーで/adminの管理者ダッシュボードを開けます。設定を編集した後にもう一度upを実行すると、新しいバージョンが同じマシンにアップロードされます。研究の間は、3つのどのプロバイダーでもpotato deploy logs myproject/config.yaml -fでサーバーのログを追い続けられます。
--regionと--sizeで場所とマシンを変更でき、--volume-gbでタスクのデータ用に別のディスクを追加できます。Hetznerはcxマシンをヨーロッパのロケーションでしか販売していないため、米国のロケーションであるashとhilにデプロイするには、--sizeでcpxタイプを指定する必要があります。選んだロケーションでそのタイプが販売されていない場合、Potatoは何も作成する前に停止し、そのタイプを販売しているロケーションを列挙します。
ドメイン名なしの証明書
ドメイン名がない場合、Let's EncryptはマシンのIPアドレスに対して証明書を発行します。有効期間は約6日で、自動で更新されます。更新に失敗するとpotato deploy statusが報告するので、研究を無人で運用する場合は数日おきに確認してください。自分のドメインを使うには、DNSのAレコードをマシンのIPに向け、--domain annotate.example.eduを付けて再デプロイします。Let's Encryptのアカウントはgit config user.emailのアドレスを連絡先として使い、--acme-emailで別のアドレスを設定できます。
プロバイダーごとの注意点
Linodeは、SSHキーを渡した場合でも、マシンの作成時にrootパスワードを要求します。Potatoはパスワードを生成して.potato/secrets.jsonに保存し、SSHのパスワードログインを無効にするので、そのパスワードでサインインすることはできません。Vultrでは、--volume-gbで追加した別のディスクはマシンの起動後に接続されるため、セットアップはデバイスが現れるのを待ってからフォーマットしてマウントします。
研究を終える
アノテーションはマシンのディスク上にあり、このディスクはマシンと一緒に削除されます。先に自分のマシンにpullして内容を確認し、それからサーバーを削除してください。
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamlpullはデプロイが収集したものをすべて新しいpotato-pull-<name>-<timestamp>ディレクトリに書き出し、データベースはSQLiteのバックアップコマンドでコピーします。destroyは一度もpullされていないデプロイでは実行されません。
関連
- Potatoをローカルまたはクラウドで実行する:DigitalOceanを含む、ほかのクラウドデプロイ先
- アノテーションサーバーのデプロイ:ホストの選び方
- VMプロバイダーのリファレンス