Skip to main content
This runs the whole stack on your own computer, over plain HTTP on http://localhost:4007. Nothing is exposed to the internet, and one command removes it when you are done.
Not for a server. This setup turns on NOT_SECURED=true so the login cookie works without HTTPS. For an install other people use, follow Deploy to a server instead.

Before you start

Start PostQueen

1

Clone the Compose repository

Run every command on this page from this folder. It holds 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

The Compose file reads .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

The first run downloads the images, which takes a few minutes. Eight containers start: 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

On first boot PostQueen creates its database schema, then starts. Wait for this line, then press Ctrl+C to stop following the log (the container keeps running):
A few lines later the backend checks its settings. 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.
PostQueen opens the calendar, and a short tour of the app may start. There are no channels yet. That is a healthy fresh install.
The Temporal web UI is at http://localhost:8080 if you want to watch scheduled work. You do not need it.

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:
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. 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

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.
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.
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.
Almost always memory. Give Docker about 4 GB, then run docker compose up -d again.
Self-hosting troubleshooting covers more.

Stop or remove it

-v cannot be undone. Leave it off if you might want the test data back.

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.
Last modified on September 23, 2026