使用docker在本地部署sharelatex

Scroll Down

使用docker在本地部署sharelatex

做科研的写论文是难以逃避的,而用sharelatex进行论文排版是再方便不过的了,但是overleaf官网站点在国外,需要科学上网才行,而且编译有时候还很慢,所以我们想把overleaf本地化部署,幸运地是,sharelatex提供了docker版本的镜像用于在本地部署overleaf,本文参考网上的教程对安装过程进行记录。


环境配置:

  • Ubuntu 20.04 LTS

Docker安装

在ubuntu中安装docker可以参考我的另一篇博客:Ubuntu 20.04安装docker

此处不再赘述。

Sharelatex安装

我们使用最方便的docker-compose来部署sharelatex.

拉取最新的sharelatex镜像

docker pull sharelatex/sharelatex

下载docker-compose.yml文件,并进行配置

# 1.在用户目录下创建一个sharelatex文件夹
# 2.下载官方的docker-compose.yml配置文件
mkdir -p ~/sharelatex
cd ~/sharelatex
curl -O https://raw.githubusercontent.com/sharelatex/sharelatex/master/docker-compose.yml

使用vi打开并修改配置文件

sudo vim docker-compose.yml     

主要修改一下docker的挂载目录备份文件以防止docker崩溃造成的文件丢失

# 修改本地挂载目录
volumes:
	- /home/docker/sharelatex:/var/lib/sharelatex

# 修改mongo和redis的本地挂载目录
# mongo
volumes:
	- /home/docker/mongo_data:/data/db
# redis
volumes:
	- /home/docker/redis_data:/data

(提示:如果对docker和linux不熟悉并且不打算迁移数据的情况下,没必要挂载redis和mongiDB数据目录,因为这些数据库中存储的大部分是账号和项目列表信息,你挂载出来也没什么用,真正对我们有用的latex源码和资源都在sharelatex挂载目录中)

对于其他配置,如果你能看懂的话,随便改,如果看不懂的话只修改上述配置即可。

使用修改后的docker-compose.yml创建并启动docker容器

# 在docker-compose.yml所在目录下执行
docker-compose up -d
# 如果不在docker-compose.yml所在目录或者修改了配置文件名称,则执行
docker-compose -f 你的docker-compose配置文件路径 up -d

安装完整版texlatex

# 进入sharelatex容器
docker exec -it sharelatex bash

# 进入texlive默认安装目录
cd /usr/local/texlive

# 下载并运行升级脚本
wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
sh update-tlmgr-latest.sh -- --upgrade

# 更换Texlive的下载源,例如清华tuna源
tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/

# 升级tlmgr
tlmgr update --self --all

# 更新字体缓存
luaotfload-tool -fu

# 安装完整版texlive(不要让shell断开,想离开的可以用nohup)
tlmgr install scheme-full

# 退出sharelatex的命令行界面,并重启sharelatex容器
exit
docker restart sharelatex

如果只用来写英文论文的话,到这里就算安装完成并可以使用了。
可以在浏览器中输入 http://your IP/launchpad 初始化管理员账号密码了。

如果打开上述地址直接跳转到登录界面,或者忘记admin账号密码,可以通过命令行对管理员账号和密码进行重置:

# 其中joe@example.com修改为你的管理员邮箱
docker exec sharelatex /bin/bash -c "cd /var/www/sharelatex; grunt user:create-admin --email=joe@example.com"

然后docker会返回一个密码重置地址,复制地址浏览器打开即可重置密码。

安装配置中文

  • 如果需要用来写中文论文,那么还需要配置响应的中文字体环境。

打包Windows字体库(即目录C:\windows\fonts)然后上传到服务器。
至于上传文件到linux的工具有很多,比如:Xftp、Filezila、Putty等。
除此之外,我最常用的是使用Xshell配合lrzsz进行文件的上传和下载,原因是安装使用方便,不用开多个软件(具体使用请自行百度)。

# 进入fonts目录
cd fonts/

# 删除其中的.fon字体文件(其他文章中写道不删会报错)
rm -r *.fon

# 返回上层目录并打包
cd ..
tar -zcvf fonts.tar.gz fonts/

# 把打包文件传到sharelatex容器的root目录下
docker cp fonts.tar.gz sharelatex:/root

在容器中安装Windows字体

# 进入sharelatex容器
docker exec -it sharelatex bash

# 安装xfonts-wqy工具
apt-get install xfonts-wqy

# 进入root目录,解压fonts.tar.gz,并移动到系统字体目录下
cd ~
tar -zxvf fonts.tar.gz
mv fonts /usr/share/fonts/

# 进入字体目录安装字体
cd /usr/share/fonts/fonts
mkfontscale
mkfontdir
fc-cache -fv

# 检查确认中文字体安装成功
fc-list :lang=zh-cn

参考: