很多网站的右侧或者右下角,都会有一个 联系我们
按钮,除了电话或者微信外,还可以留言或者直接与客服在线聊天,而要实现这些功能,就需要用到我们今天介绍的客户沟通平台 Chatwoot
,它为我们提供了从一个地方管理对话、建立关系和取悦客户的所有工具。
![图片[1]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014180517845-image.png)
准备工作
.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_PASSWORD
:PostgresSQL
数据库的密码,虽然老苏把对外暴露的端口关闭了,但还是建议密码复杂一点;- 邮件部分应该是找回密码用的,设置了但没测试;
我的配置文件如下:
# 在以下网址了解各种环境变量
# 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技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014175622227-image.png)
看到 Created database 'chatwoot_production'
,表示数据库创建成功了,继续执行下面的命令。
启动
启动并运行服务
docker compose up -d
![图片[3]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014175734694-image.png)
结束服务
docker compose down
反向代理
宝塔后台-网站
–反向代理
添加反代
![图片[4]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014182031754-image.png)
![图片[5]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014182128974-image.png)
记得申请SSL证书。
运行
在浏览器中输入域名就能看到注册界面。
![图片[6]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014175853665-image.png)
注册成功之后需要登录
![图片[7]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014175903577-image.png)
登录成功之后的主界面
![图片[8]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014175914289-image.png)
中文设置
Settings
–> Account Setting
–> Site language
,下拉找到简体中文
![图片[9]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014175939767-image.png)
点右上角的绿色按钮 Update settings
保存设置
![图片[10]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014175951964-image.png)
现在大部分界面已经是中文了
客户服务渠道
会话
–> 收件箱
–> New inbox
![图片[11]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014180015129-image.png)
选择 Website
![图片[12]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014180024191-image.png)
用网站做个测试
![图片[13]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014180045165-image.png)
目前系统只有一个用户,所以选择只能选择其作为 客服代理
![图片[14]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014180055828-image.png)
现在生成了一段代码
![图片[15]|宝塔上安装Chatwoot开源客户沟通平台|TechTink技术微匠](https://www.techtink.cn/wp-content/uploads/2024/10/20241014180109623-image.png)
问题
问题一
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文件夹下,清除全部文件后再重新启动服务即可。
暂无评论内容