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

打开浏览器,地址栏内输入服务器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,选择简体中文,提交后退出系统重新登录。如果发现界面语言没有及时更改,强制刷新几次页面即可


五、更多官方截图






