Deploy Chatwoot open-source customer support on Ubuntu — omnichannel inbox for email, chat, and WhatsApp.
Grab the automated bash script from GitHub to follow along with the video.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/communication/chatwoot/chatwoot-ubuntu.sh
chmod +x chatwoot-ubuntu.sh
sudo bash chatwoot-ubuntu.sh
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/communication/chatwoot/chatwoot-ubuntu.sh
chmod +x chatwoot-ubuntu.sh
The script installs Docker, then deploys Chatwoot with PostgreSQL and Redis automatically.
sudo bash chatwoot-ubuntu.sh
Open your browser and navigate to:
http://<your-server-ip>:3000
Complete the setup wizard, create your admin account, then add your first inbox — email, live chat, or API channel.
| Port | Purpose |
|---|---|
| 3000 | Chatwoot Web UI |
| 5432 | PostgreSQL (internal) |
| 6379 | Redis (internal) |
Chatwoot is an open-source customer support and live-chat platform that brings all your customer conversations — email, live chat, Twitter, WhatsApp, and more — into a single shared inbox. Self-hosting eliminates per-agent costs and gives your team complete data sovereignty.
Chatwoot consolidates all customer communication channels into one inbox — live chat, email, WhatsApp, Facebook, Twitter, and more. Instead of switching between tools, your support team sees every conversation in one place with full history, labels, and assignment. It's the self-hosted alternative to Intercom and Zendesk — without the per-seat pricing.
Port 3000 for the web UI. PostgreSQL on 5432 and Redis on 6379 are internal only. Use a reverse proxy (Nginx Proxy Manager) on port 443 pointing to 3000. Never expose 3000 directly to the internet without TLS.
Direct alternatives: Rocket.Chat (broader team chat + support), Papercups (simpler, lightweight), Zammad (ticket-focused). Cloud: Intercom (best UX but expensive), Zendesk (enterprise), Freshdesk (SMB-friendly).
Don't use Chatwoot if you need a simple internal team chat — it's designed for customer-facing support, not team collaboration. For internal comms, use Mattermost or Zulip. And if you only need basic contact form handling, a simple email alias is far lighter.
PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.
Yes — via the WhatsApp Cloud API (Meta Business account required) or via a third-party bridge like Baileys. The Cloud API is the official supported method and requires a verified Meta business.
Yes — conversations can be assigned to specific agents or left in the team queue. Chatwoot shows when a colleague is viewing or replying to a conversation to prevent duplicate responses.
Yes — native iOS and Android apps are available. They support push notifications for new conversations and replies.
Go to Settings → Inboxes → Add Inbox → Website. Copy the generated JavaScript snippet and paste it into your website's `<head>`. The widget appears on all pages with that snippet.
Yes — Chatwoot Automation lets you create rules like 'if new conversation from email inbox, assign to email team and add label urgent'. Trigger conditions include channel, content keywords, time, and more.
The Chatwoot UI supports 30+ languages. Your chat widget language can be set per-inbox. Customer-facing messages are in whatever language your agents write — there's no built-in translation.
Run multiple Puma (Rails) web workers and multiple Sidekiq workers as separate containers. Use a dedicated PostgreSQL server with connection pooling (PgBouncer). Redis should be separate and persistent.
Run `docker compose pull && docker compose up -d`. Chatwoot runs Rails migrations on startup. Back up PostgreSQL before any upgrade. Check the Chatwoot changelog — some upgrades need manual env variable changes.