Operational record for the FCAIC social scheduling tool. Installed 11 Aug 2026 by Esra. Status: running locally, account created, no channels linked yet. Parked 11 Aug 2026, resumes 12 Aug 17:00 CEST.
Postiz (gitroomhq/postiz-app, docs) is an open-source social media scheduler covering 30+ platforms. It was already referenced in the AI Circle Planning Hub spreadsheet on the Social Media Schedule tab, as two links with no setup behind them. This page records the actual install.
The motivation: FCAIC promo currently means Stef manually posting the same content to Flutter Community X, Bluesky, Mastodon, LinkedIn, plus Flutteristas Discord/Slack/Email, then reposting from a personal account. The spreadsheet already models one column per network with per-network character budgets, which maps cleanly onto what Postiz does.
| Item | State |
|---|---|
| Hosting | Self-hosted, Docker Compose, on Esra's Mac at ~/postiz |
| Stack | 8 containers, running and healthy. DISABLE_REGISTRATION=true since 11 Aug |
| UI | http://localhost:4007 |
| Postiz account | Created 11 Aug 2026. Org esratech, login [email protected]. Verified in Postgres: 1 user, 0 integrations |
Bluesky @esratech.bsky.social |
Not linked |
Mastodon @[email protected] |
Not linked (MASTODON_URL configured, client id/secret blank) |
X @esratech |
Not linked |
| Not linked | |
| Flutter Community / FCAIC shared accounts | Blocked, see Open questions |
| Path | Purpose |
|---|---|
~/postiz/docker-compose.yaml |
Upstream, git-tracked, deliberately untouched so git pull keeps working |
~/postiz/docker-compose.override.yaml |
Local config, reads from .env by variable substitution |
~/postiz/.env |
Secrets, gitignored, chmod 600 |
~/postiz/SETUP.md |
First-time setup and per-platform linking steps |
~/postiz/README-esra.md |
Day-to-day operation and troubleshooting |
The override-file approach is deliberate: the Postiz docs warn against snapshotting their compose file because services and env vars change between versions. Config lives in the override, upstream stays pullable.
Every Postiz provider doc gives the callback as localhost:4200 (dev) or localhost:5000 (docker). Both are wrong for this install. Compose maps host 4007 to container 5000, and MAIN_URL is http://localhost:4007, so all callbacks must be:
<http://localhost:4007/integrations/social/><provider>
Providers: x, mastodon, linkedin, linkedin-page. Bluesky needs no callback.
docker compose up -d after editing .env, never restartrestart reuses the existing container with its old environment, so a newly added API key silently does not exist inside the container. Verify with docker exec postiz sh -c 'echo $VARNAME'.
error from registry: denied means a stale credential, not a missing imageThe Postiz image pull failed this way during setup. Cause was a stale ghcr.io entry in the Docker Desktop keychain: Docker kept presenting it rather than falling back to anonymous, even though the image is public (manifest confirmed returning HTTP 200 anonymously). Resolved with docker logout ghcr.io. If private GHCR images are ever needed, re-login with a fresh PAT.
Separately: host port 5000 is held by macOS Control Center (AirPlay Receiver). Harmless, since 5000 is only used inside the container. Do not "fix" the port mapping.