macrostack

Layer 5 · self-hosting reality check

What it actually takes to self-host Chatwoot

The docs say 4 GB (the vendor minimum, sized for up to 10,000 conversations a day), plus at least 1 GB of swap so upgrades do not run out of memory. In practice you want 4 GB plus 1 GB of swap is enough for a small team. Sidekiq alone can use more than 1 GB on a busy server, and 8 GB is the vendor's figure for 20,000 conversations a day.. Here is the honest version — real requirements, real monthly cost, what you will be maintaining, and the one thing that catches people out.

Usually reached from Freshdesk alternatives, where Chatwoot is one of the picks.

Wondering whether you need to at all? Is Freshdesk free? — what the free tier actually allows, and where the wall is.

RAM — documented minimum4 GB (the vendor minimum, sized for up to 10,000 conversations a day), plus at least 1 GB of swap so upgrades do not run out of memory
RAM — what it really needs4 GB plus 1 GB of swap is enough for a small team. Sidekiq alone can use more than 1 GB on a busy server, and 8 GB is the vendor's figure for 20,000 conversations a day.
CPU4 cores is the vendor's recommended minimum; 8 for 20,000 conversations a day
DiskAttachments go to local disk (/app/storage) unless you point storage at S3-compatible object storage, which Chatwoot recommends. PostgreSQL wants 5–10 GB to start and Redis about 100 MB.
Monthly cost$24–48/mo for a 10-agent instance on a 4–8 GB VPS (Chatwoot asks for 4 cores, which most hosts only sell with 8 GB), plus object storage if attachments move off the box
Setup timeAn hour with Docker Compose. Each channel after that (email, WhatsApp, social) is its own setup.
How you install itdocker compose from the official docker-compose.production.yaml: rails, sidekiq, pgvector/pgvector:pg16 and redis, all bound to localhost behind your own Nginx for HTTPS. Or the install script for Ubuntu 24.04.
Ongoing maintenancePull new images and run `rails db:chatwoot_prepare` on every update, and step very old installs through intermediate tags. Set WEB_CONCURRENCY yourself: the docs leave it out, so Puma runs a single process unless you change it.
Where it stops scalingThe vendor sizes 4 GB and 4 cores for about 10,000 conversations a day, and 8 GB with 8 cores for 20,000. Past that, run Sidekiq and Rails on separate servers and move to managed PostgreSQL and Redis.

The thing that catches people out

Since v4, Chatwoot's database migrations need PostgreSQL with the pgvector extension. The official compose file now ships pgvector/pgvector:pg16, but anyone who brought their own database hits failed migrations in the middle of an upgrade. That includes a plain postgres image, a pre-v4 compose file, the Bitnami Postgres chart on Kubernetes, and a managed database where the extension is not allow-listed. Swap to the pgvector image (same major version, same data volume) and check that the old version boots on it before you upgrade.

When not to self-host Chatwoot

Your support is mostly long email threads with SLAs and a knowledge base: Zammad or FreeScout fit better. Also skip it if you do not want to run Rails, Sidekiq, PostgreSQL and Redis; Chatwoot Cloud runs the same product for you.

Every guide here carries this section. A site that only ever tells you to self-host is selling something — the useful answer is sometimes no.

Other Layer 5 self-hosting guides

Common questions

How much RAM does Chatwoot actually need?
4 GB plus 1 GB of swap is enough for a small team. Sidekiq alone can use more than 1 GB on a busy server, and 8 GB is the vendor's figure for 20,000 conversations a day. in practice. The documented minimum is 4 GB (the vendor minimum, sized for up to 10,000 conversations a day), plus at least 1 GB of swap so upgrades do not run out of memory, which is the figure at which the process starts rather than the figure at which it works under real use. 4 cores is the vendor's recommended minimum; 8 for 20,000 conversations a day alongside it.
What does self-hosting Chatwoot cost per month?
$24–48/mo for a 10-agent instance on a 4–8 GB VPS (Chatwoot asks for 4 cores, which most hosts only sell with 8 GB), plus object storage if attachments move off the box This is commodity VPS pricing and excludes your time, which is the larger cost for most people — budget for pull new images and run `rails db:chatwoot_prepare` on every update, and step very old installs through intermediate tags. Set WEB_CONCURRENCY yourself: the docs leave it out, so Puma runs a single process unless you change it.
How long does it take to set up Chatwoot?
An hour with Docker Compose. Each channel after that (email, WhatsApp, social) is its own setup., via docker compose from the official docker-compose.production.yaml: rails, sidekiq, pgvector/pgvector:pg16 and redis, all bound to localhost behind your own Nginx for HTTPS. Or the install script for Ubuntu 24.04..
When should I NOT self-host Chatwoot?
Your support is mostly long email threads with SLAs and a knowledge base: Zammad or FreeScout fit better. Also skip it if you do not want to run Rails, Sidekiq, PostgreSQL and Redis; Chatwoot Cloud runs the same product for you.
What is the most common mistake when self-hosting Chatwoot?
Since v4, Chatwoot's database migrations need PostgreSQL with the pgvector extension. The official compose file now ships pgvector/pgvector:pg16, but anyone who brought their own database hits failed migrations in the middle of an upgrade. That includes a plain postgres image, a pre-v4 compose file, the Bitnami Postgres chart on Kubernetes, and a managed database where the extension is not allow-listed. Swap to the pgvector image (same major version, same data volume) and check that the old version boots on it before you upgrade.
The Macrostack brief

New swaps, worth your inbox.

A short, occasional email when we add a high-intent alternative or ship a new head-to-head. No spam, no selling your address — unsubscribe in one click.