Skip to content

Развёртывание Potato на Hetzner, Vultr или Linode

Исследование с разметкой в Potato на виртуальной машине Hetzner, Vultr или Linode через potato deploy, примерно от €6 в месяц, с HTTPS и постоянным диском.

potato deploy up --provider hetzner размещает исследование с разметкой на виртуальной машине Hetzner Cloud примерно за €6 в месяц. Среди платных целей Potato на виртуальных машинах это самая низкая цена по умолчанию. --provider vultr и --provider linode делают то же самое на Vultr и на Linode от Akamai за $10 и $12 в месяц. Каждая из них представляет собой обычную виртуальную машину с диском, который переживает перезапуски, так что исследование работает на ней неделями без сервиса резервного копирования. Potato настраивает все три одинаково: брандмауэр, открывающий только порты 22, 80 и 443, Docker, веб-сервер Caddy с сертификатом Let's Encrypt и Potato в виде системной службы. Для этой страницы нужен Potato 2.10 или новее и конфигурация, которую вы уже запускали через potato start.

Как выбрать из трёх

Три провайдера различаются ценой, объёмом памяти, валютой оплаты и тем, где машина работает по умолчанию. В таблице указан размер, который Potato создаёт, если не передать --size, и месячная цена, которую он печатает:

--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 откройте раздел Security у проекта и создайте API-токен с правами на чтение и запись.
  • Vultr. Создайте API-ключ в панели Vultr и добавьте IP-адрес своей машины в список доступа ключа, иначе Vultr отклоняет все запросы.
  • Linode. Создайте персональный токен доступа с правами на чтение и запись для Linodes, Firewalls и Volumes.

Установите дополнение для развёртывания, экспортируйте токен и проверьте, что 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, может зарегистрироваться и размечать».) В краудсорсинговом исследовании открытая регистрация обычно нужна. Если разметчики известны поимённо, до развёртывания перечислите их в user_config.users с allow_all_users: false (управление паролями) или настройте вход через Google, GitHub или ваш институт (SSO и OAuth).

Проверка плана и развёртывание

Пробный запуск не требует аккаунта и ничего не создаёт. Он печатает каждый шаг, оценку стоимости и все рискованные настройки в конфигурации:

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

Вторая команда разворачивает задачу после того, как вы подтвердите план. В конце она печатает URL, адрес https:// на IP машины, и путь к файлу с ключом администратора, .potato/secrets.json рядом с конфигурацией. Ключ администратора открывает админ-панель по адресу /admin. Если после правки конфигурации снова запустить up, новая версия загрузится на ту же машину. Во время исследования potato deploy logs myproject/config.yaml -f следит за журналом сервера у всех трёх провайдеров.

--region и --size меняют расположение и машину, а --volume-gb добавляет отдельный диск для данных задачи. Машины cx Hetzner продаёт только в европейских локациях, поэтому для развёртывания в американских локациях, ash и hil, нужно передать тип cpx через --size. Если выбранный тип не продаётся в выбранной локации, Potato останавливается, ничего не создав, и перечисляет локации, где он продаётся.

Сертификаты без доменного имени

Без доменного имени Let's Encrypt выдаёт сертификат на IP-адрес машины. Он действует около шести дней и продлевается автоматически. potato deploy status сообщает о неудачном продлении, поэтому, если исследование идёт без присмотра, проверяйте его раз в несколько дней. Чтобы использовать свой домен, направьте DNS-запись A на IP машины и разверните задачу заново с --domain annotate.example.edu. В качестве контактного адреса аккаунт Let's Encrypt использует адрес из вашего git config user.email, а --acme-email задаёт другой.

Особенности провайдеров

Linode требует пароль root при создании машины, даже если переданы SSH-ключи. Potato генерирует его, сохраняет в .potato/secrets.json и отключает вход по паролю через SSH, так что войти с этим паролем нельзя. На Vultr отдельный диск из --volume-gb подключается после запуска машины, и настройка ждёт появления устройства, прежде чем отформатировать и смонтировать его.

Завершение исследования

Разметка лежит на диске машины, который удаляется вместе с машиной. Сначала выгрузите её на свой компьютер, проверьте и только потом удалите сервер:

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

pull записывает всё, что собрало развёртывание, в новый каталог potato-pull-<name>-<timestamp> и копирует базы данных собственной командой резервного копирования SQLite. destroy не запустится для развёртывания, которое ни разу не выгружали.

Что почитать дальше