CloudLinux.ro
Applications

How to install Chatwoot on a Cloud VPS

Updated 7/18/2026

Chatwoot is an open-source customer support platform: shared inbox for email, website live chat and social channels, an alternative to Intercom.

The self-hosted version removes per-user subscriptions: you pay only for the server, no matter how many teammates use the app.

One-click install on cloudlinux.ro

The fastest way: Chatwoot installs automatically at the first boot of a new server.

  1. Create a Cloud VPS from the control panel.
  2. In the configuration step, pick Chatwoot from the app catalog.
  3. Start the server. The install runs in the background for a few minutes and its status shows on the server page.
  4. Access details and generated passwords are saved on the server in /root/app-credentials.txt. The app will be available on port 3000.

Manual install on any Ubuntu server

If you prefer doing it yourself, below is the exact script our automatic install runs. Execute it as root on a fresh Ubuntu server (24.04 recommended). It stops at the first error, and when it finishes you will find the access details in /root/app-credentials.txt.

export DEBIAN_FRONTEND=noninteractive
curl -fsSL https://get.docker.com | sh
DB_PASS=$(openssl rand -base64 24 | tr -dc 'A-Za-z0-9' | cut -c1-20)
SECRET=$(openssl rand -hex 64)
IP=$(hostname -I | awk '{print $1}')
mkdir -p /opt/chatwoot && cd /opt/chatwoot
cat > .env <<EOF
SECRET_KEY_BASE=${SECRET}
FRONTEND_URL=http://${IP}:3000
POSTGRES_HOST=postgres
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=${DB_PASS}
POSTGRES_DATABASE=chatwoot
REDIS_URL=redis://redis:6379
RAILS_ENV=production
INSTALLATION_ENV=docker
ACTIVE_STORAGE_SERVICE=local
EOF
cat > docker-compose.yml <<EOF
services:
  postgres:
    image: postgres:16
    restart: always
    environment:
      POSTGRES_DB: chatwoot
      POSTGRES_PASSWORD: ${DB_PASS}
    volumes:
      - cw_pg:/var/lib/postgresql/data
  redis:
    image: redis:7
    restart: always
    volumes:
      - cw_redis:/data
  rails:
    image: chatwoot/chatwoot:latest
    restart: always
    env_file: .env
    depends_on: [postgres, redis]
    ports:
      - '3000:3000'
    volumes:
      - cw_storage:/app/storage
    command: bundle exec rails s -p 3000 -b 0.0.0.0
  sidekiq:
    image: chatwoot/chatwoot:latest
    restart: always
    env_file: .env
    depends_on: [postgres, redis]
    volumes:
      - cw_storage:/app/storage
    command: bundle exec sidekiq -C config/sidekiq.yml
volumes:
  cw_pg:
  cw_redis:
  cw_storage:
EOF
docker compose run --rm rails bundle exec rails db:chatwoot_prepare
docker compose up -d
printf 'Chatwoot: http://%s:3000\nCreeaza contul de administrator la prima accesare.\n' "$IP" > /root/app-credentials.txt

You can also save this script as a recipe in your account and reuse it on any new server.

Put this guide into practice on your own VPS

EU cloud servers, billed hourly, ready in minutes, with one-click installs for dozens of apps.

See pricing

Related tutorials