Plainwire Self-Hosting2.0

Upgrades and rollback

Treat upgrades as a reversible operation until database compatibility says otherwise.

Before upgrade#

  • read release notes;
  • back up PostgreSQL, uploads, and configuration;
  • check disk space;
  • verify current health;
  • record the current image/release version;
  • verify the rollback procedure.

Container deployment#

Build or pull an immutable versioned image. Keep the previous image available.

docker compose up -d db redis
docker compose up -d --no-deps app

Do not start optional services simply because they exist in Compose.

Smoke test#

  • /api/health;
  • /api/version;
  • login/logout;
  • direct messages;
  • server messages;
  • upload/download;
  • roles/permissions;
  • WebSocket reconnect;
  • call and screen share from another network;
  • admin plane if enabled.

Rollback#

Restore the old image or relx symlink only if its database expectations remain compatible. A code rollback does not reverse a completed database migration.

Freeze window#

For large storage migrations, pause unrelated feature changes. Debugging one moving part at a time is much easier than debugging application code, schema, Redis, Scylla, and TURN changes together.

Plainwire Self-Hosting Handbook · verified against Plainwire 2.0.0 · 2026-09-17