前言
由于目前撰写论文涉及到了跨高校的团队合作,故而在基于之前文章VScode 整合 MikTex 论文写作以及 git 协同的基础上,寻找其他更高效的论文协作方案。免费版的 overleaf 在高峰期或者编译大篇幅论文时经常编译失败,在师兄的提醒下,发现该项目可以本地部署,进而记录本篇文章。撰写文章时,overleaf 版本为 5.4.0
。
一、安装
整体安装流程,在 overleaf 提供的官方安装工具overleaf-toolkit中都有较为详细的描述。但由于国内网络环境问题,建议通过代理手段进行安装。
1.1 代理设置
1.1.1 git 配置代理
官方工具源码保存在 github 中,国内访问存在不稳定性,可以通过配置代理链接进行访问。可以参考该网站GitHub 文件加速代理。
bash1git clone https://gh-proxy.com/https://github.com/overleaf/toolkit.git ./overleaf-toolkit
1.1.2 docker 配置代理
官方工具目前通过容器方式进行本地部署,需要配置 docker 镜像以提升容器拉取速度。具体可用镜像站可参考国内 Docker 服务状态 & 镜像加速监控进行部署。相关脚本命令如下:
bash1234567891011# 将内容写入 /etc/docker/daemon.json 文件,root 用户可以去掉 sudo # 配置 Docker 镜像,使用多个镜像源来提高镜像下载速度 echo '{ "registry-mirrors": [ "https://docker.1ms.run", "https://docker.1panel.live", "https://docker.ketches.cn" ] }' | sudo tee /etc/docker/daemon.json # 重启 Docker 服务以使配置生效 sudo systemctl restart docker
1.2 安装设置
- 首先进入
overleaf-toolkit
目录,执行bin/init
命令,在config
目录生成基本配置文件。
bash12cd ./overleaf-toolkit bin/init
- 由于默认使用的是免费社区版,部分 Pro 版本功能无法使用,需要对配置文件
config/overleaf.rc
进行修改。具体修改内容如下:
YML123456789## 改为自己需要的名称,默认会显示在docker镜像列表中 PROJECT_NAME=example ## 改为自己服务器的IP以及对外公开的端口,由于本服务直接部署在内容,无需ssl,所以没有对nginx部分进行配置 OVERLEAF_LISTEN_IP=YOUR_IP OVERLEAF_PORT=YOUR_PORT ## 关闭Sibling Containers,该技术为pro版本独有,但是在默认配置文件中默认启用了。 SIBLING_CONTAINERS_ENABLED=false
- 同时为了优化页面显示,需要对
config/variables.env
文件进行修改。具体修改内容如下:
YML1234567891011## 默认的overleaf名称,会显示在浏览器标题中 OVERLEAF_APP_NAME="Example Team's Overleaf" ## 默认的overleaf名称,会显示在导航栏中 OVERLEAF_NAV_TITLE="Example Team's Overleaf" ## 默认的URL链接地址,要与overleaf.rc的修改保持一致,以便后续用户添加 OVERLEAF_SITE_URL=http://YOUR_IP:YOUR_PORT ## 默认的overleaf显示语言,手动添加即可,配置文件无该项 OVERLEAF_SITE_LANGUAGE=zh-CN
1.3 安装及优化
1.3.1 启动 overleaf 服务
在 overleaf-toolkit
目录执行如下命令。
BASH12345## 第一次启动,可以使用该命令,后续若修改配置,也需要执行一次该命令 bin/up ## bin/up 命令会将输出定向到命令行中,在确认系统正常运行后,可改用如下命令,以正常容器模式启动 bin/start
1.3.2 优化环境
- 安装完整版本 latex。
默认的 overleaf 中,使用的 latax 不是完整版本,需要进入容器并执行更新,在 overleaf-toolkit
目录执行如下命令。
BASH123456789101112131415## 进入容器 bin/shell ## 进入容器后,通过如下命令安装完整latex ## 切换国内更新源 tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/tlpretest ## 安装完整包 tlmgr update --all tlmgr install scheme-full ## (可选)安装字库 apt install -y latex-cjk-all texlive-lang-chinese texlive-lang-english ## 退出容器 exit
2.(可选)安装中文字体。
overleaf 的默认字体,对中文支持较差,可以通过添加字库的方式进行优化。首先可以从 Windows 系统的字库目录 C:\Windows\Fonts
中复制需要的字体文件,打包为 fonts.tar.gz
压缩包并上传到服务器中。
shell12345## 上传到服务器步骤省略,请参考scp相关文档,假设文件上传至overleaf-toolkit目录 cd overleaf-toolkit ## 通过docker命令复制文件至容器中 docker cp fonts.tar.gz sharelatex:/overleaf
然后通过如下命令进行安装。
shell12345678910111213141516171819## 进入容器 bin/shell ## 解压字库文件 tar -zxvf fonts.tar.gz -C /usr/share/fonts/winFonts/ ## 删除字库文件以节省空间 rm fonts.tar.gz ## 更新字库 ## 进入字库所在目录 cd /usr/share/fonts/winFonts/ ## 更新字库 mkfontscale mkfontdir ## 刷新字库 fc-cache -fv ## 测试 fc-list :lang=zh-cn
- (可选)持久化镜像
以上的所有优化操作都是针对容器实例进行的,一旦更新配置重新执行 up 命令,就会丢失,所以需要进行持久化操作。
BASH12345678910111213## 获取容器的CONTAINER ID docker ps | grep "sharelatex/sharelatex" ## 新建镜像 docker commit <CONTAINER ID> 5.4.0-with-texlive-full:latest ## 修改版本 ## 注意,overleaf默认脚本仅识别 `版本号-with-texlive-full` 与 `版本号` 这两种版本 echo "5.4.0-with-texlive-full" > config/version ## 重启镜像 bin/up bin/start
二、使用
在网站部署完成以后,可以访问 http://IP:PORT/launchpad
进入管理页面,注册管理员用户。后续用户注册时,由管理员账号在 http://IP:PORT/admin/register
页面手动添加。(若未修改 OVERLEAF_SITE_URL,此处生成的注册链接会默认为 localhost,请自行前缀域名)
2.1 对比
本地部署与在线服务相比,编译效率确实提升,但是也缺少了一些协同功能。个人总结如下:
功能 | 本地部署 | 在线服务 |
---|---|---|
评论 | ❌ | ✅ |
引文自动检索 | ❌ | ✅ |
聊天 | ✅ | ✅ |
编译效率 | ✅✅✅ | ✅ |
远程协同 | 自行端口映射至公网 | ✅ |
总体而言,如果单纯以论文的编译效率为标准,本地部署是更好的选择,也更稳定,不会出现类似于 顶会截稿前服务崩溃
的问题,数据保存在本地也更安全。但是只是简单的体验或者需要远程的协同,还是在线版本更为合适。