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

Команды

Команды двух видов: скрипты в scripts/, которые настраивают хост, ноду и клиент, и casty, сам клиент. Каждый скрипт и каждая команда принимают --help и печатают полный список своих опций.

Нужны fid тестового аккаунта Farcaster и кошелёк с его custody-адресом; для новой ноды ещё токен Hetzner, ключи AWS или Linux-хост с 16 ГБ RAM и 2 ТБ свободного диска.

У аккаунта, созданного в приложении Farcaster, этот адрес хранится в самом приложении, а не в браузерном кошельке: откройте его фразу восстановления в приложении на телефоне и один раз импортируйте её в MetaMask или Rabby, либо вместо casty web введите её в ./bin/casty init в своём терминале.

Окно терминала
# a new node of your own
git clone https://github.com/castyfun/casty.git && cd casty
export HCLOUD_TOKEN=<token> # Hetzner; or AWS credentials, or 0-provision.sh --host user@ip
./scripts/0-provision.sh # (0) compute: a server, a 2 TB volume, a firewall
./scripts/1-node.sh # (1) a Snapchain read node, synced (hours), and a tunnel
./scripts/2-client.sh --fid <your fid> # (2) a client, ./bin/casty, reading from your node
./bin/casty web # open the link; under "you": "add a key with your wallet"
./bin/casty feed # read; ./bin/casty cast "hello" writes
./scripts/0-provision.sh --destroy # when you are done: server, volume and firewall go

Или без своей ноды, на уже работающей:

Окно терминала
# casty on a node that already runs
git clone https://github.com/castyfun/casty.git && cd casty
./scripts/2-client.sh --node https://snap.farcaster.xyz:3381 --fid <your fid>
./bin/casty web # open the link; under "you": "add a key with your wallet"
./bin/casty feed # read; ./bin/casty cast "hello" writes
Команда Что делает
./scripts/deploy.sh Выполняет шаги 0, 1 и 2 по порядку, а с --domain или --tailscale ставит страницу на хост. Можно безопасно запускать повторно: продолжает с того места, где запуск остановился.
./scripts/0-provision.sh Создаёт сервер, том данных на 2 ТБ и файрвол у Hetzner или AWS, смотря чьи учётные данные заданы, и пишет node.env. Спрашивает, прежде чем создать что-либо платное.
./scripts/0-provision.sh --host user@ip Использует машину, которая у вас уже есть: ничего не создаёт, проверяет RAM, диск, Docker и часы по SSH.
./scripts/0-provision.sh --dry-run Печатает каждый вызов провайдера вместо того, чтобы его выполнить.
./scripts/0-provision.sh --https Ещё и открывает порты 80 и 443 для страницы на хосте.
./scripts/0-provision.sh --destroy Удаляет сервер, затем его том, затем его файрвол.
./scripts/1-node.sh Проверяет хост, ставит Snapchain в ~/snapchain, запускает его, ждёт синхронизации и открывает туннель.
./scripts/1-node.sh status [--wait] Насколько отстаёт каждый шард; --wait опрашивает, пока нода не догонит сеть.
./scripts/1-node.sh tunnel [--stop] Пробрасывает локальные порты 3381 и 3383 к ноде по SSH, так что casty достаёт до неё по 127.0.0.1:3381.
./scripts/1-node.sh logs [casty] Следит за логами ноды или логами casty на хосте.
./scripts/1-node.sh upgrade Скачивает последний релиз Snapchain или --release <version> и перезапускает ноду.
./scripts/1-node.sh serve --domain <name> Запускает casty serve на хосте за Caddy с сертификатом Let’s Encrypt; --tailscale вместо этого отдаёт его в вашем tailnet.
./scripts/1-node.sh down Останавливает ноду и casty на хосте, если он там запущен.
./scripts/2-client.sh Скачивает casty для вашей платформы, сверяет его с контрольными суммами релиза, запускает casty doctor, затем casty init.
./scripts/2-client.sh --fid <fid> Настраивает без seed-фразы; затем вы добавляете ключ своим кошельком в casty web.
./scripts/2-client.sh --from-source Собирает casty здесь с Node 22.12 или новее вместо скачивания.

Коды выхода скриптов: 0 готово, 1 не синхронизирована или нода не ответила, 2 неверные аргументы, 3 не хватает необходимого, 4 сбой провайдера, SSH или загрузки, 5 хост не дотягивает.

Опция Что делает
--node <url> HTTP API ноды. По умолчанию http://127.0.0.1:3381, туннель из шага 1. casty init запоминает переданный адрес для следующих команд.
--json Печатает результат как JSON, для скриптов.
--quiet Печатает только результат, без заметок о ходе работы.
--config <dir> Где casty хранит свой конфиг и ключи. По умолчанию ~/.config/casty.
Команда Что делает
casty doctor Проверяет, что нода отвечает, насколько она отстаёт, ваши часы относительно часов ноды и что настроено локально.
casty init --fid <fid> Настраивает ваш аккаунт без seed-фразы и без ключа; затем casty web добавляет ключ вашим кошельком.
casty init Добавляет ключ приложения без газа по вашей seed-фразе, введённой в скрытом поле и нигде не сохраняемой. --ttl 90d для самого долгого срока жизни, --address-index <n> для другого аккаунта той же фразы.
casty whoami Ваш fid, имя пользователя, custody-адрес, активный ключ приложения и хранилище.
casty key list Ключи, зарегистрированные на ваш fid, с отметкой тех, что хранит этот casty.
casty key revoke --self Удаляет ключ этого casty, подписав удаление самим ключом.
casty key revoke <key> Удаляет любой ключ вашего fid; спрашивает seed-фразу.
Команда Что делает
casty feed Новейшие касты ваши и аккаунтов, на которые вы подписаны, с номерами. --limit, --since 24h, --no-replies, --channel /name, --only-app и --exclude-app сужают её; --fids 2,@alice читает другие аккаунты.
casty mentions Касты, в которых упоминают вас, и ответы на ваши касты, новые сначала.
casty thread <cast> Каст, то, на что он отвечает, и ответы на него.
casty clients [--fid <fid>] Ключи приложений аккаунта и какое приложение запросило каждый.
casty storage [--fid <fid>] Storage units и насколько заполнено каждое хранилище сообщений.
casty node status Только синхронизация ноды; код выхода 1, пока она не догонит сеть.
Команда Что делает
casty cast "<text>" Публикует каст: до 320 байт или 1024 как длинный каст. --reply <cast>, --channel /name, --embed <url> (не больше двух раз); @names становятся упоминаниями.
casty reply <cast> "<text>" Отвечает на каст.
casty delete <cast> Удаляет один из ваших кастов.
casty like <cast> / casty unlike <cast> Ставит лайк касту или забирает его.
casty recast <cast> / casty unrecast <cast> Рекастит каст вашим подписчикам или отменяет рекаст.
casty follow <fid or @name> / casty unfollow Подписывается на аккаунт или отписывается.

Каждая запись идёт на вашу ноду, которая передаёт её в сеть; casty ждёт, пока не сможет прочитать сообщение обратно, и сообщает, если не может.

Команда Что делает
casty web Лента, треды, упоминания, профили и поле для нового каста на http://127.0.0.1:3390, связывание по ссылке, которую она печатает. --listen 0.0.0.0:3390 пускает телефон в той же сети; --read-only оставляет ключ запертым.
casty serve Та же страница поверх индекса ленты, с push-уведомлениями, для хоста ноды за HTTPS. Её ставит 1-node.sh serve.

Везде, где команда принимает <cast>, подходит любой из вариантов:

  • его номер в последнем списке, показанном casty feed, mentions, thread или страницей: casty like 2;
  • <fid>:<0x hash>: casty like 2000000001:0x1a2b...;
  • его ссылка на farcaster.xyz.
Код Значение
0 Готово.
1 Не синхронизирована (casty node status) или другой сбой.
2 Неверные аргументы.
3 Нода отвергла сообщение, или оно не слилось.
4 Нода недоступна.
5 Проблема с конфигом, хранилищем ключей или seed-фразой.

Устранение неполадок перечисляет сообщения за каждым кодом и что делать.