没有任何应用能封禁你。

你自己的 Farcaster 客户端和 Snapchain 节点,三条命令搞定。

一切都运行在你自己控制的服务器上,不依赖任何人的 API 密钥。今晚敲十分钟命令,明天下午就同步完成。

观看 59 秒演示 ↓ · 用三条命令运行你自己的 ↓

测试节点,2026 年 10 月已同步
9.14 亿条消息
336 万个账号
<22 小时完成同步

本页为机器辅助翻译,英文版为准。欢迎在 GitHub 提交修正。

真实的 cast,读自演示节点

演示客户端在手机上的截图,2026 年 10 月。每条 cast、回复和头像都来自节点,而不是 API。

townhall 中 Dan Romero 的主页
@dwr 的主页:帖子,以及从节点读取的关注数。
Vitalik Buterin 带两张表格图片和回复的 cast
@vitalik.eth:图片与回复。
Phil 宣布关闭一个应用,以及回复
@phil 关闭了一个应用。应用来来去去,账号和 cast 留在网络上。

已在自己服务器上运行的人

他们每个人都用下面的三条命令搭起了自己的节点和客户端,通过它们发了 cast,并在 Farcaster 上写了体验。

59 秒看完全部

竖屏,有声音。三条命令做了什么、一夜同步,以及运行在你自己节点上的客户端。 下载视频 · English

三条命令

  1. 0

    准备服务器

    在你的电脑上约 3 分钟
    curl -fsSL https://raw.githubusercontent.com/townhall-fc/townhall/main/install/provision.sh | HCLOUD_TOKEN=your_token bash
    $env:HCLOUD_TOKEN="your_token"; irm https://raw.githubusercontent.com/townhall-fc/townhall/main/install/provision.ps1 | iex

    在 Hetzner 上创建一台服务器并挂载 2 TB 数据卷(Hetzner 限制新账户时为 1 TB),并打印它的 IP。你需要一个 Hetzner API 令牌。

  2. 1

    启动节点

    在服务器上约 2 分钟,之后通宵同步
    ssh root@YOUR_IP 'curl -fsSL https://raw.githubusercontent.com/townhall-fc/townhall/main/install/node.sh | bash'

    运行 Snapchain 官方的只读节点(read node)。它会下载整个网络(约 445 GB),然后自行追上最新区块。

  3. 2

    打开你的客户端

    在服务器上约 3 分钟
    ssh root@YOUR_IP 'curl -fsSL https://raw.githubusercontent.com/townhall-fc/townhall/main/install/client.sh | bash'

    从本仓库源码构建客户端,并通过 HTTPS 提供服务。打开它打印出的地址:马上就能阅读;等客户端显示节点已同步后,再连接账号发帖。

今晚10 分钟命令
快照 · 约 11 小时追块 · 约 10 小时
明天同步完成,从你的节点发帖

数据来自我们 2026 年 10 月的测试节点。已经有服务器(Ubuntu 22.04/24.04、4 vCPU、16 GB 内存、1 TB 磁盘,开放 TCP 22、80、443 和 UDP 3382 端口)?跳过第 0 步。测试完了?一条命令删除全部资源。 Windows 上请用 PowerShell(不要用 cmd)运行这三条命令。

你会得到什么

Your browsersigns with your app key Your server Client (Caddy, HTTPS)static app + /v1 proxy Snapchain read nodefull copy of Farcaster, :3381 Snapchain networkvalidators make blocks OptimismFIDs (read only) your node relays casts,syncs blocks back the client reads your FID; no transaction

实测数据

来自演示节点:Hetzner cx43(8 vCPU、16 GB),位于法尔肯施泰因,1 TB 卷,2026 年 10 月,Snapchain 0.14.3。

实测
动手时间约 10 分钟
下载并解压快照约 11 小时。快照约 5,700 个分块,压缩后约 445 GB。
快照之后追块约 10 小时。节点重放快照之后产生的区块,追赶速度比链的增长快约每分钟 290 个区块。
从 node.sh 到同步完成不到 22 小时。晚上开始,第二天下午就能用。
磁盘解压时峰值约 800 GB。同步后约 560 GB:来自 336 万个 FID 的 9.14 亿条消息。
添加应用密钥一条 KEY_ADD,约 10 秒后生效。无需 gas。

开始之前

你需要原因怎么做
一台 4 vCPU、16 GB 内存、1 TB 磁盘的服务器Snapchain 文档写的是 2 TB。目前 1 TB 足够同步:演示节点峰值约 800 GB(见实测数据)。如果要长期运行好几个月,用 2 TB,因为网络在持续增长。第 0 步会在 Hetzner 上创建一台。注册账号、新建项目,然后在 Security → API tokens → Generate 生成一个 Read & Write 令牌。
一个有存储空间的 Farcaster 测试账号,以及它的助记词仅发帖时需要。助记词只签署一条添加应用密钥的 KEY_ADD 消息,无需 gas。只读模式只需要用户名。在 Farcaster 应用的设置里:Advanced → Recovery phrase。在你的节点上查看存储:/v1/storageLimitsByFid?fid=…。
一个带 curl、jq、ssh 的终端用来运行这三条命令。macOS:brew install jq。Ubuntu:sudo apt install jq。Windows 10/11:使用 PowerShell,无需安装(自带 ssh;第 0 步有单独的 PowerShell 版本)。

动手时间约 10 分钟。之后节点会自行同步,大约需要一天中的大部分时间。

第 0 步 · 准备服务器

curl -fsSL https://raw.githubusercontent.com/townhall-fc/townhall/main/install/provision.sh | HCLOUD_TOKEN=your_token bash
$env:HCLOUD_TOKEN="your_token"; irm https://raw.githubusercontent.com/townhall-fc/townhall/main/install/provision.ps1 | iex

它依次做这些事:

  1. 使用你的 SSH 密钥(~/.ssh/id_ed25519.pub,Windows 上是 C:\Users\你\.ssh\id_ed25519.pub;没有就创建)并上传到 Hetzner,只有你能登录。
  2. 在该机房选择至少 4 vCPU、16 GB 内存的最便宜机型。
  3. 创建防火墙,只开放 SSH(22)、客户端用的 HTTP/HTTPS(80、443),以及 Snapchain 节点之间通信用的 UDP 3382。
  4. 创建 Ubuntu 24.04 服务器并挂载一块数据卷:账户允许就用 2 TB,否则用允许的最大值。1 TB 就够(见实测数据)。
  5. 等到能 SSH 登录后,打印接下来两条已填好 IP 的命令。

在 Windows 上,PowerShell 版本执行相同的步骤;创建 SSH 密钥时可能需要按两次回车。第 1、2 步在 PowerShell 中可直接运行。

可选参数:LOCATION=nbg1、SERVER_TYPE=…、VOLUME_GB=…(写在 bash 前面;Windows 上先设置,例如 $env:LOCATION="nbg1")。服务器存在期间按时计费,见费用与清理。

第 1 步 · 运行 Snapchain 只读节点

ssh root@YOUR_IP 'curl -fsSL https://raw.githubusercontent.com/townhall-fc/townhall/main/install/node.sh | bash'
  1. 安装 Docker。
  2. 找到剩余空间最大的磁盘(你的数据卷),把节点放在那里。
  3. 从最新的 Snapchain 发布版下载官方的 docker-compose.mainnet.yml 和 validators.toml,不做修改。该文件本身就配置为只读节点(read_node = true)。
  4. 启动节点。它先下载网络快照,然后从对等节点重放最近的区块,直到追上。
  5. 启动一个小的快照守护程序。首次启动时,节点会把下载的每个快照文件一直保留到最后,这就是文档要求 2 TB 的原因。守护程序在节点用完每个文件后立即删除它,因此演示节点首次同步的峰值约 800 GB,而不是约 1.5 TB。同步完成后它会自行退出。
  6. 安装 townhall-status,一条命令显示每个分片落后多少。
$ ssh root@YOUR_IP townhall-status
shard 0: height 48485756  blocks behind: 1
shard 1: height 49161526  blocks behind: 0
shard 2: height 48996914  blocks behind: 1
In sync when every 'blocks behind' is in the single digits.

这是演示节点同步完成后的输出。追块期间,“blocks behind” 会不断减少;演示节点从几万降到个位数用了大约 10 小时。

节点在 3381 端口提供 Snapchain 的 HTTP API。在服务器上试试:curl -s localhost:3381/v1/castsByFid?fid=1 | jq '.messages[0].data.castAddBody.text'

第 2 步 · 创建你的客户端

ssh root@YOUR_IP 'curl -fsSL https://raw.githubusercontent.com/townhall-fc/townhall/main/install/client.sh | bash'
  1. 克隆本仓库,在一次性的 Node 容器里构建客户端。
  2. 启动 Caddy,为 YOUR-IP.sslip.io 申请 HTTPS 证书(一个指向你 IP 的免费通配 DNS 名;设置 DOMAIN=your.domain 可使用你自己的域名)。
  3. 提供客户端,并把 /v1/* 转发到你的节点。浏览器只和你的服务器通信:同源、无 CORS、无第三方 API。
  4. 启动一个小服务,为分享的 cast 生成链接预览:把 /c/<fid>/<hash> 这样的链接贴到 Farcaster 或 Telegram 时,会显示作者和内容。

随时重新运行同一条命令即可更新客户端。

使用客户端

只读

输入你的用户名。客户端在你的节点上把它解析成 FID,加载你关注的人,用他们最新的 cast 组成信息流。不签名,也不向任何地方发送任何东西。

连接你的账号(用于发帖)

  1. 粘贴助记词并点击 Connect。页面从助记词推导出你的托管地址(custody address),并从 Optimism 上的 IdRegistry 合约读取你的 FID。此时什么都不会发送。
  2. 页面为这个客户端生成密钥。页面生成一对新的 Ed25519 密钥(你的应用密钥),并从你的节点读取当前密钥 nonce(/v1/signersByFid → currentUserNonce)。然后你的托管账户签署两条 EIP-712 消息:SignedKeyRequest(哪个应用请求该密钥,这里是你自己的 FID)和 KeyAdd(密钥本身、可签署的消息类型、有效期、下一个 nonce)。
  3. 它作为一条消息发送到你的节点。两个签名都放在一条 KEY_ADD 消息里,而这条消息的外层由新密钥本身签名,以证明你持有它。你的节点校验后像转发 cast 一样转发它。大约十秒后密钥生效。页面清除助记词,只在本浏览器中保留应用密钥。

发帖、回复、点赞、转发、关注

每个操作都会构建一条协议消息,在浏览器里用你的应用密钥签名,再把原始字节提交给你的节点。像 @alice 这样的提及会在你的节点上解析,并作为协议级提及保存。

图片和视频,存在你自己的服务器上

点文本框下方的图片按钮,可以附上最多两个图片或视频(JPEG、PNG、GIF、WebP 最大 10 MB;MP4、MOV、WebM 最大 100 MB)。Farcaster 应用把媒体上传到它自己的主机;自托管客户端没有这样的主机,所以用你的服务器。文件通过 /api/upload 上传,存放在 /opt/townhall/media,并从你的域名的 /media/<hash>.<ext> 提供。cast 把这个 URL 作为 embed 携带,和任何链接一样,所以每个 Farcaster 客户端都能显示。

只有持有你的节点认定为有效的 app key 的人才能上传:浏览器用这把密钥签名文件的哈希,服务器检查签名并向你的节点确认这把密钥。如果只允许自己上传,用 UPLOAD_FIDS=<你的 fid> 重新运行第 2 步。空间上限为 20 GB(MEDIA_QUOTA_GB)。代价是:关掉服务器,你旧 cast 里的媒体就无法加载。

频道

频道 cast 就是一条普通 cast,它的 parentUrl 是频道的 URL,例如 https://farcaster.xyz/~/channel/dev。这一部分属于协议,所以你的节点像存储任何 cast 一样存储并转发它。频道列表(名称、URL、谁可以发帖)在 Farcaster 客户端 API 里,不在协议里,所以你的服务器在那里查一次频道 URL 并缓存。不需要任何 key。

点文本框下方的 /,输入频道名即可发到该频道。点任何 cast 上的 /频道 标签,或搜索 /dev,即可阅读频道:所有带这个 parentUrl 的 cast,直接来自你的节点。在仅限成员的频道里,Farcaster 应用可能会在频道信息流中隐藏非成员的 cast;这条 cast 仍然存在于网络和你的节点中。

按应用包含或排除 cast

每条 cast 都由某个应用密钥签名,而每个应用密钥都记录了请求它的应用(该应用自己的 FID)。客户端在你的节点上为每位作者查询这一信息,显示为 via farcaster、via own key 等。点击信息流上方的应用名即可隐藏或显示它的 cast。你的选择会保存在本浏览器中。

Live:你的节点眼中的网络

Live 显示网络接受的每一条消息,在你的节点收到后一两秒内出现:cast、点赞、关注、资料修改,以及有人超出存储上限时被修剪掉的消息。它读取你节点的事件日志(/v1/events,每个分片一份)和区块高度(/v1/info)。这里没有任何数据来自别人的服务器。

查看一条 cast 的底层消息

点击任意 cast 下方的 { },即可看到它背后的协议消息:BLAKE3 哈希、签名它的 Ed25519 密钥、请求该密钥的应用,以及指向你节点上原始 JSON 的链接。你的节点在检查完这三项之后才会保存这条 cast。

搜索

输入用户名或 FID。你的节点通过 /v1/userNameProofByName 解析名字;关注者和关注数来自它的关系存储。

只看投票者

在 Farcaster 网络投票中接受社会契约的人,持有 Base 上的 VOTE NFT,其 token id 就是他们的 FID(合约)。客户端直接向 Base 查询 ownerOf(fid),并把这些作者标记为 voted。打开 Voters only,信息流只显示参与投票的人。拒绝不会铸造任何东西,所以链上只能看到“同意”。

来自互关的回复

Replies 汇总对你最近 cast 的回复和提及你的 cast,全部从你的节点读取。默认只显示互关的人,也就是你关注且也关注你的人。想看全部时切换到 everyone。

在手机上

打开你的客户端地址,选择添加到主屏幕(Safari:分享菜单;Chrome:⋮ 菜单)。它会像应用一样全屏打开,依然只和你的节点通信。

可选:不用助记词登录

三条命令得到的客户端用你的助记词添加它的密钥。这是最直接的方式,但助记词能控制整个账号,所以请用测试账号。如果别人也会用你的 townhall,或者你根本不想粘贴助记词,可以加上委托登录:用户在 Farcaster 应用里批准 townhall,就像登录任何 Farcaster 应用一样,客户端无需看到助记词就能拿到密钥。

ssh -t root@YOUR_IP 'curl -fsSL https://raw.githubusercontent.com/townhall-fc/townhall/main/install/signin.sh | IMPORT=1 bash'

核心概念,用大白话说

FID
你的 Farcaster ID,一个数字。它存放在 Optimism 上的 IdRegistry 合约里。用户名、密钥和每条消息都指向它。
托管地址与助记词
拥有你 FID 的以太坊账户。助记词就是它的私钥。谁拥有助记词,谁就拥有这个账号,所以这里只在本地使用一次,用来添加应用密钥。
应用密钥(signer)
为你的消息签名的 Ed25519 密钥。你可以有很多把,每个应用一把。本客户端添加的是免 gas 密钥:一条由托管地址授权的 KEY_ADD 消息,无需交易。它有三条规则。权限范围:密钥列出它可以签署的消息类型(这里是 cast、反应、关注、资料),而且永远不能添加或移除其他密钥。滑动有效期:闲置一段时间后过期(最长 90 天,本客户端申请最长期限),每签一条消息都会重新计时。Nonce:每条 KEY_ADD 都带一个比该 FID 上一次更大的数字,旧的授权无法被重放。
旧方式依然可用:在 Optimism 上调用 KeyGateway.add,需要交易和 gas。这类链上密钥没有权限范围和有效期。你的节点在 /v1/signersByFid 同时列出两种。
消息
你做的每件事都是一条小小的签名消息:CAST_ADD、CAST_REMOVE、REACTION_ADD(点赞或转发)、LINK_ADD(关注)、USER_DATA_ADD(资料)。每条都有 BLAKE3 哈希和 Ed25519 签名,任何节点都能在不信任任何人的情况下校验它。
Snapchain
对这些消息进行排序和存储的网络。验证者运行共识并出块。消息按 FID 分到不同分片;分片 0 为其他分片排序。
只读节点与验证者
只读节点跟随链,校验每个区块上验证者的签名,存储完整状态并提供 API。它不投票,也不保留内存池(mempool)。任何人都能运行;验证者是一组固定的运营者。
存储
存储是租用的,在 Optimism 上链上支付(StorageRegistry 合约),按单位计算。每个单位一段时间后到期,所以是续租,而不是一次买断。每个单位对每类消息(cast、反应、关注、资料)分别设上限。超出上限不会报错:该类中你最旧的消息会被修剪以腾出空间。这适合时间线,但也意味着非常活跃的账号可能失去旧的关注或 cast。租约到期后,网络会拒绝你的新消息。Snapchain 就是这样控制状态规模、在不按条收费的情况下防止垃圾信息的。
在你的节点上查看:/v1/storageLimitsByFid?fid=YOUR_FID 列出每类存储的 limit 和 used,以及你的存储单位和到期时间。租约和密钥事件也是你节点索引的链上事件:/v1/onChainEventsByFid?fid=YOUR_FID&event_type=EVENT_TYPE_STORAGE_RENT。
用户名(fname)
通过签名证明映射到 FID 的可读名称。你的节点响应 /v1/userNameProofByName?name=…。
客户端
应用只是替你保管应用密钥、并从某个节点读取数据的程序。Farcaster 官方应用是其中之一,这是另一个。它们看到的都是同一个网络。

一条 cast 的旅程

  1. 你点击 Cast。浏览器构建一条包含你的 FID、正文和提及的 CAST_ADD 消息,计算哈希,用你的应用密钥签名,并编码为 protobuf。
  2. 它被提交到你服务器上的 /v1/submitMessage,Caddy 再转发给你的只读节点。
  3. 你的节点校验它:FID 存在、密钥对该 FID 有效、哈希和签名正确、你有存储空间。任何一项不对都会立即返回错误。
  4. 只读节点不保留内存池,所以它通过 gossip(mempool 主题)把有效消息转发给验证者。
  5. 某个验证者把它打包进区块。你的节点同步这个区块,cast 出现在你的信息流里,通常只需几秒。
只读节点和验证者都接受 submitMessage。验证者把消息放进自己的内存池;只读节点不保留内存池,它校验消息、在 mempool 主题上广播,然后什么都不保留。所以返回 200 表示“有效且已转发”,而不是“已经上链”:如果在高负载下广播丢失,请重新提交。要确认已被打包,从你的节点读回这条消息。密钥消息(KEY_ADD、KEY_REMOVE)路由到分片 0;cast、反应和关注根据你的 FID 分配到某个消息分片。来源:Validators vs. read nodes。

安全模型

“没有任何应用能封禁你”是什么意思,边界在哪里

你的账号属于你的托管密钥,而不属于任何应用。即使某个应用隐藏你或关停,你的 cast、关注和资料依然在网络上,这个客户端会通过你自己的节点读取和发布它们。它改变不了的是:区块由一小组固定的 Snapchain 验证者产生,理论上他们可以拒绝你的消息;而且网络只接受已支付存储租金的 FID 的消息。你的节点让你独立于应用和 API 提供商,而不是独立于协议本身的规则。

搭建过程中踩过的坑

下面每一条都是在搭建演示节点时真实遇到的。现在脚本都已处理,但了解原因很有帮助。

常见问题

我的助记词会被发到哪里?
哪里都不会。它在你的浏览器里推导出 custody 地址、签署密钥授权,然后从页面清除。经过网络的只有:你的 custody 地址(不是助记词),发给公共 Optimism RPC 用来查询 FID;以及一条发给你节点的 KEY_ADD 消息,里面是新的公钥和签名,也就是全网都能看到的数据。可以在 client/src/keys.ts 里核对。
那安全吗?
助记词不会离开浏览器,但有两个真实风险。提供页面的人可以改它的代码:在你自己的节点上就是你自己,从这个开源仓库构建;在别人的 townhall 上就是对方。另外,被入侵的电脑或恶意浏览器扩展能读到你输入的任何内容。所以建议用测试账号,或者通过 Farcaster 应用登录,那样完全不用输入助记词。
应该用哪个账号?
在客户端里用一个有存储空间的备用账号:你粘贴的就是它的助记词。如果你在帮别人测试这个教程,请用你平时使用的账号发布测试报告,让大家知道是谁运行的。
如果有人拿到了应用密钥,能做什么?
以该账号签署 cast、反应、关注和资料修改,直到你撤销它(设置 → Revoke),或者 90 天不用后自动过期。它不能转移你的 FID、更改 custody 地址或添加其他密钥。
每个人都需要自己的服务器吗?
不需要。一个节点可以服务整个社区:大家打开 townhall 登录即可,什么都不用运行。三条命令是给想要自己副本的人:社区、开发者、任何不应依赖单一运营者的人。正因为谁都可以这样做,才没有哪个应用能决定谁的声音被听到。
Snapchain 文档要求 2 TB,为什么 1 TB 就够?
网络本身大约 560 GB。多出来的空间是给首次同步用的:节点会把下载的每个快照文件留到最后;快照守护在每个文件用完后立即删除,所以演示节点的峰值约 800 GB。如果要长期运行,请随网络增长扩容磁盘。
可以在 Windows 上运行吗?
可以。使用 PowerShell:第 0 步和清理命令有 Windows 版本(命令上方的 Windows 标签),第 1、2 步可直接运行。
要花多少钱,怎么停止计费?
演示节点最初 12 小时花费约 2 美元。服务器和磁盘存在期间 Hetzner 按小时计费;清理命令会把两者都删除。

故障排查

你看到这样做
客户端显示 “node unreachable”节点还在下载快照。townhall-status 和节点日志会显示进度。
某个分片落后约 5000 万个区块,高度很低快照下载中途中断(某个分块反复失败),该分片正从第 0 个区块开始同步,需要数周。townhall-status 会提示这种情况。在服务器上运行 townhall-resync:它会清除节点数据并重新下载网络,大约一天。从这个版本起,快照守护程序会自动重新开始中断的下载。
“blocks behind” 不断增加网络已经升级,而你的节点还在运行旧版 Snapchain。重新运行第 1 步:它会拉取最新版本并重启节点,之后节点会自己追上。
“blocks behind” 几个小时都不降检查防火墙是否开放了 UDP 3382,以及磁盘是否已满(df -h)。
客户端地址无法通过 HTTPS 打开申请证书需要开放 80 和 443 端口。如果 sslip.io 被限流,把你自己的域名指向这个 IP,并用 DOMAIN=your.domain 重新运行第 2 步。
“nonce is not greater than stored nonce”期间你的 FID 又添加或移除了别的密钥。再点一次 Connect,它会重新读取 nonce。
添加密钥后 cast 被拒你的 FID 可能没有存储。在你的节点上查看 /v1/storageLimitsByFid?fid=YOUR_FID。
发帖时 “invalid signer”你的节点还没处理到这个密钥事件,通常是因为还在同步。等同步完成。
第 0 步报 “volumes size limit exceeded”新的 Hetzner 账号有卷总量上限。第 0 步会挂载允许的最大卷并提示你。以后要扩容,在 Hetzner 控制台(Limits)申请提额后调整卷大小。
Windows 提示无法识别 curl 或 bash这是 cmd。请打开 PowerShell,使用第 0 步中的 Windows 命令。之后第 1、2 步可直接运行。
提示 “Please install 'jq' first”(或 ssh)提示末尾会给出适合你系统的安装命令,例如 brew install jq 或 sudo apt install -y jq。运行后再执行一次第 0 步。
第 0 步报 “error during placement”该机房暂时没有这个机型。第 0 步会自动尝试其他欧洲机房。
消息因存储被拒你的 FID 没有剩余存储单位。在任意 Farcaster 应用里租用存储。

费用与清理

Hetzner Cloud 按小时计费,服务器和卷分别计费。演示节点(服务器加 1 TB 卷)前 12 小时约 2 美元,所以完整测试一次只需几美元。运行一个月大约一百多美元;请以 Hetzner 控制台的当前价格为准。如果要长期运行,带大硬盘的独立服务器更便宜。添加应用密钥不花钱。

要停止计费,需要删除服务器和卷。下面这条命令会在确认后完成删除:

curl -fsSL https://raw.githubusercontent.com/townhall-fc/townhall/main/install/destroy.sh | HCLOUD_TOKEN=your_token bash
$env:HCLOUD_TOKEN="your_token"; irm https://raw.githubusercontent.com/townhall-fc/townhall/main/install/destroy.ps1 | iex

你的 Farcaster 账号不受影响。如果还想撤销应用密钥,请在删除服务器之前在客户端的 Settings → Revoke 中操作。

在帮别人测试这个教程?

谢谢你。有用的测试报告是诚实的,包括失败的地方。请:

  1. 用你的主账号发布报告;在客户端里使用备用账号。
  2. 在客户端里使用一个有存储的 Farcaster 测试账号,不要用对你重要的账号。
  3. 在一台干净的机器上运行这三条命令,并记录时间。
  4. 等客户端显示节点已同步后:发一条 cast、关注一个人、点一个赞,并用筛选隐藏某个应用的 cast。
  5. 也在手机上打开看看。
  6. 运行清理命令(destroy.sh,Windows 上是 destroy.ps1),停止计费。
  7. 用你的主账号在 Farcaster 上发帖说明过程,好的坏的都写,以及花了多长时间。

永远不要把你的助记词或 Hetzner 令牌发给任何人,包括作者本人。如果你的服务器费用或时间得到了报销,请在帖子里注明。