Skip to content

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 GBvc2-1c-2gb、1 vCPU、2 GBg6-standard-1、1 vCPU、2 GB
月額料金約€6(IPv4アドレス込み)$10$12
デフォルトの場所nbg1、ニュルンベルクewr、ニュージャージーus-east、ニューアーク
トークンの環境変数HCLOUD_TOKENVULTR_API_KEYLINODE_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がそれを使えることを確認します。

bash
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認証)。

計画を確認してデプロイする

ドライランにはアカウントが必要なく、何も作成しません。すべての手順、費用の見積もり、設定のうち危険な項目を表示します。

bash
potato deploy up myproject/config.yaml --provider hetzner --dry-run
potato deploy up myproject/config.yaml --provider hetzner

2つ目のコマンドは、計画を確認した後にデプロイします。最後に、マシンの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して内容を確認し、それからサーバーを削除してください。

bash
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yaml

pullはデプロイが収集したものをすべて新しいpotato-pull-<name>-<timestamp>ディレクトリに書き出し、データベースはSQLiteのバックアップコマンドでコピーします。destroyは一度もpullされていないデプロイでは実行されません。

関連