A lightweight, self-hosted social media scheduler
Post to X, Mastodon, Bluesky, Threads, and LinkedIn from your own server.
One binary or container. Your data stays on your machine.
Documentation
·
Quickstart
·
Releases
Why OpenPost
- Self-hosted: your data stays on your server.
- Single binary or container: no Redis, no Postgres, no external queue.
- SQLite-backed scheduling: queued posts survive restarts.
- Multi-platform publishing: X, Mastodon, Bluesky, Threads, and LinkedIn.
- Encrypted tokens: OAuth tokens are encrypted at rest with AES-256-GCM.
- Security-first: Account-level MFA with TOTP and Passkeys support.
- Thread support: publish multi-post threads in sequence.
Quickstart
cp backend/.env.example .env
docker compose up -d
Set fresh values for OPENPOST_JWT_SECRET and OPENPOST_ENCRYPTION_KEY before using OpenPost. Both secrets are required and must be at least 32 characters long. The first account created on an instance becomes the instance admin automatically. For the full install path, reverse proxy setup, provider OAuth guides, and operations docs, use the docs site.
- X
- Mastodon
- Bluesky
- Threads
- LinkedIn
Documentation
Contributing
Use the development docs in the documentation site, the repo guidance in AGENTS.md, and the existing code patterns in frontend/ and backend/.
Security
Report security issues through SECURITY.md.
License
MIT