Overleaf服务器端配置

本文简要记录在服务器上搭建Overleaf/ShareLaTeX的方式。

Overleaf + TeXLive 2019

由于我下载Overleaf的时候恰逢上游TeXLive更新,导致Docker内的版本过期,没有办法进行更新,所以折腾了很久。用下面的方式可以继续安装使用旧版本TeXLive的全支持,但是由于旧版本国内没有源,因此非常慢。(这里的tlmgr是用来管理LaTeX的工具)

sudo docker exec sharelatex tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet
sudo docker exec sharelatex tlmgr option repository ftp://tug.org/historic/systems/texlive/2019/tlnet-final
sudo docker exec sharelatex tlmgr --verify-repo=none update --self
sudo docker exec sharelatex tlmgr --verify-repo=none install scheme-full

如果根据官方教程,则需要先查看80端口是否被占用

netstat -nlp | grep 80

最好不要用官方docker compose-up的方式创建,否则由于创建次序的原因可能会报502错误。而应该依序创建mongoredissharelatex三个容器,参见这个Issue

docker run -d --name sharemongo mongo:latest
docker run -d --name shareredis redis:latest
docker run -d \
  -v ~/sharelatex_data:/var/lib/sharelatex \
  -p 80:80 \
  --env SHARELATEX_MONGO_URL=mongodb://mongo/sharelatex --env SHARELATEX_REDIS_HOST=redis \
  --link sharemongo:mongo --link shareredis:redis \
  --name=sharelatex \
  sharelatex/sharelatex

Overleaf + TeXLive 2020

强烈建议下载已有的封装好TeXLive 2020的Overleaf Docker文件,参见此文。 如需要添加邮箱支持,则还需在环境变量中声明SHARELATEX_EMAIL_STMP_HOST等。但Overleaf的邮箱支持似乎很弱,我折腾了很久都没有试验成功。

docker run -d \
  -p 80:80 \
  --env SHARELATEX_SITE_URL=YOUR_URL \
  --name=sharelatex-2020 \
  kingsleyluoxin/sharelatex:full

docker exec sharelatex-2020 /bin/bash -c "cd /var/www/sharelatex; grunt user:create-admin --email=your@email.com"

容器运行中如果需要添加新的环境变量则需要采用下面指令,参照此回答

docker exec <name> /bin/bash -c "export VAR=XXX"

Docker常见操作指令

docker ps -a # 查看所有Docker容器
docker start <name>
docker stop <name>
docker rm <name>
docker inspect <name> # 查看log

Resources