【飞牛NAS神器!一键部署开源悟空CRM,客户管理+销售跟踪+智能报表全搞定】
大家好!今天分享一个超级实用的部署教程——在飞牛NAS上使用Docker Compose一键部署悟空CRM开源版!这可是企业级客户关系管理系统,完全免费开源,功能强大到让你惊喜!
悟空CRM官网地址:https://www.5kcrm.com/crm
开源项目地址:https://github.com/WuKongOpenSource/Wukong_AI_CRM_15
🚀 开源版悟空CRM核心特色功能
📊 全面的客户管理
- 360°客户视图,完整客户档案管理
- 客户分级分类,精准客户画像
- 客户跟进记录,永不丢失商机
- 客户生命周期全流程管理
💰 强大的销售管理
- 销售机会管道可视化
- 销售预测与业绩分析
- 合同订单全流程管理
- 回款计划与应收账款跟踪
🔄 智能化工作流
- 自定义审批流程
- 任务分配与协同办公
- 日程提醒与待办事项
- 工作日志自动生成
📈 数据报表与分析
- 销售漏斗分析
- 员工业绩排行榜
- 客户来源统计
- *业务数据多维报表
🌐 多端协同
- PC端完整功能
- 移动端适配
- 团队协同协作
- 权限精细管控
📋 部署要求
🛠 5分钟快速部署步骤
1创建所有必要目录,把项目初始化数据文件放入到对应文件内

可以登录SSH一键添加目录,也可以新建文件夹。
mkdir -p /vol1/1000/Docker/wukongCRM/{mysql,redis,minio,elasticsearch,wukong,nginx}
2.docker compose一键部署
# Docker Compose 版本
version: '3.8'
# 服务定义
services:
# MySQL 数据库服务
mysql:
image: docker.io/mysql/mysql-server:8.0.32 # 使用官方 MySQL 8.0.32 镜像
container_name: mysql # 容器名称
volumes:
# 1. 挂载自定义配置文件(注意:直接挂载文件可能产生权限问题)
- /vol1/1000/Docker/wukongCRM/mysql/my.cnf:/etc/my.cnf
# 2. 挂载初始化脚本目录(容器启动时会自动执行该目录下的SQL文件)
- /vol1/1000/Docker/wukongCRM/mysql:/docker-entrypoint-initdb.d/
# 3. 数据持久化挂载(将数据库数据保存到宿主机)
- /vol1/1000/Docker/wukongCRM/mysql/data:/var/lib/mysql
ports:
- "53306:3306" # 修改为五位数端口,避免冲突
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-wukongCrm@2025} # root密码,支持环境变量
MYSQL_ROOT_HOST: "%" # 允许所有主机连接
TZ: Asia/Shanghai # 时区设置
LANG: en_US.UTF-8 # 语言设置
restart: always # 总是重启
command: >
bash -c "chmod 644 /etc/my.cnf && exec /entrypoint.sh mysqld --lower_case_table_names=1" # 设置配置文件权限并启动,表名小写
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] # 健康检查:ping数据库
interval: 10s # 检查间隔
timeout: 30s # 超时时间
retries: 10 # 重试次数
start_period: 180s # 启动后等待时间
networks:
- kaka # 使用自定义网络
# Redis 缓存服务
redis:
image: docker.io/redis:7.0.4 # 使用 Redis 7.0.4 镜像
restart: always
environment:
REDISCLI_AUTH: ${REDIS_PASSWORD:-123456} # Redis CLI 认证密码
volumes:
- /vol1/1000/Docker/wukongCRM/redis/data:/data # 数据持久化
command: redis-server --requirepass ${REDIS_PASSWORD:-123456} # 启动时设置密码
ports:
- "56379:6379" # 修改为五位数端口
healthcheck:
test: ["CMD-SHELL", "redis-cli -a ${REDIS_PASSWORD:-123456} ping | grep -q PONG"] # 健康检查
interval: 10s
timeout: 30s
retries: 5
start_period: 10s
networks:
- kaka
# MinIO 对象存储服务
minio:
container_name: minio
restart: always
image: docker.io/minio/minio:RELEASE.2024-10-02T17-50-41Z # 特定版本MinIO
environment:
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} # 访问密钥
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} # 秘密密钥
MINIO_DOMAIN: minio # 域名设置
volumes:
- /vol1/1000/Docker/wukongCRM/minio/data:/minio_data # 存储数据挂载
command: minio server /minio_data --console-address ":9001" # 启动命令,包含控制台地址
ports:
- "${MINIO_PORT:-59000}:9000" # API端口改为五位数
- "${MINIO_CONSOLE_PORT:-59001}:9001" # 控制台端口改为五位数
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] # 健康检查
interval: 30s
timeout: 20s
retries: 3
start_period: 60s
networks:
- kaka
# MinIO 初始化服务(用于创建别名和设置权限)
minio-init:
image: docker.io/quay.io/minio/mc:RELEASE.2024-11-21T17-21-54Z # MinIO客户端
container_name: minio-init
depends_on:
minio:
condition: service_healthy # 等待minio服务健康后再启动
entrypoint: >
/bin/sh -c "
sleep 10 && \ # 等待10秒确保minio完全启动
mc alias set kaka http://minio:9000 minioadmin minioadmin && \ # 设置别名
mc anonymous set download kaka/wukong-public || true" # 设置公开桶的下载权限
networks:
- kaka
restart: "no" # 不重启(一次性任务)
# Elasticsearch 搜索服务
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.13.4 # 官方ES镜像
container_name: elasticsearch
restart: always
volumes:
- /vol1/1000/Docker/wukongCRM/elasticsearch/plugins:/usr/share/elasticsearch/plugins # 插件目录
environment:
ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD:-c6oRpADe1SW304zDjqKlNst0} # 密码
cluster.name: es-cluster # 集群名称
node.name: es0 # 节点名称
discovery.type: single-node # 单节点模式
xpack.license.self_generated.type: basic # 许可证类型
xpack.security.enabled: "true" # 启用安全
xpack.security.http.ssl.enabled: "false" # 禁用HTTPS
ports:
- ${ELASTICSEARCH_PORT:-59200}:9200 # ES端口改为五位数
deploy:
resources:
limits:
memory: 2g # 内存限制
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:9200/_cluster/health?pretty"] # 集群健康检查
interval: 30s
timeout: 10s
retries: 50
start_period: 120s
networks:
- kaka
# 悟空CRM 主应用服务
wk_crm:
image: wuknogcrm-registry.cn-beijing.cr.aliyuncs.com/wukongcrm/wk_crm:20251015 # 私有镜像
platform: linux/amd64 # 指定平台
container_name: wk_crm
restart: always
volumes:
- /vol1/1000/Docker/wukongCRM/wukong/logs:/opt/wk_boot/logs # 日志目录
- /vol1/1000/Docker/wukongCRM/wukong/config:/opt/wk_boot/config # 配置目录
depends_on:
minio:
condition: service_healthy # 依赖所有基础服务健康状态
redis:
condition: service_healthy
elasticsearch:
condition: service_healthy
mysql:
condition: service_healthy
ports:
- "58445:8445" # 主应用端口改为五位数
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8445/ping"] # 应用健康检查
interval: 30s
timeout: 20s
retries: 3
start_period: 60s
environment:
- LANG=zh_CN.UTF-8 # 中文环境设置
- LANGUAGE=zh_CN:zh
- LC_ALL=zh_CN.UTF-8
networks:
- kaka
# Nginx 反向代理服务
nginx:
container_name: nginx
image: docker.io/nginx:latest # 最新版Nginx
restart: always
volumes:
- /vol1/1000/Docker/wukongCRM/nginx/conf.d:/etc/nginx/conf.d # 配置文件
- /vol1/1000/Docker/wukongCRM/nginx/cert:/etc/nginx/cert # SSL证书
environment:
NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} # 服务器名称
NGINX_PORT: ${NGINX_PORT:-80} # 监听端口
ports:
- '58280:80' # 映射到宿主机五位数端口
networks:
- kaka
# 自定义网络配置
networks:
kaka:
driver: bridge # 使用桥接网络模式
以上代码是根据我自己的docker情况部署的,路径是基本NAS知识点。按需调整。
这个 Docker Compose 配置文件定义了一个完整的悟空CRM系统,包含以下核心服务:
MySQL - 关系型数据库 53306:3306
Redis - 缓存服务 56379:6379
MinIO - 对象存储服务 59000:9000
Elasticsearch - 搜索引擎 59200:9200
wk_crm - 主应用服务 58445:8445
Nginx - 反向代理服务器 58280:80
所有服务都通过自定义的 kaka网络进行通信,确保服务间的网络隔离和安全。
🌐 如何访问系统
- •悟空CRM系统: http://你的NAS_IP:58280
- •MinIO控制台: http://你的NAS_IP:59001 (账号: minioadmin/minioadmin)
- •Elasticsearch: http://你的NAS_IP:59200
如果遇到打不开情况下,尝试重启一下Nginx容器,因为我测试过几次这个容器有时候启动会太快导致依赖没跟上,重启一下容器就好了。第一次会让你创建项目,剩下的自己玩。

