宝塔上安装Chatwoot开源客户沟通平台

宝塔上安装Chatwoot开源客户沟通平台

很多网站的右侧或者右下角,都会有一个 联系我们 按钮,除了电话或者微信外,还可以留言或者直接与客服在线聊天,而要实现这些功能,就需要用到我们今天介绍的客户沟通平台 Chatwoot,它为我们提供了从一个地方管理对话、建立关系和取悦客户的所有工具。

图片[1]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

准备工作

.env 配置文件

# 下载 .env
wget -O .env https://raw.githubusercontent.com/chatwoot/chatwoot/develop/.env.example

# 下不动的话可以加个代理
wget -O .env https://ghproxy.com/raw.githubusercontent.com/chatwoot/chatwoot/develop/.env.example

SECRET_KEY_BASE:可以用命令 openssl rand -base64 32 来生成;

  • FRONTEND_URL:如果局域网使用可以用 IP:port,例如:http://127.0.0.1:3000,公网使用直接就用域名,例如:https://chat.xxxx.com:3000
  • HELPCENTER_URL: 可以同上。
  • POSTGRES_PASSWORDPostgresSQL 数据库的密码,虽然老苏把对外暴露的端口关闭了,但还是建议密码复杂一点;
  • 邮件部分应该是找回密码用的,设置了但没测试;

我的配置文件如下:

# 在以下网址了解各种环境变量
# https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables/#rails-production-variables

# 用于验证已签名 Cookie 的完整性,因此请确保设置了安全的值
# SECRET_KEY_BASE 应为字母数字组合。避免使用特殊字符或符号。
# 使用 `rake secret` 来生成此变量
SECRET_KEY_BASE=GYf5pvb2nm94gI52cCWs91s+nSOFlp+usH73WZIN4Ac=

# 替换为你计划用于应用程序的 URL
FRONTEND_URL=https://xxx.xxx.com
# 为帮助中心页面使用专用 URL
HELPCENTER_URL=https://xxx.xxx.com

# 如果设置了该变量,所有未经身份验证的页面将回退到默认语言。
# 每当创建新账户时,默认语言将为 DEFAULT_LOCALE,而不是 en
# DEFAULT_LOCALE=en

# 如果计划使用 CDN 来存储资产,请设置资产 CDN 主机
ASSET_CDN_HOST=

# 强制通过 SSL 访问应用程序,默认设置为 false
FORCE_SSL=false

# 此配置控制 Chatwoot 安装上的新用户注册
# true: 默认选项,允许注册
# false: 禁用与注册相关的所有端点
# api_only: 禁用用户界面的注册功能,但可以通过账户 API 创建注册
ENABLE_ACCOUNT_SIGNUP=false

# Redis 配置
# 可以通过单一 URL 或单独变量指定配置
# 参考:https://www.iana.org/assignments/uri-schemes/prov/redis
# 你还可以使用以下格式的 URL:redis://:password@host:port/db_number
REDIS_URL=redis://redis:6379
# 如果使用 docker-compose,设置该变量的值为任意字符串,
# 它将成为在 docker-compose 中运行的 redis 服务的密码,以确保安全
REDIS_PASSWORD=
# Redis 哨兵可以通过传递哨兵主机和端口列表来使用,例如 sentinel_host1:port1,sentinel_host2:port2
REDIS_SENTINELS=
# 使用哨兵时需要指定 Redis 哨兵主节点名称,默认值为 "mymaster"。
# 可以使用 "SENTINEL masters" 命令查找主节点列表
REDIS_SENTINEL_MASTER_NAME=

# 默认情况下,Chatwoot 将 REDIS_PASSWORD 作为哨兵的密码值
# 使用以下环境变量自定义哨兵密码。
# 如果哨兵未配置密码,则使用空字符串
# REDIS_SENTINEL_PASSWORD=

# 修复 Heroku 中的 Redis 高级版问题
# 启用以下配置
# 参考:https://github.com/chatwoot/chatwoot/issues/2420
# REDIS_OPENSSL_VERIFY_MODE=none

# Postgres 数据库配置变量
# 你可以将 POSTGRES_DATABASE 留空。在生产环境中,数据库的默认名称是 chatwoot_production
# POSTGRES_DATABASE=
POSTGRES_HOST=postgres
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=
RAILS_ENV=development
# 更改 Postgres 查询超时限制,默认是 14 秒。仅在必要时修改。
# POSTGRES_STATEMENT_TIMEOUT=14s
RAILS_MAX_THREADS=5

# 所有外发邮件的发件邮箱
# 可以使用 `email@yourdomain.com` 或 `BrandName <email@yourdomain.com>`
MAILER_SENDER_EMAIL=Chatwoot <mail@chatwoot.com>

# SMTP 域名密钥已设置为 HELO 检查
SMTP_DOMAIN=chatwoot.com
# 如果在开发环境中使用 docker-compose,将该值设置为 "mailhog"
# 在其他环境中,将该值设置为 "localhost" 或你的 SMTP 地址
# 如果 SMTP_ADDRESS 为空,Chatwoot 将尝试使用 sendmail(postfix)
SMTP_ADDRESS=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
# 认证方式:plain, login, cram_md5
SMTP_AUTHENTICATION=
SMTP_ENABLE_STARTTLS_AUTO=true
# 可以是: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert',详情见 http://api.rubyonrails.org/classes/ActionMailer/Base.html
SMTP_OPENSSL_VERIFY_MODE=peer
# 如果你的 SMTP 服务器需要,注释掉以下环境变量
# SMTP_TLS=
# SMTP_SSL=
# SMTP_OPEN_TIMEOUT
# SMTP_READ_TIMEOUT

# 邮件接收
# 这是启用会话连续性时为回复邮件设置的域
MAILER_INBOUND_EMAIL_DOMAIN=
# 设置为与接收邮件相关的适当入口通道
# 可能的值为:
# relay 适用于 Exim、Postfix、Qmail
# mailgun 适用于 Mailgun
# mandrill 适用于 Mandrill
# postmark 适用于 Postmark
# sendgrid 适用于 Sendgrid
RAILS_INBOUND_EMAIL_SERVICE=
# 根据邮件接收服务选择以下之一
# 参考:https://edgeguides.rubyonrails.org/action_mailbox_basics.html
# 设置为你选择的密码,并在入站 Webhook 中使用
RAILS_INBOUND_EMAIL_PASSWORD=

MAILGUN_INGRESS_SIGNING_KEY=
MANDRILL_INGRESS_API_KEY=

# 为 Postmark 和 Sendgrid 创建你的入站 Webhook 说明:
# 入站 Webhook URL 格式:
#    https://actionmailbox:[YOUR_RAILS_INBOUND_EMAIL_PASSWORD]@[YOUR_CHATWOOT_DOMAIN.COM]/rails/action_mailbox/[RAILS_INBOUND_EMAIL_SERVICE]/inbound_emails
# 注意:替换括号内的值;不要包含括号本身。
# 示例:https://actionmailbox:mYRandomPassword3@chatwoot.example.com/rails/action_mailbox/postmark/inbound_emails
# 对于 Postmark
# 请确保在入站 Webhook 部分选中“在 JSON 负载中包含原始电子邮件内容”复选框。

# 存储
ACTIVE_STORAGE_SERVICE=local

# Amazon S3
# 文档:https://www.chatwoot.com/docs/configuring-s3-bucket-as-cloud-storage
S3_BUCKET_NAME=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=

# 日志设置
# 如果希望将日志写入文件,请禁用
RAILS_LOG_TO_STDOUT=true
LOG_LEVEL=info
LOG_SIZE=500
# 如果希望使用 lograge 而不是 rails logger,请配置此环境变量
#LOGRAGE_ENABLED=true

### 这些环境变量仅在设置社交媒体渠道时需要

# Facebook
# 文档:https://www.chatwoot.com/docs/facebook-setup
FB_VERIFY_TOKEN=
FB_APP_SECRET=
FB_APP_ID=

# https://developers.facebook.com/docs/messenger-platform/instagram/get-started#app-dashboard
IG_VERIFY_TOKEN=

# Twitter
# 文档:https://www.chatwoot.com/docs/twitter-app-setup
TWITTER_APP_ID=
TWITTER_CONSUMER_KEY=
TWITTER_CONSUMER_SECRET=
TWITTER_ENVIRONMENT=

# Slack 集成
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=

# Google OAuth
GOOGLE_OAUTH_CLIENT_ID=
GOOGLE_OAUTH_CLIENT_SECRET=
GOOGLE_OAUTH_CALLBACK_URL=

### 仅当使用自定义构建的移动应用时更改此环境变量
## 移动应用环境变量
IOS_APP_ID=L7YLMN4634.com.chatwoot.app
ANDROID_BUNDLE_ID=com.chatwoot.app

# https://developers.google.com/android/guides/client-auth (使用 keytool 打印指纹)
ANDROID_SHA256_CERT_FINGERPRINT=AC:73:8E:DE:EB:56:EA:CC:10:87:02:A7:65:37:7B:38:D4:5D:D4:53:F8:3B:FB:D3:C6:28:64:1D:AA:08:1E:D8

### 智能应用横幅
# https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html
# 你可以在 https://itunesconnect.apple.com 中找到你的应用程序 ID
#IOS_APP_IDENTIFIER=1495796682

## 推送通知
## 在此生成新的密钥值:https://d3v.one/vapid-key-generator/
# VAPID_PUBLIC_KEY=
# VAPID_PRIVATE_KEY=
#
# 移动应用推送通知
# FCM_SERVER_KEY=

### APM 和错误监控配置
## Elastic APM
## https://www.elastic.co/guide/en/apm/agent/ruby/current/getting-started-rails.html
# ELASTIC_APM_SERVER_URL=
# ELASTIC_APM_SECRET_TOKEN=

## Sentry
# SENTRY_DSN=

## Scout
## https://scoutapm.com/docs/ruby/configuration
# SCOUT_KEY=YOURKEY
# SCOUT_NAME=YOURAPPNAME (Production)
# SCOUT_MONITOR=true

## NewRelic
# https://docs.newrelic.com/docs/agents/ruby-agent/configuration/ruby-agent-configuration/
# NEW_RELIC_LICENSE_KEY=
# 设置为 true 以允许 NewRelic APM 发送日志。
# 该设置默认关闭。
# NEW_RELIC_APPLICATION_LOGGING_ENABLED=

## Datadog
## https://github.com/DataDog/dd-trace-rb/blob/master/docs/GettingStarted.md#environment-variables
# DD_TRACE_AGENT_URL=

# MaxMindDB API 密钥,用于下载 GeoLite2 城市数据库
# IP_LOOKUP_API_KEY=

## Rack Attack 配置
## 防止和限制滥用请求
# ENABLE_RACK_ATTACK=true
# RACK_ATTACK_LIMIT=300
# ENABLE_RACK_ATTACK_WIDGET_API=true

## 仅作为 API 服务器运行 Chatwoot
## 将此值设置为 true 将禁用前端仪表板端点
# CW_API_ONLY_SERVER=false

## 开发配置
# 如果想使用 letter_opener 发送本地邮件
# LETTER_OPENER=true
# 适用于 GitHub Codespaces
# WEBPACKER_DEV_SERVER_PUBLIC=

# 如果要使用官方移动应用,
# 通知将通过 Chatwoot 服务器中继
ENABLE_PUSH_RELAY_SERVER=true

# Stripe API 密钥
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=

# 如果希望使用签名 URL 上传文件到云存储,请设置为 true
# 设置此值后,请确保遵循 https://edgeguides.rubyonrails.org/active_storage_overview.html#cross-origin-resource-sharing-cors-configuration 配置云存储。
DIRECT_UPLOADS_ENABLED=

# Microsoft OAuth 凭据
AZURE_APP_ID=
AZURE_APP_SECRET=

## 高级配置
## 修改这些值以优化性能
# 控制 Sidekiq 的并发设置
# SIDEKIQ_CONCURRENCY=10

# AI 驱动的功能
## OpenAI 密钥
# OPENAI_API_KEY=

# 清理/性能相关配置
# 如果希望删除不活跃的联系邮箱,请设置为 true
# 超过 90 天无对话的联系邮箱将被删除
# REMOVE_STALE_CONTACT_INBOX_JOB_STATUS=false

docker-compose.yaml配置文件

# 下载 docker-compose.yml
wget -O docker-compose.yml https://raw.githubusercontent.com/chatwoot/chatwoot/develop/docker-compose.production.yaml

# 下不动的话可以加个代理
wget -O docker-compose.yml https://ghproxy.com/raw.githubusercontent.com/chatwoot/chatwoot/develop/docker-compose.production.yaml

也可以直接将下面老苏修改后的内容保存为 docker-compose.yml 文件,设置参数POSTGRES_PASSWORD= ,我的配置如下:

version: '3'

services:
  base: &base
    image: chatwoot/chatwoot:latest
    env_file: .env ## Change this file for customized env variables
    volumes:
      - /data/storage:/app/storage

  rails:
    <<: *base
    depends_on:
      - postgres
      - redis
    ports:
      - '127.0.0.1:3000:3000'
    environment:
      - NODE_ENV=production
      - RAILS_ENV=production
      - INSTALLATION_ENV=docker
    entrypoint: docker/entrypoints/rails.sh
    command: ['bundle', 'exec', 'rails', 's', '-p', '3000', '-b', '0.0.0.0']
    restart: always

  sidekiq:
    <<: *base
    depends_on:
      - postgres
      - redis
    environment:
      - NODE_ENV=production
      - RAILS_ENV=production
      - INSTALLATION_ENV=docker
    command: ['bundle', 'exec', 'sidekiq', '-C', 'config/sidekiq.yml']
    restart: always

  postgres:
    image: postgres:12
    restart: always
    # ports:
    #   - '127.0.0.1:5431:5431'
    volumes:
      - /data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=chatwoot
      - POSTGRES_USER=postgres
      # Please provide your own password.
      - POSTGRES_PASSWORD=

  redis:
    image: redis:alpine
    restart: always
    command: ["sh", "-c", "redis-server --requirepass \"$REDIS_PASSWORD\""]
    env_file: .env
    volumes:
      - /data/redis:/data
    # ports:
    #   - '127.0.0.1:6379:6379'

通过执行以下命令运行迁移来准备数据库

docker compose run --rm rails bundle exec rails db:chatwoot_prepare

图片[2]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

看到 Created database 'chatwoot_production',表示数据库创建成功了,继续执行下面的命令。

启动

启动并运行服务

docker compose up -d

图片[3]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

结束服务

docker compose down

反向代理

宝塔后台-网站反向代理 添加反代

图片[4]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠
图片[5]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

记得申请SSL证书。

运行

在浏览器中输入域名就能看到注册界面。

图片[6]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

注册成功之后需要登录

图片[7]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

登录成功之后的主界面

图片[8]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

中文设置

Settings –> Account Setting –> Site language,下拉找到简体中文

图片[9]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

点右上角的绿色按钮 Update settings 保存设置

图片[10]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

现在大部分界面已经是中文了

客户服务渠道

会话 –> 收件箱 –> New inbox

图片[11]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

选择 Website

图片[12]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

用网站做个测试

图片[13]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

目前系统只有一个用户,所以选择只能选择其作为 客服代理

图片[14]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

现在生成了一段代码

图片[15]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠

问题

问题一

ActiveRecord::ConnectionNotEstablished: connection to server at "172.18.0.3", port 5432 failed: fe_sendauth: no password supplied (ActiveRecord::ConnectionNotEstablished)

postgres数据库没有设置密码,在.env和docker-compose.yaml中找到POSTGRES_PASSWORD这个位置,填写上密码重新启动服务。

问题二

PG::ConnectionBad: connection to server at "172.18.0.3", port 5432 failed: FATAL: password authentication failed for user "postgres" (PG::ConnectionBad)

这个问题是postgres数据库密码错误导致,如果记着密码的话修把密码修改回去,如果不记着密码的话,那到/data/postgres文件夹下,清除全部文件后再重新启动服务即可。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容