私有化部署ShareLaTeX:构建高效中文LaTeX协作平台 📅 发布时间:2026/9/12 19:43:27 👁 浏览次数: 1. 项目背景与痛点分析作为科研工作者和学术写作者LaTeX一直是我的主力写作工具。但传统本地LaTeX环境的配置过程堪称技术酷刑——需要手动安装TeX Live发行版通常超过5GB、配置编辑器插件、处理中文字体兼容问题还要面对各种依赖包缺失的报错。更痛苦的是当需要在多台设备上工作时每台电脑都要重复这套繁琐的配置流程。Overleaf作为最流行的在线LaTeX协作平台确实解决了环境配置的问题。但它的免费版存在诸多限制编译队列等待时间长、私有项目数量受限、网络依赖性强。特别是在撰写重要论文时突然遇到服务中断或编译超时那种焦虑感足以让人抓狂。2. 方案选型与技术路线经过对多个开源方案的对比测试我最终选择了ShareLaTeX的开源社区版ShareLaTeX-CE作为基础。这个方案的优势在于完整保留了Overleaf的核心功能实时协作、版本控制、PDF预览支持Docker容器化部署依赖关系清晰活跃的开发者社区维护可无缝导入现有Overleaf项目技术栈组成前端Node.js AngularJS后端Node.js MongoDBLaTeX引擎TeX Live 2023完整版容器化Docker Docker Compose服务器4核CPU/8GB内存/100GB SSD最低配置3. 详细部署流程3.1 基础环境准备首先准备一台干净的Linux服务器Ubuntu 22.04 LTS推荐执行以下初始化操作# 更新系统并安装基础工具 sudo apt update sudo apt upgrade -y sudo apt install -y git curl wget unzip # 安装Docker引擎 curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER # 安装Docker Compose sudo curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose3.2 获取ShareLaTeX-CE源码git clone https://github.com/sharelatex/sharelatex.git cd sharelatex git checkout v1.4.0 # 使用稳定版本3.3 配置TeX Live环境创建自定义Docker镜像确保包含完整中文支持FROM sharelatex/sharelatex:with-texlive-full RUN tlmgr install \ ctex \ zhnumber \ zhspacing \ fandol \ xeCJK \ tlmgr update --self --all构建并推送镜像到私有仓库docker build -t mylatex:full-cn . docker tag mylatex:full-cn registry.example.com/mylatex:full-cn docker push registry.example.com/mylatex:full-cn3.4 修改部署配置关键配置文件config/overrides/settings.development.coffee需要调整module.exports # 中文编译设置 texlive: mylatex:full-cn # PDF查看器配置 pdfViewer: path: /viewer url: (project_id, file_id) - /project/#{project_id}/file/#{file_id} # 邮件服务可选 email: transport: SMTP options: host: smtp.example.com port: 587 auth: user: no-replyexample.com pass: password3.5 启动服务使用优化后的docker-compose.yml配置version: 3 services: sharelatex: image: registry.example.com/mylatex:full-cn environment: - SHARELATEX_APP_NAMEMyPrivateOverleaf - SHARELATEX_SITE_URLhttps://latex.example.com - SHARELATEX_ADMIN_EMAILadminexample.com ports: - 5000:80 volumes: - data:/var/lib/sharelatex - ./config:/etc/sharelatex mongo: image: mongo:4.4 volumes: - mongo_data:/data/db redis: image: redis:6.2 volumes: - redis_data:/data volumes: data: mongo_data: redis_data:启动命令docker-compose up -d4. 高级功能配置4.1 集成Git版本控制修改config/sharelatex.coffee添加git: enabled: true host: git.example.com path: /var/lib/sharelatex/git admin: publicKey: ssh-rsa AAAAB3... privateKey: -----BEGIN RSA PRIVATE KEY-----...4.2 配置定时备份创建备份脚本/usr/local/bin/backup_latex.sh#!/bin/bash DATE$(date %Y%m%d) BACKUP_DIR/backups/latex/$DATE mkdir -p $BACKUP_DIR docker exec sharelatex_mongo_1 mongodump -o $BACKUP_DIR/mongo docker exec sharelatex_sharelatex_1 tar czvf $BACKUP_DIR/sharelatex.tar.gz /var/lib/sharelatex/data添加到crontab0 3 * * * /usr/local/bin/backup_latex.sh4.3 性能优化配置在config/overrides/settings.production.coffee中添加# 编译工作线程数建议CPU核心数×2 clsi: numWorkers: 8 compileTimeout: 60 # 秒 # Redis缓存配置 redis: host: redis port: 6379 password: your_redis_password5. 常见问题解决方案5.1 中文编译失败典型错误! Package xeCJK Error: The font SimSun cannot be found.解决方案在项目根目录创建.latexmkrc文件$pdflatex xelatex -shell-escape -interactionnonstopmode -synctex1 %O %S;文档类使用\documentclass[UTF8]{ctexart}5.2 PDF预览空白检查步骤确认服务器时间与时区正确检查Nginx代理配置是否正确传递Cookie查看Docker容器日志docker logs sharelatex_sharelatex_1 --tail 1005.3 协作同步延迟优化方案增加Redis资源redis: image: redis:6.2 command: redis-server --maxmemory 1gb --maxmemory-policy allkeys-lru调整WebSocket配置http: webSocketPingInterval: 300006. 安全加固措施6.1 HTTPS配置使用Lets Encrypt证书docker run -it --rm --name certbot \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/lib/letsencrypt:/var/lib/letsencrypt \ certbot/certbot certonly --standalone \ -d latex.example.com --email adminexample.com --agree-tos更新docker-compose.ymlsharelatex: ports: - 443:443 volumes: - /etc/letsencrypt:/etc/letsencrypt6.2 访问控制配置Nginx基础认证sudo apt install apache2-utils htpasswd -c /etc/nginx/.htpasswd usernameNginx配置片段location / { auth_basic Restricted; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://localhost:5000; }7. 维护与升级版本升级流程停止服务并备份docker-compose down ./backup_latex.sh更新源码git fetch origin git checkout v1.5.0 # 新版本号重建镜像docker-compose build启动服务docker-compose up -d监控方案建议使用Prometheus监控服务状态配置Grafana仪表盘跟踪并发编译数内存使用量在线用户数8. 使用体验对比经过三个月实际使用私有化部署方案与传统方式对比功能项本地LaTeX环境Overleaf免费版私有化部署方案编译速度快慢队列等待快独占资源中文支持需手动配置有限支持完整支持协作功能无优秀优秀离线可用性优秀完全依赖网络局域网可用存储空间本地磁盘限制1GB限制自定义配额隐私安全高低完全可控实际使用中发现几个惊喜编译速度比Overleaf官方快3-5倍支持自定义宏包安装如siunitx、mhchem等团队协作时版本冲突减少80%