Skip to content

Self-host Chatwoot

updated Sep 2026prices checked · Jul 2026
We earn commissions when you shop through the links below. Full disclosure →

A self-hosted Intercom and Zendesk alternative built around one shared inbox for website live chat, email, WhatsApp, Facebook, Instagram, Telegram, LINE, SMS and API channels, with a help center portal, canned responses, automations and CSAT reports. MIT core; SLA policies, Captain AI, custom roles and SSO are in a separately licensed enterprise directory.

Zendesk / yr$300
Self-hosted / yr~$283
You keep$17/yr
Pocket the difference — spin it up on a cheap VPS in minutes.Start free on Kamatera → (opens in new tab)

Key facts

CategoryHelpdesk
LicenseMIT
StackRuby, Rails, Vue, PostgreSQL
Min RAM4096 MB
Official imageyes
Difficulty
Our recommendation

Pick Chatwoot when your support happens in real-time conversations: one shared inbox for website live chat, email, WhatsApp, Facebook, Instagram, Telegram, LINE, SMS, TikTok and an API channel, with private notes, canned responses, auto-assignment, campaigns, a help center portal and CSAT reports. It is a Rails and Vue app on PostgreSQL, Redis and Sidekiq, and the official Docker Compose file runs four services. Everything outside the `enterprise/` directory is MIT. Upstream's requirements page calls 4 GB of RAM the required minimum, good for up to 10,000 conversations a day. If you need SLAs, custom roles and SSO without a per-agent licence, Zammad is the catalog's other helpdesk; for a plain shared email inbox, FreeScout is lighter.

What you need

  • Any VPS with at least 4096 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • About an afternoon — budget time for troubleshooting
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install

Run these commands on your server:

# Chatwoot — official Docker Compose (rails, sidekiq, pgvector Postgres 16, Redis), per developers.chatwoot.com/self-hosted/deployment/docker
wget -O .env https://raw.githubusercontent.com/chatwoot/chatwoot/v4.18.0/.env.example
wget -O docker-compose.yaml https://raw.githubusercontent.com/chatwoot/chatwoot/v4.18.0/docker-compose.production.yaml
# the compose file uses chatwoot/chatwoot:latest — change both image lines to chatwoot/chatwoot:v4.18.0 (or v4.18.0-ce for the MIT-only build)
# in .env set SECRET_KEY_BASE, FRONTEND_URL, POSTGRES_PASSWORD and REDIS_PASSWORD; put the same Postgres password in docker-compose.yaml
nano .env && nano docker-compose.yaml
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
docker compose up -d
# rails listens on 127.0.0.1:3000 only — put Nginx or another reverse proxy with HTTPS in front; the first visit creates the super admin

What you take on

Chatwoot's licence and its own deployment docs set out what to decide before it holds customer data:

non-negotiableSLA policies, custom roles, audit logs, custom branding, agent capacity, SSO/SAML and the Captain AI agent live in the enterprise/ code, which may only be used in production with a paid Chatwoot licence "for the correct number of user seats". The self-hosted pricing page lists Premium Support at $19 and Enterprise at $99 per agent per month; SLA policies and SSO are Enterprise only. Upstream's -ce image tags (for example v4.18.0-ce) leave the enterprise code out.
non-negotiableThe production compose file uses chatwoot/chatwoot:latest; pin a version tag. Upgrading means pulling the new image and running rails db:chatwoot_prepare, and upstream says a very old install should step through intermediate tags rather than jump to the newest one.
non-negotiableRails binds to 127.0.0.1:3000 only, so you need Nginx or another reverse proxy for HTTPS. Set SECRET_KEY_BASE, FRONTEND_URL and the Postgres and Redis passwords before the first start, and create the super admin straight away: the first visit shows an onboarding screen that creates it. Two-factor authentication needs the Active Record encryption keys from .env.example to be set.
non-negotiableUpstream calls 4 GB of RAM the required minimum and 4 CPU cores the recommended minimum, asks for at least 1 GB of swap so upgrades don't run out of memory, and warns that Sidekiq "can use 1GB+ of memory" on a busy server. Attachments go to the storage_data volume unless you configure S3-compatible storage, so include it in backups with PostgreSQL.

An alternative to

Head-to-head

More self-hosted tools

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.