本地自部署Overleaf
转载自https://www.cnblogs.com/Undefined443/p/18155463 and https://www.yuisblog.com/archives/258/
部署 Overleaf
注意:本教程只适用于 macOS / Linux 操作系统。如果需要在 Windows 上部署 Overleaf,请先安装 WSL,之后在 WSL 中部署 Overleaf。
-
安装 Docker。
-
克隆 Overleaf Toolkit 仓库:
bash1
git clone https://github.com/overleaf/toolkit.git overleaf-toolkit
-
进入
overleaf-toolkit
目录并生成配置文件:bash1
2cd overleaf-toolkit
bin/init -
下载 Overleaf 映像并创建容器:
bash1
bin/up
注意,Overleaf 脚本中使用的命令行工具均为 GNU 版本,而 macOS 原装命令行工具为 BSD 版本。因此 Mac 用户在启动时会报错。请使用 Homebrew 安装相应工具的 GNU 版本(如
coreutils
),然后再尝试安装。
-
接下来让 Overleaf 容器在后台运行:
bash1
bin/start
-
Overleaf 容器启动之后,可以打开 http://localhost/launchpad 注册管理员帐户。之后我们就可以用这个帐户登录 Overleaf 平台。
安装宏包
Overleaf 映像自带的宏包很少,为了编译我们的 LaTeX 文档,往往需要安装其他宏包。
-
在容器运行的状态下进入容器 Shell:
bash1
bin/shell
-
更新并安装全部宏包:
bash1
2
3
4
5
6# 使用中科大镜像源
tlmgr option repository https://mirrors.aliyun.com/CTAN/systems/texlive/tlnet
# 更新已安装的全部宏包,包括 tlmgr 自身
tlmgr update --self --all
# 安装 scheme-full 套件(CTAN 上的全部宏包)
tlmgr install scheme-full
⚠️: 安装全部宏包的时间大约要 40 分钟左右
-
安装依赖包:
bash1
2
3
4
5
6
7
8apt update
apt install ttf-mscorefonts-installer # 安装 Windows 字体
apt install inkscape python3-pygments # 安装 TikZ & Syntax highlighter 依赖
apt install -y latex-cjk-all texlive-lang-chinese texlive-lang-english
apt install -y xfonts-wqy
# 导入 TeX Live 字体
ln -s /usr/local/texlive/2024/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
fc-cache -fsv # 刷新字体缓存 -
你可能还要安装一些中文字体,可以通过下面的命令将你的字体目录
fonts
拷贝到 Overleaf 容器的字体目录:-
打开windows/fonts目录,并打包所有字体,这里假设我们上传的文字文件压缩包为
winfonts.tar.gz
,我们可以打开 shell 到上传路径并运行:bash1
docker cp winfonts.tar.gz sharelatex:/usr/local/share
-
之后我们对
winfonts.tar.gz
进行解压并且移动到系统目录中:bash1
2tar -zxvf winfonts.tar.gz
mv winfonts /usr/share/fonts/ -
最后我们到
usr/share/fonts/winfonts
目录中开始安装我们的字体:bash1
2
3
4$ cd /usr/share/fonts/winfonts
$ mkfontscale
$ mkfontdir
$ fc-cache -fv -
安装完成后我们可以通过指令查看已经安装的中文字体
bash1
fc-list :lang=zh-cn
-
XeLaTex 修复
由于官方提供的 XeLaTex 镜像是破损的(或者说是不能用的),这个在官方的 Github Issue 中也有提到,所以我们需要进入容器对其进行修复:
1 | apt update |
刻录镜像
将容器刻录成镜像,防止重启重建时需要再次重新安装 TexLive 完整版:
1 | cat config/version # 查看版本 |
Troubleshooting
无法安装宏包
在安装宏包时你可能遇到如下错误:
1 | tlmgr: Local TeX Live (2023) is older than remote repository (2024). |
这是映像使用的 TeX Live 版本过低导致的。如果你当前使用的不是最新的 ShareLaTeX 映像,可以使用下面的命令更新映像:
1 | bin/upgrade |
如果你已经在使用最新的 ShareLaTeX 映像,那说明官方还没有给最新的 TeX Live 打映像。你可以设置 TeX Live 使用旧版镜像源,或者更新当前容器中的 TeX Live 版本,也可以自己打一个包含新版 TeX Live 的映像。
-
设置旧版镜像源:
bash1
tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/tex-historic-archive/systems/texlive/2021/tlnet-final/
-
如果你要更新当前容器中的 TeX Live 版本,参见:Linux 更新 TeX Live
-
如果你要自己打映像,参见:自制 ShareLaTeX 映像。
打开 Web 界面时遇到 502 错误
如果遇到 502 错误,可能是端口冲突导致的。进入 config/overleaf.rc
修改一下端口号:
1 | OVERLEAF_PORT=8080 |
部署到服务器上之后无法访问
Overleaf 的默认监听端口是 127.0.0.1:80
,也就是只监听来自本地的 HTTP 访问请求。如果要开放所有 IP 的访问请求,需要修改 config/overleaf.rc
设置:
1 | OVERLEAF_LISTEN_IP=0.0.0.0 |
这样所有地址都可以访问服务器的 80 端口来获取 Overleaf 服务。
无法启动 ShareLaTeX 容器
如果你在运行 bin/up
的过程中遇到这样的错误提示:
1 | Initiating Mongo replica set... |
说明当前配置设置的 Overleaf 版本过低。我们需要使用大版本号为 5 以上的版本。
编辑 config/version
,使用新的版本号替代旧的版本号。你可以在 Docker Hub 上查看最新的版本号:sharelatex | DockerHub
撰写本文时,最新的版本号为:
1 | 5.0.3 |
无法启动 Mongo 容器
如果你在 WSL / macOS 上运行 bin/up
命令时遇到如下错误:
1 | MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017 |
这可能是由于 Mongo 访问绑定挂载目录的 bug 导致的。要解决这个问题,我们需要将 Mongo 和 Redis 的数据存储位置由绑定挂载目录改为命名卷。方法为:创建 config/docker-compose.override.yml
文件,填入以下内容:
1 | # 创建卷 |
然后重新运行 bin/up
。
v1.5.1