Развёртывание 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 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 откройте раздел Security у проекта и создайте API-токен с правами на чтение и запись.
- Vultr. Создайте API-ключ в панели Vultr и добавьте IP-адрес своей машины в список доступа ключа, иначе Vultr отклоняет все запросы.
- Linode. Создайте персональный токен доступа с правами на чтение и запись для Linodes, Firewalls и Volumes.
Установите дополнение для развёртывания, экспортируйте токен и проверьте, что 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, может зарегистрироваться и размечать».) В краудсорсинговом исследовании открытая регистрация обычно нужна. Если разметчики известны поимённо, до развёртывания перечислите их в user_config.users с allow_all_users: false (управление паролями) или настройте вход через Google, GitHub или ваш институт (SSO и OAuth).
Проверка плана и развёртывание
Пробный запуск не требует аккаунта и ничего не создаёт. Он печатает каждый шаг, оценку стоимости и все рискованные настройки в конфигурации:
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 подключается после запуска машины, и настройка ждёт появления устройства, прежде чем отформатировать и смонтировать его.
Завершение исследования
Разметка лежит на диске машины, который удаляется вместе с машиной. Сначала выгрузите её на свой компьютер, проверьте и только потом удалите сервер:
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamlpull записывает всё, что собрало развёртывание, в новый каталог potato-pull-<name>-<timestamp> и копирует базы данных собственной командой резервного копирования SQLite. destroy не запустится для развёртывания, которое ни разу не выгружали.
Что почитать дальше
- Запуск Potato локально или в облаке: другие облачные цели, включая DigitalOcean
- Развёртывание сервера разметки: как выбрать хостинг
- Справка по провайдерам виртуальных машин