All posts

July 25, 2026 · 5 min read · Engineering

Self-hosting your team chat: a practical checklist

Running your own team chat used to mean a rack of servers. Today it’s a container, a database, and a domain. Here’s the short list that takes you from “it works on my laptop” to a service your team can rely on.

The essentials

You need three things: a web process to serve the app, a Postgresdatabase for your messages and members, and somewhere to put files — either S3-compatible object storage or a mounted disk. Point a domain at the web process, terminate TLS, and you’re serving traffic.

Backups are the whole game

Your database isyour team’s history. Automate daily snapshots, keep a few weeks of them, and — this is the part people skip — test a restore. A backup you’ve never restored is a hope, not a backup.

Health checks and zero-downtime deploys

Expose a simple health endpoint and have your platform poll it before shifting traffic to a new release. Run database migrations in a release step that finishes before the new version goes live, and keep them forward-only so a rollback never leaves the schema stranded.

Keep secrets out of the build

Database URLs and API keys belong in the runtime environment, never baked into a container image where they’d live forever in its history. Construct database clients lazily so a build never needs production credentials in the first place.

Try it with your team

Create a workspace and invite people by email in seconds.

Get started free