Docker一键部署Zammad客户支持系统

Docker一键部署Zammad客户支持系统

💡
Zammad作为一款开箱即用的开源客服系统,凭借其敏捷部署与多渠道整合能力,正成为中小企业构建客户服务体系的利器。该系统可以30秒快速部署,支持NAS等私有化环境的运行。

一、项目简介


核心功能矩阵

全域渠道聚合:无缝对接微信、邮件、网页聊天等12+沟通平台,实现跨渠道咨询统一归集与智能分配,消除多平台切换的信息孤岛。

智能工单引擎:支持工单拆分/合并/优先级标记,内置SLA时效监控与自动化规则引擎,结合客户信息数据库实现全流程可追溯。

企业级安全体系:通过双重认证、操作审计日志等功能满足金融级合规要求,知识库与实时聊天模块支持ISO标准文档管理。

技术生态优势

多语言全球化:提供中英日等9国语言界面,适配跨境业务场景。

弹性扩展架构:通过RESTful API对接GitHub等第三方系统,Elasticsearch强化毫秒级搜索,Nginx反向代理支撑高并发访问。

社区驱动迭代:由德国Zammad基金会主导开发,活跃贡献者持续优化功能模块。

实测数据显示,该系统在4核8G服务器环境下可日均稳定处理200+工单。

二、环境准备


  • VPS一台 最低配置2核4G 带宽1M即可
  • 服务器系统:本文演示的系统是ubuntu20.04(LTS)
  • 是否备案:如果服务器在国外,站点无须备案;如果服务器在国内,网站必须备案。
  • 域名一个
  • 图床一个(又拍云、阿里云oss、腾讯云cos、七牛云等)
  • 为了便于后期的升级维护以及卸载,利用docker+Nginx Proxy Manager部署
  • 安装好Docker、Docker-compose、Nginx Proxy Manager(安装教程
  • SSH工具:FinalShell官网
  • 项目地址:Github官网
  • 官方软硬件配置要求请参考以下链接:Zammad官网

三、部署过程


系统初始化,更新索引

#更新索引库
sudo apt-get update

安装Git

sudo apt install -y git

验证Git是否安装成功,如果显示类似 git version 2.25.1,说明安装成功

git --version

进入你想安装的工作目录,该路径可自行选择,通常我的教程文章测试环境目录如下

# 进入安装目录
cd /root/data/docker_workspace/

# 克隆Zammad项目文件到当前路径下
git clone https://github.com/zammad/zammad-docker-compose.git

可参考如下截图编辑.env文件保存

#############################################
# Docker 环境变量
# https://docs.zammad.org/en/latest/install/docker-compose/environment.html
#############################################

#############################################
# docker-compose.yml - 如果这些变量没有默认值,你需要设置这些变量。
#############################################

RESTART=always  # 容器重启策略,设置为始终重启容器

# 使用固定的Zammad版本,而不是默认版本。如果这样做,你需要自己负责更新到最新的修补版本。
# VERSION=6.4.1-64  # 固定版本
# 你也可以使用浮动版本,它会自动更新:
VERSION=6.2     # 包括所有补丁更新
# VERSION=6       # 包括小版本更新
# VERSION=latest  # 包括稳定版本的所有更新,包括大版本
# VERSION=develop # 最新的开发版本
IMAGE_REPO=ghcr.io/zammad/zammad  # Zammad镜像仓库地址

ELASTICSEARCH_VERSION=8.17.3  # Elasticsearch版本
MEMCACHE_SERVERS=zammad-memcached:11211  # Memcached服务器地址和端口
MEMCACHE_VERSION=1.6.37-alpine  # Memcached版本
REDIS_URL=redis://zammad-redis:6379  # Redis连接URL
REDIS_VERSION=7.4.2-alpine  # Redis版本
POSTGRES_VERSION=17.4-alpine  # PostgreSQL版本

# RAILS_TRUSTED_PROXIES=  # 信任的代理设置
# ZAMMAD_HTTP_TYPE=  # Zammad HTTP类型配置
# ZAMMAD_FQDN=  # Zammad 的FQDN配置

NGINX_PORT=8080  # Nginx监听的端口
NGINX_EXPOSE_PORT=8080  # Nginx外部暴露的端口
NGINX_CLIENT_MAX_BODY_SIZE=50M  # Nginx客户端最大请求体积限制
POSTGRES_DB=zammad_production  # PostgreSQL数据库名称
POSTGRES_PASS=zammad  # PostgreSQL数据库密码
POSTGRES_USER=zammad  # PostgreSQL数据库用户名
POSTGRES_HOST=zammad-postgresql  # PostgreSQL主机地址
POSTGRES_PORT=5432  # PostgreSQL端口
POSTGRESQL_OPTIONS=?pool=50  # PostgreSQL连接池选项

ELASTICSEARCH_SCHEMA=http  # Elasticsearch使用的协议类型(http/https)
ELASTICSEARCH_HOST=zammad-elasticsearch  # Elasticsearch主机地址
ELASTICSEARCH_PORT=9200  # Elasticsearch端口
ELASTICSEARCH_USER=elastic  # Elasticsearch用户名
ELASTICSEARCH_PASS=zammad  # Elasticsearch密码
ELASTICSEARCH_NAMESPACE=zammad  # Elasticsearch命名空间
ELASTICSEARCH_REINDEX=true  # 是否启用 Elasticsearch重建索引

# 以下是为 nginx-proxy 容器配置反向代理所使用的变量,
# 文档参考:https://github.com/nginx-proxy/nginx-proxy。
# VIRTUAL_HOST=  # 虚拟主机名配置
# VIRTUAL_PORT=  # 虚拟端口配置
# 以下是为acme-companion配置LetsEncrypt证书所使用的变量,
# 文档参考:https://github.com/nginx-proxy/acme-companion。
# LETSENCRYPT_HOST=  # 用于生成LetsEncrypt证书的主机名
# LETSENCRYPT_EMAIL=  # 用于LetsEncrypt证书的电子邮件地址

#############################################
# scenarios/add-cloudflare-tunnel.yml
#############################################

# CLOUDFLARE_TUNNEL_TOKEN=mytoken  # Cloudflare Tunnel 的 token

#############################################
# scenarios/add-external-network-to-nginx.yml
#############################################

# ZAMMAD_NGINX_EXTERNAL_NETWORK=mynetwork  # Nginx 外部网络配置

#############################################
# scenarios/add-external-network-to-elasticsearch.yml
#############################################

# ZAMMAD_ELASTICSEARCH_EXTERNAL_NETWORK=mynetwork  # Elasticsearch 外部网络配置

#############################################
# scenarios/add-hostport-to-elasticsearch.yml
#############################################

# 默认为 9200,如果你需要设置不同的端口,请修改此项。
# ELASTICSEARCH_EXPOSE_HTTP_PORT=9200  # Elasticsearch外部暴露端口

确认进入/root/data/docker_workspace/zammad-docker-compose/目录启动以下命令

docker-compose up -d
Zammad镜像组件拉取

打开浏览器,地址栏内输入服务器IP+8080形式访问,后续可以自行通过NPM中将你的域名和IP进行绑定访问了。

拉取过程中如果因为docker-compose版本过低导致失败,或者你服务器上原本安装的docker-compose的版本就很低,请按照下面方法操作

# 强制删除旧版docker-compose的可执行文件
sudo rm -f /usr/local/bin/docker-compose

# 从Docker官方GitHub仓库下载最新版本的docker-compose可执行文件,并保存到 /usr/local/bin目录下
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予docker-compose可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接,可以在任何位置通过 `docker-compose` 命令访问
sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose

# 检查docker-compose是否已成功升级
docker-compose version

四、网站初始化


管理员账号注册

必须至少包含2个小写字母和2个大写字母!

网站信息设置

先行跳过E-mail设置,后续随时可以在控制面板中进行调整

先行跳过邮箱设置界面
继续跳过
初始化完成

点击左下角的齿轮设置图标,进入setting选项-branding-Locale,选择简体中文,提交后退出系统重新登录。如果发现界面语言没有及时更改,强制刷新几次页面即可

系统语言
移动端界面

五、更多官方截图


控制面板
工单详情
工单-文本界面
用户界面
组织界面
网站嵌入式聊天设计
快捷键