Appearance
Operations Guide
This guide is for self-hosters and operators running a production Postmill instance. It covers deployment, configuration, backup, and ongoing maintenance.
What's involved in running Postmill
Postmill is a multi-service application that schedules and publishes social media and chat posts across 45+ channels. Running your own instance means operating:
- The Postmill application container (Node.js backend + Next.js frontend combined)
- A PostgreSQL 17 database (application data)
- A Redis 7 cache and message broker
- Inngest for durable background jobs (dev server locally, Cloud in production)
- Optional object storage for uploaded media (local disk, S3, R2, B2, IDrive e2, or another S3-compatible service)
The operational surface is moderate: most state lives in Postgres, background work is durable through Inngest, and media can live on local disk or cloud object storage.
Stack at a glance
| Component | Technology | Role |
|---|---|---|
| Application | Node.js >=24.0.0, Next.js 16, NestJS 11 | API + frontend server |
| Primary database | PostgreSQL 17 | Users, orgs, posts, integrations, config |
| Cache / queue | Redis 7 | Session cache, throttle store, analytics cache |
| Background jobs | Inngest | Analytics, comments, publish, token refresh |
| Media storage | Local disk or S3-compatible storage | Uploaded images, video, audio |
| Monitoring (opt) | Sentry + Spotlight | Error tracking, debug proxy |
Guide pages
| Page | Description |
|---|---|
| Requirements | Hardware, software, and network prerequisites |
| Docker Deployment | Running the full stack with Docker Compose |
| Configuration | Every environment variable, organised by category |
| Platform Channel Apps | Operator-level OAuth apps that give every org one-click channel connect |
| Platform Comms Apps | Operator-level chat apps (Slack, Telegram, Discord, Matrix, LINE) for the agent and notifications |
| Inngest & Cron | Background job inventory and scheduling |
| Video Rendering | Local media render queue and optional Podman workers |
| Storage Setup | Local and cloud storage providers, quotas, per-org routing |
| Backup & Retention | What to back up, how to restore, automated data retention |
| Scaling & Deployment | Production image, horizontal scaling, health probes, graceful shutdown, OpenTelemetry |
| Upgrading | Clean upgrade path and building from source |
| Schema Rollback | Prisma migrate rollback playbook — forward-only down migrations, half-applied recovery, expand/contract |
| Security | Helmet, CSRF, SSRF, encryption, JWT, Sentry scrubbing, throttling |
| OAuth / SSO | Generic OIDC provider setup (Authentik, Keycloak, etc.) |
| Subscriptions & payment providers | Payment provider config (Stripe and others), plans, metered caps, add-ons, and self-host defaults |
Verified against v1.3.0