# Postiz > [!abstract] What this note is > What Postiz is, and how to look after a self-hosted copy running in Docker on your own computer: signing in, posting, keeping it private, starting and stopping it, backups, upgrades and fixes. Written for someone who has never administered a server. ## What Postiz is Postiz is a social media scheduler. You write a post once, pick the networks and a time, and it publishes for you. It covers X, LinkedIn, Instagram, Facebook, Threads, TikTok, YouTube, Pinterest, Bluesky, Mastodon and about twenty more. It's open source. The company sells a hosted version, which started at $29 a month as of October 2026. **Self-hosting is free**: you run the same software yourself, with every feature, including the API that lets scripts and AI assistants schedule posts. ## It's a website you log into on localhost Postiz is a web app. You use it in your browser like any other site, but the site is served by your own computer. With the official Docker setup, the address is: | What | Address | |---|---| | **Postiz** (the one you use) | http://localhost:4007 | | Scheduler monitor (rarely needed) | http://127.0.0.1:8080 | `localhost` means "this computer." It only works while the computer is on and Postiz is running. ![](https://www.youtube.com/watch?v=A6CjAmJOWvA) *Postiz's official install tutorial, which shows the Docker setup and a first look at the app.* ## Keep it on your own computer > [!warning] Localhost in the address bar doesn't mean private > The official setup publishes Postiz with the line `"4007:5000"`. Docker reads that as "answer on **every** network this computer is on." A phone or laptop on the same Wi-Fi may be able to open Postiz at your computer's local address, such as `http://192.168.1.20:4007`. Before you lock sign-ups, anyone who reaches it can create an account. Once your channels are connected, an account there can post as you. Two changes close that off. 1. **Limit it to this computer.** In `docker-compose.yaml`, under the `postiz` service, change the port line to `"127.0.0.1:4007:5000"`, then run `docker compose up -d`. Postiz still works at localhost:4007, and other devices get "connection refused." 2. **Turn off sign-ups after you create your account.** Set `DISABLE_REGISTRATION` to `true` (see first-time setup). ```yaml ports: - "127.0.0.1:4007:5000" ``` The Temporal ports in the official file already use `127.0.0.1`, so they need no change. ## How it's put together Postiz runs inside **Docker Desktop**, the whale icon in the Windows tray or Mac menu bar. Docker runs small self-contained programs called containers. The official setup uses eight: | Container | Job | |---|---| | `postiz` | The app: the website, the API, and the worker that sends posts | | `postiz-postgres` | Database: your account, channels and posts | | `postiz-redis` | Short-term memory for the app | | `temporal` and four `temporal-*` helpers | The scheduler that fires posts at the right time | Your Postiz folder holds `docker-compose.yaml`, which describes the eight containers and their settings. Many setups move the passwords and API keys into a separate `.env` file beside it. **Never share or publish either file once it holds real keys.** Together the containers use about 2.2 GB of memory when idle. ## First-time setup 1. **Create your account.** Open http://localhost:4007 and sign up. With no email service configured, Postiz skips email confirmation. 2. **Lock sign-ups.** Set `DISABLE_REGISTRATION` to `true` in your settings and restart. 3. **Connect channels.** In Postiz, use **Add Channel**. - Bluesky, Mastodon, Telegram and similar connect right there with a login or app password. - X, LinkedIn, Facebook, Instagram, Threads, TikTok and YouTube first need a free **developer app** on that network. Put its keys in your settings, then restart. Each app asks for a callback URL in the form `http://localhost:4007/integrations/social/<network>`. Postiz has a guide for each network: https://docs.postiz.com/providers 4. **Use the API** (optional). Postiz **Settings** has a Public API key. The `postiz` command-line tool, scripts and AI assistants use it with the API address `http://localhost:4007/api`. ## Daily use 1. Open http://localhost:4007. The **Calendar** shows everything scheduled. 2. Click **Create Post**. Pick one or more channels, write the post, and add images or video. 3. Pick a date and time, then schedule it. Postiz stops you if a channel is missing something it needs, such as a YouTube title. 4. After the time passes, the post shows as published. **Preview** on the post opens the live version. **Posts only go out while your computer is awake and Docker Desktop is running.** Turn on "Start Docker Desktop when you sign in" in Docker's settings. The official setup restarts Postiz on its own once Docker is up. ## Administration ### Is it running? Open Docker Desktop and go to **Containers**. Your Postiz group, named after its folder, should show as running. Or just open http://localhost:4007: if the page loads, it's up. ### Start, stop, restart The easy way is Docker Desktop: **Containers**, then the play, stop or restart buttons on the Postiz group. From a terminal in your Postiz folder: ```powershell docker compose up -d # start, or apply changed settings docker compose down # stop; your data is kept docker compose ps # status of all eight containers ``` Run `docker compose up -d` after any settings change. ### Backups Your posts, channels and account live in the database. Back it up before every upgrade and every so often. From your Postiz folder: ```powershell mkdir backups -Force docker exec postiz-postgres pg_dump -U postiz-user -d postiz-db-local --format=custom -f /tmp/postiz.dump docker cp postiz-postgres:/tmp/postiz.dump backups/postiz.dump docker exec postiz-postgres rm /tmp/postiz.dump ``` This works in PowerShell. Avoid `pg_dump ... > file` there, because Windows PowerShell rewrites the output as text and corrupts the backup. Rename each backup with the date so they don't overwrite each other. The backup doesn't include uploaded images and videos, which live in a separate Docker volume. Keep a copy of your settings file too, since it holds the database password. ### Upgrading Postiz releases often: https://github.com/gitroomhq/postiz-app/releases 1. Make a backup. 2. If your setup pins a version, such as `postiz-app:v2.25.3`, change it to the new one. The official file uses `postiz-app:latest`, which needs no edit. 3. Run `docker compose pull`, then `docker compose up -d`. Read the release notes first. Big version jumps sometimes need changes to `docker-compose.yaml`. Pinning a version means an upgrade only happens when you choose. ### Forgot your password With no email service configured, password-reset emails can't be sent. You can set up an email provider using Postiz's configuration reference at https://docs.postiz.com, or reset the password directly in the database. ## When something goes wrong | Problem | Try | |---|---| | localhost:4007 won't load | Is Docker Desktop open? Start it, wait a minute, then run `docker compose up -d`. | | Errors or a blank screen right after starting | Wait two minutes, then refresh. The app starts its parts one at a time. | | A post didn't go out | Was the computer asleep then? Check the post in the Calendar for an error. Reconnect the channel if its login expired. | | A channel says it's disconnected | Networks expire logins. Reconnect it from the channel's menu. | | Anything else | `docker compose logs postiz --tail 100` shows the latest errors. | ## Moving it to a server later If missed posts become a problem, move Postiz to an always-on rented server with **4 GB of memory**. Smaller servers run out of memory. Budget hosts rent servers that size for a few dollars a month, but some well-known hosts charge nearly as much as hosted Postiz. Compare before you pick one. The whole folder copies over, settings included. On a server you also need a domain name with HTTPS, and each network's callback URL changes to that domain. Keep the `127.0.0.1` port line and put a web server such as Caddy in front to handle HTTPS. ## Related - Postiz documentation: https://docs.postiz.com - Connecting each network: https://docs.postiz.com/providers - Official Docker setup: https://github.com/gitroomhq/postiz-docker-compose - Source code and releases: https://github.com/gitroomhq/postiz-app --- *Drafted with AI assistance from a self-hosted install of Postiz v2.25.3 and Postiz's own documentation. The Docker, network and backup steps were tested on that install. The in-app steps come from the documentation and weren't clicked through by a person. Errors: see [[Corrections]].*