# RunFarcaster: read and post on Farcaster from your own server > RunFarcaster sets up a Farcaster node and app of your own, with no gatekeepers in between. Rent a Hetzner server. Start a Snapchain read node on it with the official bootstrap. Open a small web app served from the same server over HTTPS. You need no API keys. On a Hetzner cax31 with a 1000 GB volume, our run took 14 h 06 m from renting the server to synced, cost $2.31 at an estimated $0.164 an hour, and ended with a 558 GB database. With SERVER_TYPE="" the script rents the first 16 GB type for sale in LOCATION; if a type isn't available to rent there, it lists what is, cheapest first. cpx42 has not been tested; with IPv4 and the volume it costs $159.29 a month at list prices. A gasless KEY_ADD and a cast have been tested on mainnet (2026-10-18); likes, recasts and follows only against a mock node. Full run (https://sudharshanx.github.io/runfarcaster/quickstart/): the 3 commands below, on your own server. Vouchers do this one. Key facts: - An app key is added with a KEY_ADD message that the custody address signs (EIP-712). It needs no transaction on OP Mainnet. Mainnet has accepted it since engine version V16 on 2026-05-07 (https://snapchain.farcaster.xyz/guides/writing-messages; snapchain src/version/version.rs). - A read node takes submitMessage and publishes the message to validators. It keeps no mempool, so HTTP 200 means sent on, not in a block. Ask for the message back, and resend it if it does not show up (https://snapchain.farcaster.xyz/node-types). - Ports: 3381/tcp HTTP API and 3383/tcp gRPC (closed to the internet by default), 3382/udp gossip (open). Keep Grafana's 3000 closed. - Sign the KEY_ADD in the app running on localhost on your own computer. Never paste a recovery phrase into an AI assistant. Never print HCLOUD_TOKEN. The 3 steps of the Full run (from the repo folder on your computer): ```bash MY_IP=$(curl -4 -s https://ifconfig.me) export NAME=snapchain-read-node IP=$(SSH_KEY=my-key SERVER_TYPE="" VOLUME_GB=1000 WATCHDOG=0 SSH_SOURCE_CIDRS="$MY_IP/32" ./provision.sh) ssh root@$IP "SNAPCHAIN_AGREE_NO_REWARDS=yes MIN_FREE_GB=900 bash -s" < node.sh ./deploy-client.sh "$IP" # when done: CONFIRM="$NAME" ./teardown.sh ``` Use an empty Hetzner project. In a new terminal: export NAME=snapchain-read-node, then IP=$(hcloud server ip "$NAME") WATCHDOG=0 keeps the server until you delete it. For a trial run, leave it out and add MAX_USD=8 EXPECTED_HOURS=24: watchdog.sh then deletes everything after 24 h. SERVER_TYPE="" picks the first type for sale from cx43, cax31, cpx42, ccx23. If none is for sale, provision.sh lists the types available in LOCATION; set SERVER_TYPE and/or LOCATION. Repo (MIT): https://github.com/sudharshanx/runfarcaster Full text: https://sudharshanx.github.io/runfarcaster/llms-full.txt Guided install (step by step, for AI assistants): https://sudharshanx.github.io/runfarcaster/agent.md Agent skill: npx skills add sudharshanx/runfarcaster --skill runfarcaster (files in skills/runfarcaster) ## Pages - [Home](https://sudharshanx.github.io/runfarcaster/): RunFarcaster sets up a Farcaster node and app of your own, with no gatekeepers in between. - [Full run: the 3 commands](https://sudharshanx.github.io/runfarcaster/quickstart/): Rent a Hetzner server, start your own node and open the app with 3 commands. - [How Farcaster works](https://sudharshanx.github.io/runfarcaster/how-farcaster-works/): Check each Farcaster idea with a command against your own node. - [Server and node](https://sudharshanx.github.io/runfarcaster/server-and-node/): Set up Hetzner for the scripts; the tested node costs at most $102.29 a month. - [Post with an app key](https://sudharshanx.github.io/runfarcaster/first-cast/): Cast from a test account through your own node with a gasless app key. - [Set up with AI](https://sudharshanx.github.io/runfarcaster/ai-assistant/): Copy a prompt that lets a coding assistant run the 3 steps or debug errors. - [Build on your node](https://sudharshanx.github.io/runfarcaster/build-on-your-node/): Call your node over HTTP from your own code, with no paid data API. - [Recipes](https://sudharshanx.github.io/runfarcaster/recipes/): Copy curl and JavaScript for each task, with a real response from a mainnet node. - [Reuse the client code](https://sudharshanx.github.io/runfarcaster/client-code/): Copy the app's MIT licensed node code into your own app or bot. - [Scripts and settings](https://sudharshanx.github.io/runfarcaster/reference/): Every script, setting, port and endpoint, with defaults. - [Glossary](https://sudharshanx.github.io/runfarcaster/glossary/): Short definitions of the Farcaster and Snapchain terms this site uses. - [Fix a problem](https://sudharshanx.github.io/runfarcaster/fix/): Match the error you see to its cause and fix. - [Proof: what we ran](https://sudharshanx.github.io/runfarcaster/proof/): We synced a mainnet node in 14 h 06 m, posted a cast through it, and deleted the server 70 h 04 m after renting it. - [Docs issues](https://sudharshanx.github.io/runfarcaster/docs-issues/): Where the official Farcaster and Snapchain docs are out of date or wrong. - [How AI was used](https://sudharshanx.github.io/runfarcaster/how-ai-was-used/): Which parts were written or checked with AI, and which by a person.