Deploy
Chatwoot self hosted. The same inbox, on hardware you can point at.
Intercom's cheapest seat is $29 a month, billed annually. This is the whole server, and it does not count agents.
Chatwoot v4.17.1, the open source live chat and shared support inbox, deploys as a one-click template with PostgreSQL, Redis and its background worker onto a dedicated server Selfhost.dev provisions, secures and runs, across six locations on three continents. A European 8 GB server is $0.03/hr, about $23 a month, for every agent you add.
One click. Four containers. The template deploys in about twelve minutes.
no signup
+$5.00 added at signup · deployment choice preserved · no card
What is Chatwoot self hosted?
The same inbox.
On hardware you can point at.
What it is. Running the open source build of Chatwoot on a machine you control, rather than subscribing to Chatwoot Cloud. The software is identical. What changes is who holds the database and who gets the bill.
Who it is for. Support teams past the third agent, where a per agent subscription starts to compound. Also anyone who needs customer conversations to sit inside their own infrastructure for a data residency or procurement reason.
When to use it. When the agent count is growing and the conversation volume is steady. A two person team inside Chatwoot's free tier should stay there, and we say so plainly below.
Chatwoot self hosted requirements
What Chatwoot needs, and what arrives already wired.
| Requirement | This deployment |
|---|---|
| Version | Chatwoot v4.17.1, pinned |
| Database | PostgreSQL 16 with pgvector, bundled |
| Cache and queue | Redis 7, bundled and password-protected |
| Containers | Four: web, Sidekiq worker, database, cache |
| Memory | 8 GB recommended. Classed heavy, so it is the size the console defaults to |
| Architecture | x86 or ARM, both supported |
| Concurrency | Five concurrent web requests and one Sidekiq worker, as shipped |
| Outbound email | Not configured. Add your own SMTP server |
| Public sign-up | Closed by default |
| What Selfhost.dev provides | Detail |
|---|---|
| Locations | Six, across three continents |
| HTTPS | Certificate issued and renewed per hostname |
| Custom domain | One, added after launch |
| Backups | Optional. Daily, whole VM, last 7 kept, +20% of the server price |
| Monitoring | Metrics, logs, and a health check every 60 seconds |
| Firewall | Default deny, ports 22, 80 and 443 |
| Deploy time | About 12 minutes for the template, once the server exists |
| MCP tools | 189 across 31 modules |
Specifications current as of September 2026.
What is in the Chatwoot deployment
Four containers, and two of them share a tag on purpose.
Selfhost.dev pins every image to an exact tag. Nothing moves until you move it.
| Component | Image and tag | What it does |
|---|---|---|
| Chatwoot web | chatwoot/chatwoot:v4.17.1 | The Rails application, routed on port 3000 |
| Sidekiq worker | chatwoot/chatwoot:v4.17.1 | Background jobs, on the same pinned tag deliberately |
| PostgreSQL | pgvector/pgvector:pg16 | The database, with pgvector |
| Redis | redis:7-alpine | Queue and cache, password-protected |
The web process and the worker share one pinned tag by design
If a redeploy brought the two up on different versions, a job queued by one would be picked up by the other mid-flight. Pinning both to v4.17.1 makes that impossible.
The database is pgvector, and upstream pins something older
Chatwoot's AI features need the vector extension, and rails db:chatwoot_prepare fails on a database without it. Chatwoot's own published compose file pins pg12, which is past end of life. This template runs pg16.
What we set up for you
Pinned keys, pinned tags, and a closed front door.
This is the part a compose file does not do for you. Selfhost.dev wires the settings that decide whether Chatwoot works at all, and it wires them the same way every time.
-
SECRET_KEY_BASEis identical on the web container and the worker, and it is pinned rather than regenerated. A key that changed on redeploy would invalidate every session and every encrypted credential the instance holds. -
FRONTEND_URLfollows your live domain. Chatwoot derives three things from it: the links it emails, the chat-widget script your site embeds, and the Action Cable websocket address. Point it at the wrong host and the widget silently fails to connect. - Public sign-up ships closed.
ENABLE_ACCOUNT_SIGNUPis false, so a deployment left briefly unclaimed cannot have an account created on it by a stranger who finds the address. - Database and Redis credentials are generated per deployment, never a documented default.
-
RAILS_MAX_THREADSis set to 5, which is the concurrency the 8 GB machine is sized for. - TLS per hostname, issued and renewed automatically, and a default-deny firewall with only 22, 80 and 443 open.
No Selfhost.dev template ever boots on a documented default password. If credential seeding fails, the instance boots locked rather than open.
How to self host Chatwoot in four steps
From zero to live.
No server to set up.
Four steps. Four containers, and the schema loads before the web process answers.
1. Choose Chatwoot and a server
The page opens the exact console template. Pick the 8 GB server and one of six locations, then submit. Nothing else needs configuring.
2. Let it build
Four containers start and the database schema loads before the web process answers. The template deploys in about twelve minutes, against a fifteen minute budget the platform holds itself to.
3. Claim the first account
Open the generated HTTPS address and complete the onboarding screen. That first account becomes the super administrator, and public sign-up stays closed behind it.
4. Add an inbox, SMTP and your domain
Create a website inbox and paste the widget script into your site. Add your SMTP server so invitations send. Then point your own domain at it from the resource Settings screen.
What we run, and what you run
Your inbox to run. Our machine to keep up.
| Selfhost.dev runs | You run |
|---|---|
| The server, in one of six locations | Chatwoot itself: inboxes, agents and teams |
| The four containers and their restart policy | Canned responses, labels and automation rules |
| The TLS certificate, issued and renewed | The widget script on your own site |
| The default-deny firewall, ports 22, 80 and 443 | Your SMTP provider, once you add one |
| Server CPU and memory metrics | Application data, exports and retention |
| Optional whole-server backups | Which Chatwoot version you move to, and when |
We manage infrastructure, not application administration. There is no Chatwoot administration service here, and no sentence on this page should be read as one.
What an 8 GB server handles
Five concurrent requests, and what that means.
The 8 GB machine runs Chatwoot, PostgreSQL, Redis and the background worker together. Chatwoot ships configured for five concurrent web requests and one Sidekiq worker, which is the shape of a small support team rather than a call centre. Attachments land on the server disk, so the disk is the part to plan around.
| Server | RAM | Disk | Sold in |
|---|---|---|---|
cx33 | 8 GB | 80 GB | Europe |
cx43 | 16 GB | 160 GB | Europe |
The bill does not move when an agent joins, so the limit is the machine rather than a licence.
What Chatwoot hosting costs
No agent count, no plan above it.
Chatwoot is free software and Selfhost.dev does not charge for it. You pay for the server it runs on and nothing else. A European 8 GB server is $0.03/hr, about $23 a month if you leave it running, billed hourly against prepaid credits. There is no agent count and no plan above it.
| Server | RAM | Disk | Sold in | Rate | About, at 730 hours |
|---|---|---|---|---|---|
cx33, the recommended size | 8 GB | 80 GB | Europe | $0.03/hr | $23.36 |
cax21, ARM | 8 GB | 80 GB | Europe | $0.04/hr | $29.20 |
cx43 | 16 GB | 160 GB | Europe | $0.06/hr | $46.72 |
cpx31 | 8 GB | 160 GB | Europe | $0.07/hr | $47.89 |
cpx31 | 8 GB | 160 GB | Singapore | $0.12/hr | $90.08 |
ccx13 | 8 GB | 80 GB | US | $0.16/hr | $119.28 |
cx33, cax21 and cx43 are European machine types and are sold nowhere else. Price it in your own location, no signup needed.
| Item | Cost |
|---|---|
| Chatwoot, the software | $0. Open source, and we do not resell it |
| Its bundled PostgreSQL and Redis | $0 |
| The Sidekiq background worker | $0 |
| HTTPS certificate and custom domain | $0 |
| Agents, seats or accounts | $0 at any number |
| Bandwidth | $0. Traffic is included in the server price |
| Optional whole-server backups | +20% of the server price |
If your credit balance reaches zero the server stops and Chatwoot goes offline, which means the chat widget on your site stops answering. Your data stays on the disk while the server exists, so topping up brings it back as it was. Deleting the server takes its backup images with it. Signing up adds $5 in free credit, no card needed.
What we can promise about this deployment
What we can prove without a testimonial.
Every service is health-checked every 60 seconds. A stalled deploy is retried automatically, not abandoned. A deploy is never reported done until the URL actually answers. Retrying a create never leaves you paying for two copies. Your version never moves on its own.
Chatwoot's template takes about twelve minutes, against a fifteen minute budget the platform holds itself to.
Working out what a support inbox costs?
Tell us your agent count and roughly how busy the inbox is, and we will send back the server size, the monthly cost and what it replaces on your current support bill. One email, no newsletter.
Chatwoot Cloud vs self hosted
Their free tier is real. So is its ceiling.
Chatwoot GmbH sells its own hosted product on AWS in the US. It is the same software, priced per agent per month on an annual plan.
| Plan | Price | What comes with it |
|---|---|---|
| Hacker | $0 | Up to 2 agents, 500 conversations a month, 30 days of history, live chat only |
| Startups | $19 per agent per month | Unlimited conversations, 1 year of history |
| Business | $39 per agent per month | Unlimited conversations, 2 years of history |
| Enterprise | $99 per agent per month | Unlimited conversations, 3 years of history |
| Team | Chatwoot Cloud | Chatwoot on Selfhost.dev |
|---|---|---|
| 2 agents, light use | $0, their free tier | $23.36 |
| 3 agents | $57 a month, annual commitment | $23.36 |
| 10 agents | $190 a month, annual commitment | $23.36 |
| 10 agents on Business | $390 a month, annual commitment | $23.36 |
Prices from chatwoot.com/pricing, checked 14 September 2026, stated there as billed annually. Our figure is a European 8 GB server at 730 hours.
When Chatwoot Cloud is the better choice
Two agents on live chat, under 500 conversations a month. Chatwoot's own Hacker tier is free and hosted at that size, with thirty days of history. Below the third agent it is the cheaper answer and we would rather say so than pretend otherwise. And a hard requirement for SSO or SAML. Those sit on Chatwoot's Enterprise tier. The open source build does not carry them, and no amount of server changes that.
Metered on top of every paid tier: Captain AI credits at $20 per 1,000, with 300 included on Startups, 500 on Business and 800 on Enterprise. A busy month adds to the bill.
Chatwoot vs Intercom and Zendesk
One Intercom seat costs more than this whole server.
Intercom and Zendesk both charge per seat per month. Selfhost.dev charges for the server. Add a fourth agent to a Chatwoot and the bill does not move.
| Product | Per seat, per month | Billing | Minimum |
|---|---|---|---|
| Chatwoot on Selfhost.dev, European 8 GB | $23.36 for the whole team | hourly, no commitment | none |
| Intercom Essential | $29 | billed annually | 1 Full seat |
| Intercom Advanced | $85 | billed annually | 1 Full seat |
| Intercom Expert | $132 | billed annually | 1 Full seat |
| Zendesk Support Team | US$19 | paid yearly | per agent |
| Zendesk Suite Team | US$55 | paid yearly | per agent |
| Zendesk Suite Professional | US$115 | paid yearly | per agent |
Sources: intercom.com/pricing and zendesk.com/pricing, both checked 14 September 2026, both stated as annual-plan prices.
At one seat, Intercom Essential already costs more than this entire server. At five agents it is $145 a month against $23.36, and at five agents on Zendesk Suite Team it is $275. Metered on top at Intercom: the Fin AI Agent at $0.99 per outcome, plus pay as you go for email, SMS, WhatsApp and Phone. That is a support bill that rises with the number of customers who need help, which is the opposite of what a growing company wants.
Chatwoot on a raw VPS, versus this
Same Hetzner box. Twelve minutes instead of an evening.
Selfhost.dev runs on Hetzner and we say so. The machine underneath this deployment is the one you would rent anyway. What you are buying is the twelve minutes instead of the evening.
| On a raw VPS you do this yourself | Here it is already done |
|---|---|
| Write and debug the compose file | Four containers, pinned, wired |
| Notice that upstream pins an end-of-life PostgreSQL | The database is pg16 with pgvector |
Generate and pin SECRET_KEY_BASE across two containers | Generated once, shared correctly |
| Install a reverse proxy and issue a certificate | TLS per hostname, renewed |
| Close the ports you did not mean to open | Default deny, three ports |
| Keep the web process and the worker on one version | Same pinned tag, enforced |
This is not a price-parity claim. Hetzner's own list price for a comparable machine is lower than ours, and the difference pays for the wiring, the certificate, the monitoring and the restarts.
Chatwoot self hosted limitations
Five things to know before you deploy.
- No outbound email until you add SMTP. The mail settings ship present and empty. Password resets and agent invitations will not send on day one. This is the first thing to configure.
- Public sign-up is closed by default, so the first account is claimed through the onboarding screen. Claim it before you share the address.
- Five concurrent web requests and one background worker. That is the shipped concurrency on the 8 GB machine. A busier queue wants the 16 GB server.
- The server is sized when you deploy it and is not expanded in place, so pick the size you want to grow into. Attachments accumulate on that disk.
- SSO and SAML are not in the open source build. They sit on Chatwoot's Enterprise tier.
Chatwoot backup and restore
The database is the copy that matters.
Everything Chatwoot holds lives in one PostgreSQL database and on the server disk. Both are yours, and both can leave.
- Optional whole-server backups cover the entire machine, including the database and the uploaded attachments, at +20% of the server price. Daily, the last 7 kept, rotating.
- Your own dump, any time.
pg_dumpagainst the bundled PostgreSQL produces a portable file that restores onto any PostgreSQL 16 with pgvector, ours or anyone else's. - Attachments sit on the server disk, not in object storage, so a file-level copy of that directory belongs in the same routine as the database dump.
- Leaving takes the dump and the attachment directory. There is no export format to negotiate and no vendor to ask.
Deleting the server takes its backup images with it, which is why a copy kept somewhere else is worth the ten minutes.
Migrating from Intercom or Zendesk
The importer is first-party, and it is one screen.
From Intercom, there is a built-in importer
In Chatwoot, go to Settings, then Data, then Import. Create a private app in Intercom's Developer Hub with read access to contacts and conversations, paste the access token, choose Contacts or Conversations or both, and start it. The import page tracks contacts, conversations and messages as they land.
From Zendesk, it is two halves
Contacts export from Zendesk as CSV and come in through the Import button on the Contacts tab. Conversations come through Chatwoot's Conversations API. Then remove the Zendesk snippet from your site, create a live chat inbox here and paste ours.
Two published limits, and both matter. File attachments are not transferred: when an Intercom message has attachments, Chatwoot adds a note indicating how many were skipped. And the import is a one-time historical migration, so new changes in Intercom are not continuously synced. This template pins v4.17.1 and the Intercom importer was already being improved at v4.16.2, so the feature is present in the version we deploy. Source: Chatwoot's own migration guides, checked 14 September 2026.
Related guides.
Frequently asked questions
Can I self host Chatwoot on Selfhost.dev?
How much does self hosted Chatwoot cost?
Is self hosting cheaper than Chatwoot Cloud?
Does Chatwoot send email from this deployment?
Why does Chatwoot want an 8 GB server?
Do SSO and SAML work on self hosted Chatwoot?
Can I migrate from Intercom or Zendesk?
What happens if my credit balance reaches zero?
About Selfhost.dev
Selfhost.dev is a managed self hosting platform for developers and small teams. Open source apps and databases on dedicated servers you control, billed by the hour, in six locations across three continents.
Best for: Chatwoot, Twenty CRM, Mautic, n8n and managed PostgreSQL, MySQL, Redis and ClickHouse.