私有化文件管理系统部署踩坑实录:Docker Compose实战

1 阅读7分钟

帮一家200人的设计公司搞私有化文件管理系统部署,从踩坑到上线折腾了三周。这里记录实际遇到的问题和解决方案,重点是Docker Compose部署流程、在线预览服务的资源规划、以及AD域对接的细节。

背景和需求

日常管理大量CAD图纸、Revit模型和PDF文档,之前用NAS共享文件夹做文件管理,遇到的问题很典型:版本混乱找不到最新文件、权限没法精细控制(实习生不小心删了整个项目文件夹这种事发生了两次)、外网访问要挂VPN体验很差。

决定搞私有化部署。核心需求:纯内网能跑、100+格式在线预览(不可能给每台电脑装AutoCAD和Revit)、AD域对接、版本管理和权限控制。

最终选了巴别鸟,主要因为它支持纯内网部署(不依赖公网),在线预览覆盖了CAD/Revit等工程格式。

环境准备踩的三个坑

坑1:存储空间规划不足

第一次部署给存储分配了2TB,觉得200人够用。上线两个月发现版本历史占用远超预期——一个Revit模型保存了几十个版本,每个版本50-200MB。

最终存储配置方案:

数据类型初始大小月增量保留策略
项目文件800GB~100GB永久保留
版本历史200GB~80GB保留90天
预览缓存50GB~20GB自动清理
AI索引数据30GB~5GB随文件生命周期

正确做法是按初始文件量的3-5倍规划存储。巴别鸟支持分布式对象存储,后期可以横向扩展,但初始规划留足余量更省事。

坑2:在线预览服务资源不够

100+格式在线预览是CPU密集型操作。最初给预览服务分配了4核8G,10个人同时预览CAD就排队了。这个环节很多人容易低估——觉得"预览嘛能有多耗资源",实际上把DWG渲染成浏览器可显示的格式需要不少计算。

不同规模的资源配置参考

用户规模应用服务器预览服务存储建议
50人以下4核8G4核8G1TB
50-200人8核16G8核16G3-5TB
200-500人16核32G16核32G5-10TB
500人以上集群集群分布式存储

我们200人规模,最终配置应用服务器8核16G + 预览服务独立8核16G。

坑3:SSL证书导致功能异常

私有化部署虽然主要内网使用,但浏览器对HTTPS有强制要求。自签名证书在Chrome里被标记不安全,剪贴板操作、文件拖拽等功能会被拦截。

解决方式:用内部CA签发证书,或者用Let's Encrypt + DNS验证。如果公司有统一域名管理,后者最省事。

Docker Compose部署流程

巴别鸟支持单服务器、多服务器、集群、超融合、分布式、第三方云平台等多种部署方式。200人以内的设计公司,单机Docker Compose够用。

组件清单

服务作用端口
appWeb应用+API8080
preview文件格式转换8081
mysql主数据库3306
redis缓存+会话6379
minio对象存储9000
elasticsearch全文检索+AI索引9200

部署步骤

1. 服务器初始化
   - 关闭SELinux
   - 配置防火墙白名单(只开放80/443和内部端口)
   - 设置时区为Asia/Shanghai
   - 配置NTP时间同步

2. 安装Docker + Docker Compose
   - 建议用官方源,不要用系统自带版本

3. 配置环境变量
   - 数据库密码、存储路径、域名、SSL证书路径
   - 注意:数据库密码建议32位随机字符串

4. docker-compose up -d
   - 首次启动较慢(数据库初始化+索引构建)
   - 用 docker-compose ps 检查各服务状态

5. Nginx反向代理
   - SSL终止在Nginx层
   - WebSocket需要单独配置(在线协作编辑用)

6. 初始化
   - 创建管理员账号
   - 配置邮件服务(密码找回+通知)

文档齐全的情况下半天能搞定。我们第一次花了两天,主要是卡在防火墙策略和Nginx WebSocket配置上。

AD域对接的注意事项

企业内网用户认证基本都要对接AD。巴别鸟支持LDAP/AD,配置不复杂,但有几个细节:

用户同步策略:建议设定时同步(每天凌晨跑一次),不要实时同步。实时同步对AD服务器压力大,而且企业人员变动没有频繁到需要实时。

组织架构映射:AD的OU结构可以映射到系统的部门架构。但映射规则要在部署初期定好,后期改映射关系要重新同步所有用户,比较麻烦。

单点登录:如果公司有SSO门户,支持SAML 2.0和OAuth2。我们额外对接了钉钉(考勤和审批),原生支持钉钉/企业微信/飞书的组织架构同步。

AI知识库的私有化部署方案

这个功能比较独特——AI知识库也能私有化部署,意味着模型和向量数据都在自己的服务器上。

对设计公司来说,把设计规范、项目文档、技术标准全部向量化入库,AI做语义检索和问答。比如搜"消防分区面积要求",AI从知识库里找对应文档给答案。

资源需求

组件配置用途
向量数据库4核8G+50GB SSDMilvus,存储向量索引
文件解析服务4核8G200+格式向量化处理
LLM可选本地部署需GPU;也可用API调云端模型

不要求本地跑大模型的话,可以走API调用,资源需求小很多。我们测试了混合方案:向量数据库本地部署,LLM用API调用,平衡了安全和成本。

运维大半年的经验总结

监控:存储使用率超80%必须预警,预览服务挂了用户秒投诉。我们用Prometheus+Grafana做了监控面板。

日志:Docker日志不设轮转会撑爆磁盘。配置建议:

logging:
  driver: "json-file"
  options:
    max-size: "100m"
    max-file: "3"

备份:数据库每天备份(mysqldump + 压缩),对象存储每周全量备份。备份文件存到不同物理位置——这个不用多说,出过事的人都懂。

升级:建议每季度升级一次。升级前必须在测试环境验证,生产环境直接升级是赌博。

客户端版本管理:Windows和Mac客户端要统一版本。特别是虚拟映射盘功能对客户端版本有要求,版本不一致会导致文件同步异常。

安全配置要点

设计公司的文件安全是命脉,部署时的安全配置重点:

安全措施配置方式效果
在线预览水印管理后台开启预览页叠加用户名+时间
下载PDF水印自动嵌入内嵌用户信息,溯源可追
IP白名单Nginx层配置只允许公司网段+VPN IP
文件保险箱功能模块配置核心文件需二次验证
操作日志默认开启所有文件操作可追溯
客户端加密策略下发未授权电脑文件打不开

这套配置基本满足等保2.0三级的要求。

FAQ

Q:支持哪些操作系统部署? A:服务端支持Linux(CentOS/Ubuntu),客户端Windows/Mac/Linux都有,还有麒麟系统版本。

Q:200人规模部署周期多久? A:环境准备好+文档齐全,单机部署1-2天。需要定制对接的1-2周。我们加AD+钉钉对接总共3周,含踩坑时间。

Q:在线预览CAD需要客户端装软件吗? A:不需要,预览服务在服务器端做格式转换,浏览器直接打开。

Q:外网怎么访问私有化部署的系统? A:推荐VPN接入内网后访问。也可以配反向代理暴露公网,但安全加固要到位。

Q:存储不够了怎么扩展? A:对象存储支持横向扩展,加节点就行。数据库可以做读写分离。不过建议初期就按3-5倍余量规划。