Skip to content

Template · Business apps

Chatwoot

Customer support inbox (live chat, email, socials) with Postgres+pgvector and Redis.

Deploy on Skiffly

Opens the dashboard with this template pre-selected. Sign in with GitHub if you are new; the free tier needs no card.

  • Postgrespgvector/pgvector:pg16
  • Redisredis:7-alpine
  • Chatwootchatwoot/chatwoot:latest
  • Sidekiqchatwoot/chatwoot:latest
Upstream documentation

What gets deployed

4 services in the environment you pick, on the private network of the project.

About this template

chatwoot/chatwoot:latest as Rails web and Sidekiq worker, pgvector/pgvector:pg16, Redis. The web service prepares the DB on start.

After deploy

Open the public URL and create the first account (ENABLE_ACCOUNT_SIGNUP=true), then set it to false.

Postgres

Image: pgvector/pgvector:pg16

  • Port 5432/tcp
  • 10 GB volume at /var/lib/postgresql/data
  • 1 vCPU · 1 GB

Redis

Image: redis:7-alpine

  • Port 6379/tcp
  • 2 GB volume at /data
  • 0.5 vCPU · 512 MB

redis-server --requirepass "$REDIS_PASSWORD" --appendonly yes --dir /data

Chatwoot

Image: chatwoot/chatwoot:latest

  • Port 3000/http
  • Public domain with TLS
  • 5 GB volume at /app/storage
  • 1 vCPU · 2 GB
  • /api

bundle exec rails db:chatwoot_prepare && bundle exec rails s -b 0.0.0.0 -p 3000

Sidekiq

Image: chatwoot/chatwoot:latest

  • 1 vCPU · 1.5 GB

bundle exec sidekiq -C config/sidekiq.yml

Variables

Generated secrets never leave the platform; references are resolved on the private network. Anything marked required is asked for at deploy time.

Postgres

NameValue
POSTGRES_USERpostgresSuperuser name
POSTGRES_PASSWORDgenerated (password)Generated at deploy
POSTGRES_DBchatwootDatabase created on first start
PGDATA/var/lib/postgresql/data/pgdata
DATABASE_URLpostgresql://${{self.POSTGRES_USER}}:${{self.POSTGRES_PASSWORD}}@${{self.SKIFFLY_PRIVATE_DOMAIN}}:5432/${{self.POSTGRES_DB}}Connection string on the private network

Redis

NameValue
REDIS_PASSWORDgenerated (password)
REDIS_URLredis://default:${{self.REDIS_PASSWORD}}@${{self.SKIFFLY_PRIVATE_DOMAIN}}:6379

Chatwoot

NameValue
SECRET_KEY_BASEgenerated (hex64)
FRONTEND_URLhttps://${{self.SKIFFLY_PUBLIC_DOMAIN}}
RAILS_ENVproduction
NODE_ENVproduction
INSTALLATION_ENVdocker
RAILS_LOG_TO_STDOUTtrue
LOG_LEVELinfo
POSTGRES_HOST${{Postgres.SKIFFLY_PRIVATE_DOMAIN}}
POSTGRES_PORT5432
POSTGRES_USERNAME${{Postgres.POSTGRES_USER}}
POSTGRES_PASSWORD${{Postgres.POSTGRES_PASSWORD}}
POSTGRES_DATABASE${{Postgres.POSTGRES_DB}}
REDIS_URL${{Redis.REDIS_URL}}
ENABLE_ACCOUNT_SIGNUPtrue
ACTIVE_STORAGE_SERVICElocal
FORCE_SSLfalse

Sidekiq

NameValue
SECRET_KEY_BASE${{Chatwoot.SECRET_KEY_BASE}}
FRONTEND_URL${{Chatwoot.FRONTEND_URL}}
RAILS_ENVproduction
NODE_ENVproduction
INSTALLATION_ENVdocker
RAILS_LOG_TO_STDOUTtrue
LOG_LEVELinfo
POSTGRES_HOST${{Postgres.SKIFFLY_PRIVATE_DOMAIN}}
POSTGRES_PORT5432
POSTGRES_USERNAME${{Postgres.POSTGRES_USER}}
POSTGRES_PASSWORD${{Postgres.POSTGRES_PASSWORD}}
POSTGRES_DATABASE${{Postgres.POSTGRES_DB}}
REDIS_URL${{Redis.REDIS_URL}}
ENABLE_ACCOUNT_SIGNUPtrue
ACTIVE_STORAGE_SERVICElocal
FORCE_SSLfalse

Deploy button for your README

Add a one-click deploy link to your repository or docs. Two variants: for light and dark backgrounds.

Deploy on SkifflyDeploy on Skiffly
Markdown · Light background
[![Deploy on Skiffly](https://skiffly.dev/button.svg)](https://skiffly.dev/templates/chatwoot)
Markdown · Dark background
[![Deploy on Skiffly](https://skiffly.dev/button-dark.svg)](https://skiffly.dev/templates/chatwoot)
HTML
<a href="https://skiffly.dev/templates/chatwoot"><img src="https://skiffly.dev/button.svg" alt="Deploy on Skiffly" height="32"></a>

Deploy Chatwoot in one click

Volumes, secrets and domain pre-wired. Runs on EU nodes, paid per minute from a prepaid balance.