overleaf部署

  • 如果你只有一台电脑,我不建议你部署 Overleaf,老老实实去用 TexLive. 如果你有两台电脑或者有云服务器,我强烈推荐.
  • Overleaf 有 Community EditionServer Pro 两种,我们用免费的社区版
  • 官方文档地址

https://github.com/overleaf/toolkit/blob/master/doc/quick-start-guide.md 
  • chatGPT 是一个好帮手

Prerequisite

  • 服务器硬件要求
  • 内存越多越好,最少4g
  • 硬盘空间,越多越好,最少 15g 空闲空间
服务器的内存都很贵,你可以用硬盘当虚拟内存,变相扩展内存
  • docker 需要提前安装

演示使用的版本


docker 27.3.1
  • 保证网络可以正常拉取 docker 镜像和 github 仓库,或者有等价的替代方案.
  • 会基本的 linux 和 docker 操作

这四项搞不定,不必往下看,浪费时间.

测试日志(2025.09.19)

这里很无聊,可以直接跳过不看

本文首发于 2024年.

2025.05.19 进行了第五次测试安装.

一切正常,同时对文章进行了细微调整.

测试编译了 《Attention Is All You Need》,几乎是秒编译

arXiv 地址 https://arxiv.org/abs/1706.03762

团队部署建议

个人用户,这部分直接跳过,这是给有团队部署需求的人看的 我并非专业的运维,这里只是一点点建议

预算底线

overleaf团队价格,每人每年233刀

你们的预算,不应该超过这个,除非是为了数据安全考虑

硬件资源

每个人最少应该分配一个 cpu 核心,1GB内存,1-2G存储

overleaf 本体运行,最少应该2cpu核心,4GB+内存

编译应该需要一些硬盘空间当缓存,最起码每三个人再多加5g的空闲空间,用于缓存

内网部署 VS 云服务器

国内服务器贵的就是带宽,流量,电费

根据团队人数评估一下,你们需要硬件资源

评估装机的钱和每月电费

再去看云服务厂商提供的同等机型的每月租金(云服务器,有不带,带宽的机型)

假设你们有运维能力,就是使用上没问题(​如果有,这一项也得考虑)

综合下来你们觉得可行,那就内网装机,如果不行那就云服务器

内网部署,最大的成本是电费

云服务器,最大的成本是流量

公网访问,先用那个流量计费(带宽可以拉满到100MB大小,但只根据流量来收费)

用户少的情况下,一般这个是最划算的

跑一到三个月,看一下你们每个月开销到底有多少

根据开销再作调整

安装

下载 overleaf-toolkit

overleaf-toolkit 是官方提供的服务器搭建项目,简单易用

git clone --depth=1 https://github.com/overleaf/toolkit.git ./overleaf-toolkit && cd ./overleaf-toolkit

overleaf-toolkit 目录下,你只需要关注三个地方

  • doc 目录下是更详细的文档,几乎所有问题,都可以在这里找到答案.
  • config 目录用于配置项目
  • bin 目录,存放一些命令
NB 随着版本更迭,这个博客的内容可能会失效,所以一定要浏览官方文档 最好,先用虚拟机测试搭建

生成配置文件


# 运行命令,生成配置文件
bin/init

# 检查
bin/doctor

# 此时,会在 config 目录下生成三个文件
# 一般情况下,我们只需要更改 overleaf.rc 就行了
overleaf.rc  variables.env  version

修改配置


# 配置文件 overleaf.rc 根据你的需求修改

# 主机数据文件夹,存放数据,用于持久化
OVERLEAF_DATA_PATH=/home/hall/apps/overleaf/data

# 0.0.0.0 表示接受来自任意 ip 的访问
OVERLEAF_LISTEN_IP=0.0.0.0

# 服务端口
OVERLEAF_PORT=5207

其余的文件都不需要改动

防火墙

把该放开的端口都放开

启动

bin/up​ 是对 docker-compose 命令的封装,它俩的用法是一样的


bin/up -d # 后台运行
bin/docker-compose -d
bin/up # 临时启动

它会创建三个容器,一个 docker 网络


docker ps -a
CONTAINER ID   IMAGE                         COMMAND                  CREATED          STATUS                   PORTS                  NAMES
13a5d9a62ffd   sharelatex/sharelatex:5.2.1   "/sbin/my_init"          32 minutes ago   Up 7 minutes             0.0.0.0:5207->80/tcp   sharelatex
56b2f2e95ad1   redis:6.2                     "docker-entrypoint.s…"   32 minutes ago   Up 8 minutes             6379/tcp               redis
93fe60ddccee   mongo:6.0                     "docker-entrypoint.s…"   33 minutes ago   Up 8 minutes (healthy)   27017/tcp              mongo


docker network ls
NETWORK ID     NAME               DRIVER    SCOPE
4f1fdade7e94   bridge             bridge    local
d147463e297d   host               host      local
343b1468a006   none               null      local
4a117aceb573   overleaf_default   bridge    local

安装完整的 texlive

这一步,可能会花费大量的时间,请耐心等待

社区版使用的 texlive 是最小安装的 texlive ,我们需要将其升级到完整版。

在这里找一个 CTAN 镜像源https://ctan.org/mirrors/

选一个你认为最快的,同时能用的源


# 进入容器
bin/shell
# 查看版本
tlmgr --version
# 更换镜像源,我用腾讯云的镜像
tlmgr option repository http://mirrors.cloud.tencent.com/CTAN/systems/texlive/tlnet
# 查看
tlmgr option show repository
# 先更新
tlmgr update --self --all 

# 安装完整的包,可能要花挺长一段时间,尽量选速度快的源
tlmgr install scheme-full

# 重启容器
bin/stop 
bin/start

如果出现问题,先排查网络


# 假如你用的是 mirrors.tuna.tsinghua.edu.cn
curl -I https://mirrors.tuna.tsinghua.edu.cn
# 响应结果中 200 是正常的

HTTP/2 200 
server: nginx/1.22.1
date: Thu, 18 Sep 2025 17:36:25 GMT
content-type: text/html
content-length: 22350
last-modified: Tue, 09 Sep 2025 11:34:49 GMT
vary: Accept-Encoding
etag: "68c010d9-574e"
strict-transport-security: max-age=31536000
x-tuna-mirror-id: neomirrors
accept-ranges: bytes

此处遇到的问题(2025.03.27)

2025.05.04 overleaf 已经将容器更新到 2025 ,此处 bug 暂时消除,但我想明年,这里应该还会有 bug.

远程仓库是2025年的版本,容器里的texlive是2024年的


tlmgr update --self --all

tlmgr: Local TeX Live (2024) is older than remote repository (2025).
Cross release updates are only supported with
  update-tlmgr-latest(.sh/.exe) --update
See https://tug.org/texlive/upgrade.html for details.

升级 tlmgr 就可以了


# 进入容器
cd ~

# 在你选择的镜像站里,找到升级脚本
wget http://mirrors.cloud.tencent.com/CTAN/systems/texlive/tlnet/update-tlmgr-latest.sh

chmod +x update-tlmgr-latest.sh
./update update-tlmgr-latest.sh

登录

先访问 http://ip:port/launchpad​ 创建管理员 再访问 http://ip:port/login 登录


# 比如
http://111.211.66.77:5207/launchpad
http://111.211.66.77:5207/login
没启用 https ,因为仅仅只是自己一个人用,也可以再折腾折腾,启用 https

用户管理

第一次登录,会提示你注册管理员账号.

用户管理面板链接,类似下面这样


http://111.211.66.77:5207/admin/register

输入注册用户的邮箱,点击注册,就会弹出一个设置密码的链接.

把链接修改成下面这样,就可以让用户访问设置了.


http://111.211.66.77:5207/user/activate?token=dd561853aed8b32b5118f38689ff247b3f25741ec9f997bdb15c11c40c4ccb7d&user_id=6778b95d389ef2099e34f319

这样用户账号,就注册完毕了.

可能有用的 docker 命令


docker stop $(docker ps -q)
docker network ls
docker system prune -a --volumes
# 清理构建缓存
docker builder prune 
rm -rf /home/hall/apps/overleaf/data

比如卸载服务

卸载 overleaf 服务


bin/stop 
# 所有不使用的 dangling 资源都会被删除,谨慎操作
docker system prune -a --volumes 
# 清理构建缓存
docker builder prune

改进

  • 我并没有用 https ,为了安全,你应该使用 https,尤其是在公网环境(​重要
  • 强烈推荐通过 nginx reverse proxy 容器启用 https
  • 社区版缺少了很多有用的功能,比如 github 导入,你可以购买 pro 版,获得这个特性

PS 如果文档对你所有帮助,还望给个三连