Команды
Команды двух видов: скрипты в 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 owngit clone https://github.com/castyfun/casty.git && cd castyexport 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 runsgit 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-фразой. |
Устранение неполадок перечисляет сообщения за каждым кодом и что делать.