Skip to main content
On a self-hosted PostQueen the Neynar app is yours. PostQueen reaches Farcaster through Neynar, so the keys are Neynar’s, plus a Farcaster account that represents your instance. A channel connects through a Neynar managed signer. PostQueen asks Neynar for a signer, signs the key request with your app account, and shows the approval link as a QR code. The person connecting scans it, or opens the link on their phone, and approves in the Farcaster app. There is no OAuth callback, so there is no redirect URI to register.

Before you start

NEYNAR_APP_MNEMONIC controls the app account. Use a Farcaster account created for your instance rather than a personal one, keep the phrase only in the server’s environment, and never commit it.

Get the keys

1

Create a Neynar app

Sign in to the Neynar developer portal and create an app. Copy its API key, and its client ID if you want the Farcaster sign-in option.
2

Pick the app account

Choose the Farcaster account that will represent your instance, ideally one made for it. You need two things from it:
  • Its FID. Look the username up with Neynar’s user lookup, or read it from the account’s profile.
  • Its recovery phrase. In the Farcaster app, open Settings, then Advanced, then Reveal recovery phrase.

Set the variables

Add the keys to your environment:
Recreate the app container so it reads the new values. A plain docker restart or docker compose restart keeps the old container and its old environment. In the folder that holds docker-compose.yaml, recreate only the postqueen service:
The database, Redis and Temporal keep running. Avoid docker compose down for a settings change: on a host that runs other Compose services in the same project, it stops them too. On Kubernetes, see Kubernetes with Helm.

Connect a Farcaster account

1

Open Add Channel

Open Channels, choose Add Channel, then Farcaster. A window opens with a QR code and a Copy Farcaster link button.
2

Approve on the phone

Scan the code with the phone that has the Farcaster app, or open the copied link there, and approve PostQueen. Without sponsorship, the Farcaster app may ask for a small fee first.
3

Check that it connected

The window shows “Waiting for your approval…” and checks every 2 seconds. It closes by itself once the approval arrives, and the account appears in the Channels list. It gives up after 10 minutes, or at once if the request is revoked.
The two public routes behind this window are rate limited per client address: 30 new approval requests and 1,000 status checks an hour. The address is the last X-Forwarded-For entry, the one your reverse proxy appends, or the connection’s own address without a proxy. Behind a CDN that last entry is the CDN’s address, so everyone arriving through it shares one limit.

Troubleshooting

One of the two variables is empty. Set both and recreate the container.
Neynar did not create the signer, and the message is Neynar’s answer. Check NEYNAR_SECRET_KEY, and check that NEYNAR_APP_FID is the FID of the account whose recovery phrase is in NEYNAR_APP_MNEMONIC.
The request for a signer did not get an answer from PostQueen, or more than 30 came from one address within an hour. Behind a CDN, see the note above.
Nobody approved within 10 minutes. Open Add Channel again for a new code.
The request was rejected in the Farcaster app. Start again and approve it.
Last modified on September 23, 2026