http://localhost:4007. Nothing is exposed to the internet, and one command removes it when you are done.
Before you start
Start PostQueen
1
Clone the Compose repository
docker-compose.yaml and the dynamicconfig folder that Temporal reads when it starts, so clone it rather than copying the YAML alone.2
Write the .env file
.env from this folder. JWT_SECRET signs sessions, ENCRYPTION_KEY encrypts the credentials PostQueen stores, and NOT_SECURED=true lets the login cookie work over HTTP. Everything else keeps the Compose file’s defaults, which point PostQueen at http://localhost:4007.3
Start the stack
postqueen, its PostgreSQL and Redis, and five for Temporal (the server, its PostgreSQL and Elasticsearch, the admin tools and the web UI).4
Wait for the backend
Ctrl+C to stop following the log (the container keeps running):Configuration check completed without any issues means the basics are right. A Configuration issue line names the variable to fix.5
Create the first account
Open http://localhost:4007 and sign up. No mail server is configured, so the account is active at once.The Temporal web UI is at http://localhost:8080 if you want to watch scheduled work. You do not need it.
PostQueen opens the calendar, and a short tour of the app may start. There are no channels yet. That is a healthy fresh install.
Connect a channel
Eight networks need nothing from you: Bluesky, DEV, Hashnode, Lemmy, Listmonk, Nostr and WordPress take a key or a login in the connect form, and Moltbook registers an agent. Open Channels in the left rail, choose Add Channel and pick one. The other networks need a developer app that you register with the network. Put its keys in.env, then:
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:
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.
Many networks refuse an http://localhost redirect address, and some fetch your media from its URL, which a laptop cannot serve to the internet. For those, use a domain and HTTPS: Deploy to a server. Channel developer apps lists each network’s variables and setup page.
If something goes wrong
localhost:4007 does not load
localhost:4007 does not load
Give the first boot a minute or two: the schema is created before the web app answers.
docker compose ps shows each container’s state, and docker compose logs -f postqueen shows where the start is.Signing in sends me back to the login page
Signing in sends me back to the login page
The browser dropped the
Secure login cookie over HTTP. Check that .env has NOT_SECURED=true, then recreate the postqueen container with the command above.A port is already in use
A port is already in use
Another program uses 4007, 7233 or 8080. Stop it, or change the left-hand number of that port in
docker-compose.yaml. With "4017:5000", PostQueen answers on http://localhost:4017, and MAIN_URL, FRONTEND_URL and NEXT_PUBLIC_BACKEND_URL in .env must use the same port.Containers restart or get killed
Containers restart or get killed
Almost always memory. Give Docker about 4 GB, then run
docker compose up -d again.Stop or remove it
Next steps
Deploy to a server
Your own domain and HTTPS, for an install other people use.
Channel developer apps
Every network’s variables, redirect path and setup page.
Docker Compose
What the Compose file starts, and where each setting lives.
Create a post
Write once for several channels, then schedule it.