Нода дома
Хостом ноды может быть любая машина с 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, пока вы её не удалите.