How it works
1
Register the app with the network
Each network’s setup page walks through its developer console, the permissions to ask for and the review, if any.
2
Add the redirect URI
For a sign-in network, the redirect URI is
FRONTEND_URL + /integrations/social/ + the ending in the table below, with no trailing slash unless the table shows one. Pinterest’s, for example, is https://postqueen.example.com/integrations/social/pinterest. A network that accepts only https redirects needs a different address on a plain http install; its page gives it.3
Set the variables and restart
Put the keys in your environment and recreate the app container so it reads them. Configuration reference lists every variable.
4
Connect the channel
Open Channels, choose Add Channel and pick the network.
Add Channel lists every network whether or not its keys are set. A network with missing or wrong keys fails on its own authorization page, not with a message in PostQueen. To take a network out of the list, use
HIDDEN_PROVIDERS.Networks that need a developer app
Two names break the pattern: Kick’s secret is
KICK_SECRET, and Dribbble’s variables spell it with three b characters.
Meta callback URLs
Meta calls PostQueen when someone removes one of your Meta apps from their account, or asks for their data to be deleted. Each Meta app takes one pair of callback URLs, onNEXT_PUBLIC_BACKEND_URL:
With the backend at
https://postqueen.example.com/api, the Facebook app’s first URL is https://postqueen.example.com/api/integrations/facebook/platform-deauthorize. A deauthorize request flags that person’s channels for reconnection, and a deletion request deletes the channels and their posts. Meta only calls a public https address, so a local install can skip them. Each Meta setup page shows where the URLs go in the app dashboard.
Networks that need no developer app
These eight read no variable, so they work as soon as PostQueen runs. The person connecting enters their own key or login in the connect form, or registers a Moltbook agent:
Things to know on your own server:
- Addresses on private networks are refused. The Bluesky service, the Lemmy instance, the WordPress site and the Listmonk server must resolve to public addresses, because outgoing requests are guarded against private and local ranges. Set
DISABLE_SSRF_PROTECTION=trueonly when one of them lives on your own network and you trust everyone who can connect a channel. LISTMONK_*does not configure the Listmonk channel. Those variables choose the newsletter that new sign-ups are added to. The channel takes its URL and API user in the connect form.- Hashnode cover images need public URLs. With local storage, a cover’s path is made absolute with
NEXT_PUBLIC_BACKEND_URLandNEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY, and Hashnode must be able to download it from there. - Nostr uses a fixed set of relays:
nos.lol,relay.damus.io,relay.snort.social,temp.iris.toandvault.iris.to. There is no variable to change them.
Related
- Configuration reference: every variable, grouped.
- Browser extension: building the extension that Skool needs.