本文简要记录在服务器上搭建Overleaf/ShareLaTeX的方式。
由于我下载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错误。而应该依序创建mongo
、redis
和sharelatex
三个容器,参见这个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
强烈建议下载已有的封装好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 ps -a # 查看所有Docker容器
docker start <name>
docker stop <name>
docker rm <name>
docker inspect <name> # 查看log