参考:

https://developers.chatwoot.com/self-hosted/deployment/dockerhttps://developers.chatwoot.com/self-hosted/deployment/docker

 1、.env 配置文件

# Learn about the various environment variables at
# https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables/#rails-production-variables# Used to verify the integrity of signed cookies. so ensure a secure value is set
# SECRET_KEY_BASE should be alphanumeric. Avoid special characters or symbols.
# Use `rake secret` to generate this variable
SECRET_KEY_BASE=replace_with_lengthy_secure_hex# Replace with the URL you are planning to use for your app
FRONTEND_URL=http://0.0.0.0:3001
# To use a dedicated URL for help center pages
# HELPCENTER_URL=http://0.0.0.0:3000# If the variable is set, all non-authenticated pages would fallback to the default locale.
# Whenever a new account is created, the default language will be DEFAULT_LOCALE instead of en
# DEFAULT_LOCALE=en# If you plan to use CDN for your assets, set Asset CDN Host
ASSET_CDN_HOST=# Force all access to the app over SSL, default is set to false
FORCE_SSL=false# This lets you control new sign ups on your chatwoot installation
# true : default option, allows sign ups
# false : disables all the end points related to sign ups
# api_only: disables the UI for signup, but you can create sign ups via the account apis
ENABLE_ACCOUNT_SIGNUP=false# Redis config
# specify the configs via single URL or individual variables
# ref: https://www.iana.org/assignments/uri-schemes/prov/redis
# You can also use the following format for the URL: redis://:password@host:port/db_number
REDIS_URL=redis://redis:6379
# If you are using docker-compose, set this variable's value to be any string,
# which will be the password for the redis service running inside the docker-compose
# to make it secure
REDIS_PASSWORD=
# Redis Sentinel can be used by passing list of sentinel host and ports e,g. sentinel_host1:port1,sentinel_host2:port2
REDIS_SENTINELS=
# Redis sentinel master name is required when using sentinel, default value is "mymaster".
# You can find list of master using "SENTINEL masters" command
REDIS_SENTINEL_MASTER_NAME=# By default Chatwoot will pass REDIS_PASSWORD as the password value for sentinels
# Use the following environment variable to customize passwords for sentinels.
# Use empty string if sentinels are configured with out passwords
# REDIS_SENTINEL_PASSWORD=# Redis premium breakage in heroku fix
# enable the following configuration
# ref: https://github.com/chatwoot/chatwoot/issues/2420
# REDIS_OPENSSL_VERIFY_MODE=none# Postgres Database config variables
# You can leave POSTGRES_DATABASE blank. The default name of
# the database in the production environment is chatwoot_production
# POSTGRES_DATABASE=chatwoot
# POSTGRES_HOST=postgres
# POSTGRES_USERNAME=chatwoot
# POSTGRES_PASSWORD=Password_Secret
DATABASE_URL=postgresql://chatwoot:Password_Secret@postgres:5432/chatwoot
# RAILS_ENV=development
# Changes the Postgres query timeout limit. The default is 14 seconds. Modify only when required.
# POSTGRES_STATEMENT_TIMEOUT=14s
RAILS_MAX_THREADS=5# The email from which all outgoing emails are sent
# could user either  `email@yourdomain.com` or `BrandName <email@yourdomain.com>`
MAILER_SENDER_EMAIL=Chatwoot <accounts@chatwoot.com>#SMTP domain key is set up for HELO checking
SMTP_DOMAIN=chatwoot.com
# Set the value to "mailhog" if using docker-compose for development environments,
# Set the value as "localhost" or your SMTP address in other environments
# If SMTP_ADDRESS is empty, Chatwoot would try to use sendmail(postfix)
SMTP_ADDRESS=
SMTP_PORT=1025
SMTP_USERNAME=
SMTP_PASSWORD=
# plain,login,cram_md5
SMTP_AUTHENTICATION=
SMTP_ENABLE_STARTTLS_AUTO=true
# Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert', see http://api.rubyonrails.org/classes/ActionMailer/Base.html
SMTP_OPENSSL_VERIFY_MODE=peer
# Comment out the following environment variables if required by your SMTP server
# SMTP_TLS=
# SMTP_SSL=
# SMTP_OPEN_TIMEOUT
# SMTP_READ_TIMEOUT# Mail Incoming
# This is the domain set for the reply emails when conversation continuity is enabled
MAILER_INBOUND_EMAIL_DOMAIN=
# Set this to the appropriate ingress channel with regards to incoming emails
# Possible values are :
# relay for Exim, Postfix, Qmail
# mailgun for Mailgun
# mandrill for Mandrill
# postmark for Postmark
# sendgrid for Sendgrid
RAILS_INBOUND_EMAIL_SERVICE=
# Use one of the following based on the email ingress service
# Ref: https://edgeguides.rubyonrails.org/action_mailbox_basics.html
# Set this to a password of your choice and use it in the Inbound webhook
RAILS_INBOUND_EMAIL_PASSWORD=MAILGUN_INGRESS_SIGNING_KEY=
MANDRILL_INGRESS_API_KEY=# Creating Your Inbound Webhook Instructions for Postmark and Sendgrid:
# Inbound webhook URL format:
#    https://actionmailbox:[YOUR_RAILS_INBOUND_EMAIL_PASSWORD]@[YOUR_CHATWOOT_DOMAIN.COM]/rails/action_mailbox/[RAILS_INBOUND_EMAIL_SERVICE]/inbound_emails
# Note: Replace the values inside the brackets; do not include the brackets themselves.
# Example: https://actionmailbox:mYRandomPassword3@chatwoot.example.com/rails/action_mailbox/postmark/inbound_emails
# For Postmark
# Ensure the 'Include raw email content in JSON payload' checkbox is selected in the inbound webhook section.# Storage
ACTIVE_STORAGE_SERVICE=local# Amazon S3
# documentation: https://www.chatwoot.com/docs/configuring-s3-bucket-as-cloud-storage
S3_BUCKET_NAME=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=# Log settings
# Disable if you want to write logs to a file
RAILS_LOG_TO_STDOUT=true
LOG_LEVEL=info
LOG_SIZE=500
# Configure this environment variable if you want to use lograge instead of rails logger
#LOGRAGE_ENABLED=true### This environment variables are only required if you are setting up social media channels# Facebook
# documentation: 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
# documentation: https://www.chatwoot.com/docs/twitter-app-setup
TWITTER_APP_ID=
TWITTER_CONSUMER_KEY=
TWITTER_CONSUMER_SECRET=
TWITTER_ENVIRONMENT=#slack integration
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=# Google OAuth
GOOGLE_OAUTH_CLIENT_ID=
GOOGLE_OAUTH_CLIENT_SECRET=
GOOGLE_OAUTH_CALLBACK_URL=### Change this env variable only if you are using a custom build mobile app
## Mobile app env variables
IOS_APP_ID=L7YLMN4634.com.chatwoot.app
ANDROID_BUNDLE_ID=com.chatwoot.app# https://developers.google.com/android/guides/client-auth (use keytool to print the fingerprint in the first section)
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### Smart App Banner
# https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html
# You can find your app-id in https://itunesconnect.apple.com
#IOS_APP_IDENTIFIER=1495796682## Push Notification
## generate a new key value here : https://d3v.one/vapid-key-generator/
# VAPID_PUBLIC_KEY=
# VAPID_PRIVATE_KEY=
#
# for mobile apps
# FCM_SERVER_KEY=### APM and Error Monitoring configurations
## 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=
# Set this to true to allow newrelic apm to send logs.
# This is turned off by default.
# 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 key to download GeoLite2 City database
# IP_LOOKUP_API_KEY=## Rack Attack configuration
## To prevent and throttle abusive requests
# ENABLE_RACK_ATTACK=true
# RACK_ATTACK_LIMIT=300
# ENABLE_RACK_ATTACK_WIDGET_API=true
# Comma-separated list of trusted IPs that bypass Rack Attack throttling rules
# RACK_ATTACK_ALLOWED_IPS=127.0.0.1,::1,192.168.0.10## Running chatwoot as an API only server
## setting this value to true will disable the frontend dashboard endpoints
# CW_API_ONLY_SERVER=false## Development Only Config
# if you want to use letter_opener for local emails
# LETTER_OPENER=true
# meant to be used in github codespaces
# WEBPACKER_DEV_SERVER_PUBLIC=# If you want to use official mobile app,
# the notifications would be relayed via a Chatwoot server
ENABLE_PUSH_RELAY_SERVER=true# Stripe API key
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=# Set to true if you want to upload files to cloud storage using the signed url
# Make sure to follow https://edgeguides.rubyonrails.org/active_storage_overview.html#cross-origin-resource-sharing-cors-configuration on the cloud storage after setting this to true.
DIRECT_UPLOADS_ENABLED=#MS OAUTH creds
AZURE_APP_ID=
AZURE_APP_SECRET=## Advanced configurations
## Change these values to fine tune performance
# control the concurrency setting of sidekiq
# SIDEKIQ_CONCURRENCY=10# AI powered features
## OpenAI key
# OPENAI_API_KEY=# Housekeeping/Performance related configurations
# Set to true if you want to remove stale contact inboxes
# contact_inboxes with no conversation older than 90 days will be removed
# REMOVE_STALE_CONTACT_INBOX_JOB_STATUS=false

 2、docker-compose.yml

services:base: &baseimage: chatwoot/chatwoot:latest-cecontainer_name: chatwoot-baseenv_file: .env ## Change this file for customized env variablesvolumes:- storage_data:/app/storagerails:<<: *basecontainer_name: chatwoot-railsdepends_on:- postgres- redisports:- '127.0.0.1:3000:3000'environment:- NODE_ENV=production- RAILS_ENV=production- INSTALLATION_ENV=dockerentrypoint: docker/entrypoints/rails.shcommand: ['bundle', 'exec', 'rails', 's', '-p', '3000', '-b', '0.0.0.0']restart: alwayssidekiq:<<: *basecontainer_name: chatwoot-sidekiqdepends_on:- postgres- redisenvironment:- NODE_ENV=production- RAILS_ENV=production- INSTALLATION_ENV=dockercommand: ['bundle', 'exec', 'sidekiq', '-C', 'config/sidekiq.yml']restart: alwayspostgres:image: pgvector/pgvector:pg16container_name: chatwoot-postgresrestart: alwaysports:- '127.0.0.1:5432:5432'volumes:- postgres_data:/var/lib/postgresql/dataenvironment:- POSTGRES_DB=chatwoot- POSTGRES_USER=chatwoot# Please provide your own password.- POSTGRES_PASSWORD=Password_Secretredis:image: redis:alpinecontainer_name: chatwoot-redisrestart: alwayscommand: ["sh", "-c", "redis-server --requirepass \"$REDIS_PASSWORD\""]env_file: .envvolumes:- redis_data:/dataports:- '127.0.0.1:6381:6379'volumes:storage_data:postgres_data:redis_data:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91869.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91869.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91869.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP进阶语法详解:命名空间、类型转换与文件操作

掌握了PHP面向对象编程的基础后&#xff0c;就可以深入学习命名空间、类型转换、文档注释、序列化以及文件操作等重要概念。 1、命名空间&#xff08;Namespace&#xff09; 命名空间是PHP 5.3引入的重要特性&#xff0c;它解决了类名、函数名和常量名冲突的问题&#xff0c;使…

Webpack 搭建 Vue3 脚手架详细步骤

创建一个新的 Vue 项目 1&#xff09;初始化项目目录 新建一个文件夹&#xff0c;或者使用以下指令 mkdir webpack-vue_demo cd webpack-vue_demo2&#xff09;初始化 npm 项目 npm init -y3&#xff09;安装 vue 和 webpack 相关依赖 npm install vue vue-loader vue-template…

【Git 误操作恢复指南】

Git 误操作恢复指南 适用场景&#xff1a;git reset --hard 误操作后的紧急恢复 风险等级&#xff1a;&#x1f534; 高风险 - 可能导致代码丢失 恢复成功率&#xff1a;95%&#xff08;CI/CD 环境下&#xff09; &#x1f6a8; 紧急情况概述 问题描述 在项目开发过程中&am…

Go语言 逃 逸 分 析

逃逸分析是什么 逃逸分析是编译器用于决定变量分配到堆上还是栈上的一种行为。一个变量是在堆上分配&#xff0c;还是在栈上分配&#xff0c;是经过编译器的逃逸分析之后得出的“结论”。Go 语言里编译器的逃逸分析&#xff1a;它是编译器执行静态代码分析后&#xff0c…

LeetCode算法日记 - Day 1: 移动零、复写零

目录 1. 移动零 1.1 思路解析 1.2 代码实现 2. 复写零 2.1 思路解析 2.2 代码实现 1. 移动零 283. 移动零 - 力扣&#xff08;LeetCode&#xff09; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请…

Odoo:免费开源的医疗器械行业解决方案

开源智造Odoo专家团队深知&#xff0c;作为医疗器械制造商&#xff0c;您的成功取决于制造卓越产品的能力。您必须遵循严密控制的流程&#xff0c;开发和制造出达到最严格质量标准的产品。“开源智造Odoo医疗器械行业解决方案”是为医疗器械制造商设计的全球企业资源规划(ERP)软…

Redis键值对中值的数据结构

前言 前面我们已经介绍了Redis的键值对存储管理的底层数据结构。如果不清楚的同志可以看我前面的博客 Redis数据库存储键值对的底层原理-CSDN博客 下面,我们来看一下Redis键值对中值的数据结构有那些叭 Redis常见的5种数据类型 string …

MySQL自动化安装工具-mysqldeploy

功能 可在linux系统上安装 mysql5.5/5.6/5.7/8.0/8.4 版本的 MySQL&#xff0c;可以初始化多实例 MySQL。 码云: https://gitee.com/hh688/mysqldeploy guithub: https://github.com/hhkens/mysqldeploy 限制 仅在 centos7 环境进行测试&#xff0c;后期可能支持更多系统。 此程…

简要探讨大型语言模型(LLMs)的发展历史

关注大型语言模型(LLMs) 简要探讨语言模型的发展历史 理解Transformer架构的基本元素和注意力机制 了解不同类型的微调方法 语言模型的大小之分 在语言模型领域,“小”和“大”是相对概念。几年前还被视为“巨大”的模型,如今已被认为相当小。该领域发展迅猛,从参数规模为…

Java试题-选择题(2)

Java试题-选择题(2) 题目 下列语句创建对象的总个数是: String s=“a”+“b”+"c”+“d”+"e” A.4 B.2 C.3 D.1 关于下面的程序段的说法正确的是()? File file1=new File(“e:\xxx\yyy\zzz");file1.mkdir(); A.如目录e:\xxx\yyy\不存在,程序会抛出FileN…

揭秘动态测试:软件质量的实战防线

动态测试概述&#xff08;扩展版&#xff09; 目录 动态测试概述&#xff08;扩展版&#xff09; 一、动态测试的定义与重要性 ⚡ 二、动态测试类型 &#x1f50d; &#xff08;一&#xff09;功能测试 &#x1f9e9; &#xff08;二&#xff09;非功能测试 &#x1f4ca…

机器学习①【机器学习的定义以及核心思想、数据集:机器学习的“燃料”(组成和获取)】

文章目录先言一、什么是机器学习1.机器学习的定义以及核心思想2.机器学习的四大类型2.1监督学习&#xff08;Supervised Learning&#xff09;2.2半监督学习&#xff08;Midsupervised Learning&#xff09;2.3无监督学习&#xff08;Unsupervised Learning&#xff09;2.4强化…

GaussDB 数据库架构师(十二) 资源规划

1 硬件和软件要求 1&#xff09;硬件配置示例 硬件配置示例设备类型 设备型号 数量 备注 计算节点 CPU&#xff1a; 2*64 Cores&#xff0c;Kunpeng 920 内存&#xff1a;32*32GB 系统盘&#xff1a;2*960GB SATA SSD 数据盘&#xff1a;24*960GB SATA SSD RAID卡&#x…

Linux系统文件与目录内容检索(Day.2)

一、文件和目录内容检索处理命令1、uniq去重语法uniq [options] [input_file [output_file]]选项选项作用-c进行计数&#xff0c;并删除文件中重复出现的行-d仅显示连续的重复行-u仅显示出现一次的行-i忽略大小写案例1、删除输入文件中的重复行sort input.txt | uniq2、仅显示重…

如何选择一个容易被搜索引擎发现的域名?

在这个数字化时代&#xff0c;域名不仅是企业线上身份的标识&#xff0c;更是影响网站搜索曝光率的关键因素。一个精心挑选的域名能为品牌带来更多自然流量&#xff0c;下面我们就来探讨几个实用技巧。一、简洁易记是王道好域名首先要让人过目不忘。想象一下&#xff0c;当用户…

树形DP进阶:结合dfn序的线性化树问题求解技巧

树形DP进阶&#xff1a;结合dfn序的线性化树问题求解技巧一、dfn序与树的线性化1.1 dfn序的基本概念1.2 树形DP结合dfn序的优势二、核心应用&#xff1a;子树区间的DP优化2.1 子树权值和的快速查询与更新问题描述结合dfn序的解法代码实现&#xff08;前缀和版本&#xff09;优化…

九、Maven入门学习记录

Maven介绍Maven作用统一项目结构Maven安装&#xff08;注意配置阿里云私服时url要跟换成最新的&#xff09;IDEA创建Meavn项目Maven坐标介绍IDEA导入Maven项目依赖配置依赖传递依赖传递-排除依赖依赖范围生命周期生命周期-执行特定生命周期生命周期-总结

中标喜讯 | 安畅检测再下一城!斩获重庆供水调度测试项目

安畅检测在第三方检测领域持续深耕&#xff0c;再传捷报&#xff01;公司于2025年7月30日正式收到中标通知&#xff0c;成功拿下重庆水资源产业股份有限公司 “重庆西部科学城多水厂分区分压供水优化调度研究项目&#xff08;软件测试标段&#xff09;”。 此次中标不仅是市场…

银河麒麟V10一键安装DM8的脚本及高阶运维SQL分享

介质下载地址名称网址银河麒麟高级服务器操作系统V10&#xff08;SP3&#xff09;用户手册https://www.kylinos.cn/support/document/60.htmlDM8 安装手册https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.htmlDM 数据库安装&#xff08;Linux安装&#xff09;h…

cobalt strike(CS)与Metasploit(MSF)联动

CS —> MSF首先cs上创建一个http的外部监听器。此时在CS服务端查看监听的ip&#xff0c;发现并没有开启&#xff0c;需要到成功移交会话后才会启动。netstat -tunlp | grep 7000在MSF中使用handler模块&#xff0c;配置监听。注意&#xff1a;目标机器的地址是rhost&#xf…