Skip to content

jnhu76/TeXDock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📝 TeXDock

基于 Overleaf CE 的中文本地化在线 LaTeX 编辑器

内置完整 TeX Live + CJK 字体 · fontconfig 别名兼容 Windows 字体名 · 开箱即用

Docker License TeX Live Platform Version

本项目基于 Overleaf Community Edition 修改,遵循 AGPL-3.0 许可证发布。


🚀 使用

直接使用预构建镜像,无需自己编译。镜像地址:Docker Hub → fred1653/sharelatex-full

当前版本 0.2.1latest tag 等价于 0.2.1。正式部署推荐使用固定版本号 tag。详见 版本策略

# 使用项目根目录的 docker-compose.yml 启动
docker compose -f docker-compose.yml up -d

# 创建管理员
# 🌐 浏览器访问 http://localhost/launchpad

# 停止
docker compose -f docker-compose.yml down

docker-compose.yml 已配置好 OVERLEAF_SITE_LANGUAGE: "zh-CN"(中文界面),开箱即用。

🆕 新增功能(0.2.1)

  • Admin 管理面板:设置 ADMIN_PRIVILEGE_AVAILABLE: "true" 启用,支持用户管理、项目管理
  • 审计日志:管理面板内置审计日志,记录用户操作和系统事件
  • Track Changes 修订跟踪:默认启用,编辑器工具栏可切换修订模式
  • 审阅面板:支持评论线程、解决讨论、实时同步

⚙️ 配置

编辑 docker-compose.yml 的 environment 部分,按需取消注释:

OVERLEAF_SITE_URL: http://your-server-ip           # 🌍 外网访问时必须设置
ADMIN_PRIVILEGE_AVAILABLE: "true"                   # 🔧 启用管理面板(/admin)
TZ: "Asia/Shanghai"                                 # 🕐 时区(影响时间显示)
MAX_COMPILE_TIMEOUT_MINUTES: "10"                   # ⏱️ 编译超时(分钟)

📧 邮件配置(SMTP)

邮件功能用于注册确认、密码重置、项目邀请等。在 docker-compose.yml 中取消注释以下变量并填入你的 SMTP 信息:

OVERLEAF_EMAIL_FROM_ADDRESS: "noreply@example.com"  # 发件人地址
OVERLEAF_EMAIL_SMTP_HOST: smtp.example.com          # SMTP 服务器
OVERLEAF_EMAIL_SMTP_PORT: 587                       # 端口(465 或 587)
OVERLEAF_EMAIL_SMTP_SECURE: false                   # 465→true, 587→false
OVERLEAF_EMAIL_SMTP_USER: user@example.com
OVERLEAF_EMAIL_SMTP_PASS: your-password

⚠️ TLS 证书问题:如果遇到邮件发送失败(尤其是自建邮件服务器),建议将 OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH 设为 false 或注释掉。

🔐 LDAP 登录(可选)

支持 LDAP 统一认证(OpenLDAP / Active Directory),启用后用户可通过 LDAP 账户登录:

OVERLEAF_LDAP_URL: "ldap://ldap:389"
OVERLEAF_LDAP_SEARCH_BASE: "ou=people,dc=example,dc=com"
OVERLEAF_LDAP_SEARCH_FILTER: "(uid={{username}})"
OVERLEAF_LDAP_BIND_DN: "cn=admin,dc=example,dc=com"
OVERLEAF_LDAP_BIND_CREDENTIALS: "your_ldap_password"

📖 完整配置说明见 部署指南

📦 安装缺少的 LaTeX 宏包

LaTeX 编译报错 File 'xxx.sty' not found 时:

scripts/tlmgr-in-container.sh search xxx.sty       # 🔍 搜索哪个包包含该文件
scripts/tlmgr-in-container.sh install enumitem      # 📥 安装

⚠️ 容器重建后安装的包会丢失。详见 构建指南 → 安装宏包

🧪 测试中文编译

项目提供两个测试文件,上传到 Overleaf 用 XeLaTeX 编译即可验证中文支持:

文件 说明
windows字体测试-1.tex 简单版:宋体 + 仿宋 + 数学公式
windows字体测试-2.tex 完整版:宋体/仿宋/黑体/楷体 + 加粗/斜体 + 数学混排

测试使用 \setCJKmainfont{SimSun} 等 Windows 字体名,公开镜像通过 fontconfig 别名映射到开源替代字体,无需安装真实 Windows 字体即可编译。

🔤 安装私有字体

公开镜像通过 fontconfig 别名兼容 Windows 字体名(SimSun → Noto Serif CJK SC)。如需真实 Windows 字体:

# 临时导入(容器重建后丢失)
docker cp fonts.zip sharelatex:/tmp/fonts.zip
docker exec sharelatex import-private-fonts-zip /tmp/fonts.zip

# 🔒 或构建私有字体镜像(永久)
docker build -f server-ce/Dockerfile-windows-fonts \
  --build-arg BASE_IMAGE=fred1653/sharelatex-full:latest \
  -t fred1653/sharelatex-full-private:latest .

📊 功能对比

功能 TeXDock Overleaf CE Overleaf Server Pro
中文界面 (zh-CN)
完整 TeX Live
Windows 字体兼容
Track Changes 修订跟踪
审阅面板
评论线程
审计日志
Admin 管理面板
LDAP 登录
SMTP 邮件
沙箱编译
SSO / SAML / OIDC

🔨 构建

镜像分三级逐层构建,给后续维护者参考:

Dockerfile-base  →  sharelatex-base    →  sharelatex       →  sharelatex-full
  Ubuntu+Node.js     + Overleaf CE代码     + 完整TeX Live+字体
VERSION=$(cat VERSION)

docker build -f server-ce/Dockerfile-base \
  --build-arg TEXDOCK_VERSION=$VERSION \
  -t fred1653/sharelatex-base:$VERSION -t fred1653/sharelatex-base:latest .
docker build -f server-ce/Dockerfile \
  --build-arg TEXDOCK_VERSION=$VERSION \
  --build-arg OVERLEAF_BASE_TAG=fred1653/sharelatex-base:$VERSION \
  -t fred1653/sharelatex:$VERSION -t fred1653/sharelatex:latest .
docker build -f server-ce/Dockerfile-full \
  --build-arg TEXDOCK_VERSION=$VERSION \
  --build-arg BASE_IMAGE=fred1653/sharelatex:$VERSION \
  -t fred1653/sharelatex-full:$VERSION -t fred1653/sharelatex-full:latest .

📖 完整构建说明、字体策略、私有字体镜像见 构建指南


💻 开发

修改 Web 前端/后端代码时,用 docker-compose.dev.web.yml 挂载本地源码:

docker compose -f docker-compose.yml -f docker-compose.dev.web.yml up -d

这会将 ./services/web./libraries 挂载进容器,修改后重启 web 服务即可验证:

# 🎨 前端修改需重新打包
docker exec sharelatex bash -lc 'cd /overleaf/services/web && npm run webpack:production'

# 🔄 重启 web 服务
docker exec sharelatex bash -lc 'sv restart /etc/service/web-overleaf'

功能稳定后通过 Dockerfile-full-web 固化到镜像:

docker build -f server-ce/Dockerfile-full-web -t fred1653/sharelatex-full:latest .
docker compose up -d --force-recreate

📖 完整开发流程、调试方法、镜像固化见 Web 开发流程


📚 文档

场景 文档
🚀 部署使用 部署指南 — 系统要求、配置详解、启动初始化、常见问题
🔨 镜像构建 构建指南 — 三级构建、字体策略、宏包安装
💻 Web 开发 Web 开发流程 — volume overlay、调试、镜像固化
📌 版本策略 版本策略 — 版本号规则、Docker tag 策略

📂 目录结构

docker-compose.yml                # 🚀 生产配置
docker-compose.dev.web.yml        # 💻 开发 overlay(挂载 web 源码)

scripts/tlmgr-in-container.sh     # 📦 在运行中的容器内安装 TeX Live 宏包

server-ce/
  Dockerfile-base                 # 1️⃣ Ubuntu + Node.js + TeX Live basic
  Dockerfile                      # 2️⃣ Overleaf CE 应用代码
  Dockerfile-full                 # 3️⃣ 完整 TeX Live + 字体 + 辅助脚本
  Dockerfile-full-web             # 3️⃣ web 代码覆盖(日常 rebuild)
  Dockerfile-windows-fonts        # 🔒 私有字体镜像(本地构建使用)

🗺️ 路线图

0.2.x

  • 沙箱编译支持(Sandboxed Compiles)
  • 管理面板功能增强

0.3.x

  • 认证改进(SSO 研究)
  • 企业级部署特性

未来

  • 更好的可观测性(日志、监控)
  • 升级自动化工具
  • SAML / OIDC 集成

不承诺具体交付日期。

About

Compatible with Docker-based ShareLaTeX / Overleaf Community Edition deployments.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors