Skip to main content
Posted has separate API, worker and UI images with one version. Choose a release from the GitHub Releases page that includes posted-images.json. That file records immutable image references and both supported platforms, Linux AMD64 and ARM64. Use the version in that release for every component.

Prerequisites

Use Docker Engine with Compose v2, PostgreSQL 17, separate HTTPS UI and API origins, and a reverse proxy with valid certificates. S3-compatible storage enables media and SMTP enables account emails. Social publishing requires approved provider applications. See configuration before starting the installation. Download docker-compose.yml, posted.env.example and, if needed, docker-compose.postgres.yml from the same release. Copy posted.env.example to .env. Set POSTED_VERSION, the public origins and a stable secret generated with:
Keep .env private and retain POSTED_SECRET with the database backup. Changing it prevents encrypted provider tokens and sessions from being read.

Start the containers

Set DATABASE_URL to your PostgreSQL connection URI. The database must be reachable from the containers; localhost inside a container refers to that container.
The API applies transactional, checksum-checked migrations before readiness. The worker waits for the API. UI and API listen on loopback ports 4342 and 4341; route them through your HTTPS proxy. Keep the worker and PostgreSQL private.

Create the team

Read the installation setup secret in the API’s initial startup log:
Open the UI, enter that secret and create the first administrator. That administrator is verified automatically. Never share the log’s setup secret in a support issue. Verify all three containers are healthy:

Build from source

A source checkout uses public npm dependencies with no registry token. Use Node 24.16.0 and pnpm 11.5.3 for development. The source-build overlay enables the Dockerfile’s targets:
Add the PostgreSQL overlay if needed. Every source-built image must use the checkout’s package version. See development for disposable test services and upgrades before replacing an installation.