Перейти к содержимому

Нода дома

Хостом ноды может быть любая машина с Linux, до которой можно добраться по SSH: сервер дома или сервер у провайдера, для которого у casty нет скрипта. Тогда шаг 0 ничего не создаёт и только проверяет машину.

Окно терминала
./scripts/0-provision.sh --host you@192.168.1.20
./scripts/1-node.sh
./scripts/2-client.sh

Snapchain просит 16 ГБ RAM, 4 vCPU, 2 ТБ свободного диска и публичный IP. Шаг 0 и шаг 1 проверяют машину по SSH и останавливаются с кодом выхода 5, когда она не дотягивает:

  • не меньше 15 ГиБ RAM;
  • 1,8 ТиБ свободного места там, где будет лежать база данных. CASTY_MIN_FREE_GIB=1700 перед командой требует меньше, на ваш риск: когда база данных заполнит диск, нода остановится;
  • сервер Docker, с которым может общаться пользователь SSH, так что пользователь должен быть root или входить в группу docker;
  • часы, расходящиеся с вашими не больше чем на 60 секунд. Ноды отвергают сообщения с отметкой времени больше чем на 15 минут в будущем, поэтому держите на хосте работающий NTP.

Арендованный сервер получает Docker, chrony и повышенный лимит открытых файлов от cloud-init. На собственной машине это ваша забота.

casty входит с вашим ключом и никогда с паролем: он запускает SSH с BatchMode=yes. Ключ — ~/.ssh/id_ed25519, если не передан --ssh-pubkey, а приватная половина лежит рядом с публичной. Первое соединение принимает ключ хоста и записывает его; последующие соединения его проверяют.

Нода живёт в ~/snapchain пользователя SSH, а проверка свободного места измеряет файловую систему домашнего каталога этого пользователя. Чтобы держать базу данных на другом диске, смонтируйте его, сделайте ~/snapchain ссылкой на каталог на нём и задайте NODE_DATA_DIR в node.env равным точке монтирования, чтобы проверка измеряла этот диск.

casty не создаёт файрвол для машины, которую он не арендовал. Другие ноды достают до вашей по 3382/udp, единственному gossip-порту, который публикует compose-файл Snapchain, поэтому пробросьте его на роутере. Держите 3381 (HTTP API) и 3383 (gRPC) закрытыми для интернета: casty достаёт до них через SSH-туннель. Compose-файл Snapchain публикует statsd на 8125/udp и 8126/tcp на всех интерфейсах, если не указано иное; 1-node.sh задаёт STATSD_PUBLISH и STATSD_ADMIN_PUBLISH в своём .env равными loopback на любом хосте, где он работает, включая этот, так что statsd и Grafana отвечают только на 127.0.0.1.

0-provision.sh --destroy здесь неприменим, поскольку ничего не создавалось. ./scripts/1-node.sh down останавливает ноду; база данных остаётся в ~/snapchain, пока вы её не удалите.