本地部署Overleaf

本地部署Overleaf

基于 docker 在本地部署 Overleaf 实例以加速编译并提高网页传输速率。

基于 overleaf-toolkit 部署

按照官网流程配置即可,其中包括入门深入配置。

以下提供我的部署实例文件作为参考,本配置文件是基于 sharelatex/sharelatex:5.0.3 修改的。依据官方流程生成的最新版配置文件,在跟版本无关的地方修改自身配置即可:

overleaf.rc

#### Overleaf RC ####

PROJECT_NAME=overleaf

# Sharelatex container
# Uncomment the OVERLEAF_IMAGE_NAME variable to use a user-defined image.
OVERLEAF_IMAGE_NAME=sharelatex/sharelatex
OVERLEAF_DATA_PATH=/opt/overleaf/data_dir/overleaf  # 这里是主机本地的目录位置
SERVER_PRO=false
OVERLEAF_LISTEN_IP=127.0.0.1
OVERLEAF_PORT=5245  # 修改端口通过caddy转发实现https

# Sibling Containers
SIBLING_CONTAINERS_ENABLED=false
DOCKER_SOCKET_PATH=/var/run/docker.sock

# Mongo configuration
MONGO_ENABLED=true
MONGO_DATA_PATH=/opt/overleaf/data_dir/mongo  # 这里是主机本地的目录位置
MONGO_IMAGE=mongo:5.0

# Redis configuration
REDIS_ENABLED=true
REDIS_DATA_PATH=/opt/overleaf/data_dir/redis  # 这里是主机本地的目录位置
REDIS_IMAGE=redis:6.2

variables.env

这里给出带邮件配置的样例:

OVERLEAF_APP_NAME="Overleaf Instance at GMK-M5"

ENABLED_LINKED_FILE_TYPES=project_file,project_output_file

# Enables Thumbnail generation using ImageMagick
ENABLE_CONVERSIONS=true
OVERLEAF_SITE_LANGUAGE=zh-CN  # 配置中文网站环境
# Disables email confirmation requirement
EMAIL_CONFIRMATION_DISABLED=false

OVERLEAF_SITE_URL=https://overleaf.hlmg.tech
OVERLEAF_NAV_TITLE="Overleaf at GMK-M5"
# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.png
OVERLEAF_ADMIN_EMAIL=admin@hlmg.tech

OVERLEAF_LEFT_FOOTER=[{"text":"Hosted on <a href=\"https://overleaf.hlmg.tech\">overleaf.hlmg.tech</a>"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Contanct <a herf=\"mailto://admin@hlmg.tech\">manager</a> for help."}]

OVERLEAF_EMAIL_FROM_ADDRESS=notice@hlmg.tech  # 依据自己的邮件服务器配置

OVERLEAF_EMAIL_SMTP_HOST=mail.hlmg.tech  # 依据自己的邮件服务器配置
OVERLEAF_EMAIL_SMTP_PORT=465
OVERLEAF_EMAIL_SMTP_SECURE=true
OVERLEAF_EMAIL_SMTP_USER=notice@hlmg.tech
OVERLEAF_EMAIL_SMTP_PASS=PASSWORD
# OVERLEAF_EMAIL_SMTP_NAME=
OVERLEAF_EMAIL_SMTP_LOGGER=false
OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=true
OVERLEAF_EMAIL_SMTP_IGNORE_TLS=false
# OVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department x

完整宏包下载与配置

Overleaf官方镜像仅包含 texlive 基本宏包,要正确执行编译需要下载完整包,流程如下:

完整宏包下载

进入容器:

docker exec -it sharelatex sh

执行操作:

apt update
apt install -y --no-install-recommends ttf-mscorefonts-installer fonts-noto texlive-fonts-recommended tex-gyre fonts-wqy-microhei fonts-wqy-zenhei fonts-noto-cjk fonts-noto-cjk-extra fonts-noto-color-emoji fonts-noto-extra fonts-noto-ui-core fonts-noto-ui-extra fonts-noto-unhinted fonts-texgyre inkscape python3-pygments  # 安装语言包与必要的环境

fc-cache  # 刷新字体

# 处理潜在的版本不对应问题
wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
chmod +x update-tlmgr-latest.sh
./update-tlmgr-latest.sh -- --update

# 使用清华源加速下载
tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/

tlmgr update --self --all  # luaotfload-tool -fu
tlmgr install scheme-full  # 安装完整宏包

minted 包还需要启用 shell_escape 。编辑 /usr/local/texlive/20xx/texmf.cnf,加上一行:

shell_escape = t

保存镜像并修改配置文件

完成配置后将容器保存为镜像,其中版本号设置为自己的版本号。

docker commit sharelatex sharelatex/sharelatex:5.0.3-with-texlive-full

config/ 下创建 docker-compose.override.yml 文件,编辑以下内容:

---
version: '2.2'
services:
    sharelatex:
        image: sharelatex/sharelatex:5.0.3-with-texlive-full

运行 bin/stop && bin/docker-compose rm -f sharelatex && bin/up 以重建容器。

更新Sharelatex镜像版本

可在另一台设备上拉取最新镜像并执行上述操作后获得最新版本的带完整 texlive 的镜像,拷贝到服务器上一键替换以快速恢复访问。