Skip to main content

Check service health

From the repository directory:
The API health response should report database, Redis, and Temporal as ok. The worker response should report running and healthy workers. A healthy frontend does not prove scheduled publishing works.

Read logs

For a scheduled post, inspect the main Temporal task queue and the orchestrator logs. Do not add Node-only imports to Temporal workflow code; a broken workflow bundle can stop workers while the dashboard remains available.

Monitoring and alerting

  • /api/health reports redis, database, and temporal status and returns 503 when any of them is degraded (not a green 200).
  • /health/workers inside the container reports per-queue worker state and 503s when a worker is not polling - the main queue carries every publish workflow.
  • The optional Temporal UI at 127.0.0.1:8080 (SSH tunnel) shows workflows and the main task queue.
  • Inspect the queue with the Temporal CLI:
    0 pollers means the workers are down and scheduled posts will pile up in QUEUE without errors.
  • Point an external uptime monitor at /api/health (HTTP mode) and /health/workers if reachable. On self-hosted instances set up log rotation and a disk/restart alert.

A post missed its scheduled time

  1. Check /api/health.
  2. Check /health/workers from inside the application container.
  3. Confirm the post is not in ERROR state.
  4. Inspect docker compose logs postsider for Temporal or provider errors.
  5. Check the connected channel and provider OAuth token.

Upgrade safely

Back up both PostgreSQL databases, MinIO media, and .env first. Then deploy a tagged source release:
Run the health checks again after the upgrade. Do not use docker compose pull as an application update; the OSS application is built from the checked-out source.

Restore checklist

Restore PostgreSQL, Temporal PostgreSQL, MinIO, and the exact .env used by the instance. ENCRYPTION_KEY is required to decrypt stored provider credentials. After restoring, verify API health, worker health, a media object, and a test scheduled post before reopening the instance to users.