news 2026/4/23 22:40:45

[特殊字符]️ 深度解析我的 Overleaf 私有化部署:一份稳定、高兼容性的 `docker-compose.yaml`

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[特殊字符]️ 深度解析我的 Overleaf 私有化部署:一份稳定、高兼容性的 `docker-compose.yaml`

个稳定、可维护的 Overleaf 私有部署,其灵魂就在于如何配置好三个核心服务:ShareLaTeX 应用、MongoDB 数据库和 Redis 缓存。

我这份配置不仅解决了AVX 兼容性问题,还通过一系列环境变量优化了使用体验和编译稳定性。

services:

sharelatex:

restart: always

# image: sharelatex/sharelatex:4.2.3

image: xuhe-sharelatex-ce:latest # custom image(include new texlive)

container_name: leaf-sharelatex

depends_on:

mongo:

condition: service_healthy

redis:

condition: service_started

ports:

- 8008:80

links:

- mongo

- redis

stop_grace_period: 60s

volumes:

- ./sharelatex:/var/lib/sharelatex

environment:

SHARELATEX_APP_NAME: XuHe's Overleaf

SHARELATEX_MONGO_URL: mongodb://mongo/sharelatex

# Same property, unfortunately with different names in

# different locations

SHARELATEX_REDIS_HOST: redis

REDIS_HOST: redis

ENABLED_LINKED_FILE_TYPES: "project_file,project_output_file"

# Enables Thumbnail generation using ImageMagick

ENABLE_CONVERSIONS: "true"

# Disables email confirmation requirement

EMAIL_CONFIRMATION_DISABLED: "true"

# temporary fix for LuaLaTex compiles

# see https://github.com/overleaf/overleaf/issues/695

TEXMFVAR: /var/lib/sharelatex/tmp/texmf-var

mongo:

restart: always

image: mongo:4.4

container_name: leaf-mongo

command: "--replSet overleaf"

expose:

- 27017

volumes:

- ./mongo:/data/db

healthcheck:

test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet

interval: 10s

timeout: 10s

retries: 5

redis:

restart: always

image: redis:6.2

container_name: leaf-redis

expose:

- 6379

volumes:

- ./redis:/data

一、核心服务总览

我的部署方案中包含以下三个服务:

服务名称 角色 关键版本(兼容性考量)

sharelatex 主应用服务 自定义镜像 (xuhe-sharelatex-ce:latest)

mongo 数据存储服务 mongo:4.4 (为兼容无 AVX 指令集 CPU)

redis 缓存与实时数据服务 redis:6.2

二、ShareLaTeX 应用配置详解 (sharelatex Service)

sharelatex 服务是整个部署的核心。这里我们不仅指定了自定义镜像,还通过环境变量进行了大量功能定制。

1. 启动与依赖

配置项 值 核心作用

image xuhe-sharelatex-ce:latest 使用我们自定义的完整 TeX Live 镜像。

restart always 保证服务崩溃或重启后自动恢复运行。

depends_on mongo (healthy), redis (started) 确保 ShareLaTeX 只有在数据库和缓存服务准备就绪后才启动。

2. 核心环境变量 (environment)

以下环境变量是定制 Overleaf 行为的关键,我重点介绍了几个提高用户体验和稳定性的配置:

环境变量 值 目的与说明

SHARELATEX_APP_NAME XuHe's Overleaf 应用名称。自定义浏览器 Tab 和登录页面的名称,增强私有化标识。

SHARELATEX_MONGO_URL mongodb://mongo/sharelatex MongoDB 连接。使用 Docker Compose 内部服务名 mongo 进行连接。

EMAIL_CONFIRMATION_DISABLED "true" 跳过邮件验证。默认情况下,新用户注册需要邮件验证。将其设置为 true 可直接登录使用,非常适合内部或私有部署。

ENABLE_CONVERSIONS "true" 启用图片/缩略图转换。允许 Overleaf 使用 ImageMagick 进行图片处理和生成 PDF 缩略图。

TEXMFVAR /var/lib/sharelatex/tmp/texmf-var LuaLaTeX 兼容性修复。这是一个针对特定版本 LuaLaTeX 编译问题的临时修复,提升编译稳定性。

ENABLED_LINKED_FILE_TYPES "project_file,..." 启用外部文件类型链接(高级)。用于控制哪些文件类型可以被链接或引用。

3. 数据持久化与网络

端口映射 (ports): 我将容器内部的 80 端口映射到宿主机的 8008 端口 (8008:80),方便通过浏览器访问。您可以根据需要修改 8008。

数据卷 (volumes): ./sharelatex:/var/lib/sharelatex。这是至关重要的配置,它将容器内的项目数据目录持久化映射到宿主机上的 ./sharelatex 文件夹,确保项目文件不会丢失。

三、数据库和缓存服务配置

1. MongoDB (mongo Service)

版本 (image): 选择了 mongo:4.4。这是为了规避最新版 MongoDB 对 AVX 指令集的强制依赖,以确保在旧硬件上顺利运行。

副本集 (command): "--replSet overleaf"。这是 Overleaf 运行所必需的配置,用于启用 MongoDB 的副本集功能。启动后,还需要执行一次 docker exec 命令进行初始化(详见我的 README)。

健康检查 (healthcheck): 保证 ShareLaTeX 服务只在 MongoDB 确认可以连接并工作正常时才启动,提升启动可靠性。

数据卷 (volumes): ./mongo:/data/db,确保数据库数据持久化。

2. Redis (redis Service)

版本 (image): redis:6.2,一个稳定且功能完整的 Redis 版本。

作用: Redis 主要用于 Overleaf 的实时数据、会话管理和缓存,是实现协同编辑功能的基础。

数据卷 (volumes): ./redis:/data,用于持久化 Redis 的持久化数据。

四、结语

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:35:20

Milkdown编辑器终极指南:如何选择最适合你的Markdown解决方案

Milkdown编辑器终极指南:如何选择最适合你的Markdown解决方案 【免费下载链接】milkdown 🍼 Plugin driven WYSIWYG markdown editor framework. 项目地址: https://gitcode.com/GitHub_Trending/mi/milkdown 项目亮点速览 ✨ Milkdown是一款革命…

作者头像 李华
网站建设 2026/4/23 9:51:35

Gaea Editor 问题解决指南:从零开始掌握网页设计工具

Gaea Editor 是一款智能的网页设计工具,让开发者能够在浏览器中直观地设计网站。对于初次接触的新手来说,掌握这款网页设计工具可能会遇到一些常见问题,本指南将为您提供实用的问题解决方案。 【免费下载链接】gaea-editor Design websites i…

作者头像 李华
网站建设 2026/4/23 11:11:11

机场安检危险物品检测与分类_VFNet模型实现与性能优化

本数据集为机场安检X光图像数据集,旨在通过计算机视觉技术实现机场安检过程中危险物品的自动检测与分类。该数据集包含200张X光安检图像,采用YOLOv8格式标注,涵盖了四种主要类别:电池(battary)、液体(liquide)、机器(machine)以及…

作者头像 李华
网站建设 2026/4/23 7:40:49

ANSYS Fluent用户自定义函数开发指南(2020R2版)技术文档解析

ANSYS Fluent用户自定义函数开发指南(2020R2版)技术文档解析 【免费下载链接】ANSYSFluentUDFManual2020R2官方手册资源下载 本开源项目提供了ANSYS Fluent UDF Manual (2020R2) 的官方PDF文件下载,专为希望在Fluent中进行自定义编程的用户设…

作者头像 李华
网站建设 2026/4/23 11:18:47

探索NEMA_p GPU:Verilog/SystemVerilog实现之路

NEMA_p GPU NEMA | dc 2022 verilog/systemverilog实现最近在硬件设计的世界里遨游,碰到了NEMAp GPU这个挺有意思的玩意儿。NEMAp GPU听起来就感觉很有科技感,它在图形处理方面应该有着独特的优势。今天就来和大家唠唠怎么用Verilog/SystemVerilog来实现…

作者头像 李华
网站建设 2026/4/23 12:35:27

禅城种植牙哪家强?靠谱机构这样选

禅城种植牙哪家强?靠谱机构这样选随着口腔健康意识的提升,种植牙因其媲美真牙的稳固性和舒适度,已成为众多缺牙市民的首选修复方案。然而,面对禅城区内众多的口腔医疗机构,如何甄别技术实力、选择一家真正靠谱的种植牙…

作者头像 李华