overleaf 使用便捷,相信很多人都在上面编辑过论文,但是国内访问 overleaf 确实网速限制比较大,编译时等待时间较长,而且中文字体等配置也不是很方便,应运而生的 overleaf 社区版本就可以解决这个问题,利用 overleaf 官方提供的服务包,可以在本地搭建自己的 latex 服务器,使用 overleaf 简洁易用的编辑页面,同时也有快捷的响应速度。
但是官方提供的镜像一共需要三个容器:sharelatex、mongo 和 redis,利用官方提供的 docker-compose.yml 可以一键运行,也很方便,直接 docker-compose up -d
就可以启动 sharelatex 服务,实际上,例如 CentOS8 中使用 podman,podman 配置上限制更多,如果需要在 podman 中配置 sharelatex,则需要的功夫更多了:建立 pod、建立容器、pod 内的容器连接……,走完这一趟,比手工配置一次还累,而且,在网络条件不好的时候,我们通常希望将镜像保存为压缩包,用于备份或者迁移,三个镜像拷贝三次、导入三次,使用起来也多有不便。
考虑到这些问题,利用写论文的工具准备时间,自己基于官方的 sharelatex 镜像搭建了自己的镜像,kingsleyluoxin/overleaf,如果对 docker 比较熟悉的读者可以自行拉取镜像然后直接运行。
docker pull kingsleyluoxin/sharelatex:full
# OR
# docker pull kingsleyluoxin/sharelatex:latest
docker run -p 8080:80 -d kingsleyluoxin/sharelatex:full
完成上面两个步骤,在浏览器访问 127.0.0.1:8080/launchpad 就可以直接开始配置管理用户、开始使用自己的 latex 服务器了。镜像中的 latest 标签是原有的 sharelatex 镜像直接加上 mongo 和 redis 服务器,相对较为精简,还需要自己安装需要的 texlive 包,full 标签则是安装了全部 texlive 包,且放入了 windows 系统字体,使用更为方便。两个镜像都已将 texlive 升级为 texlive2020,推荐使用 full 标签镜像,更为方便快捷。
如果还没有安装使用过 docker,则可以继续阅读:
首先卸载旧版的 docker(如果安装过的话)
sudo apt-get remove docker docker-engine docker.io containerd runc
设置 ubuntu 更新镜像源(如果没有设置过的话)加速
sudo tee /etc/apt/sources.list << EOF
deb http://mirrors.163.com/ubuntu/ $(lsb_release -cs) main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ $(lsb_release -cs)-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ $(lsb_release -cs)-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ $(lsb_release -cs)-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ $(lsb_release -cs) main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ $(lsb_release -cs)-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed $(lsb_release -cs) restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports $(lsb_release -cs) restricted universe multiverse
EOF
sudo apt-get update
安装依赖
sudo apt-get install -y apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加 GPG 密钥
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
设置 docker 安装源
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
安装 docker-ce
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
安装依赖
# centos 会自己寻找最快的镜像源,不用设置
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加 docker 软件源
sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
安装 docker-ce
sudo yum -y install docker-ce
为了成功编译中文稿件,还需要设置中文字体
首先从 Windows 系统 C:\Windows\Fonts\ 目录将需要的字体文件拷贝到Linux中,假设放置在 /home/chinese 目录下
sudo mv /home/chinese/ /usr/share/fonts/chinese
cd cd /usr/share/fonts/chinese
sudo mkfontscale
sudo mkfontdir
fc-cache -fv
source /etc/profile
sudo chmod -R 755 *
win7、win8 上安装 docker desktop 需要安装 virtual box,使用比较麻烦,建议在 Windows10 上安装
Windows10 的 docker desktop 安装比较简单,从 官网文档 照着来就可以,主要步骤:
(a)检查前置条件:64位有 SLAT 处理器,至少 4GB 内存,硬件虚拟化支持
(b)下载 docker desktop for windows
下载地址:https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe
(c)双击 Docker Desktop Installer.exe ,接受条款、UAC 同一,完成安装
(d)右击右下角 docker 图标,选择 “Settings”,进行相关的镜像源设置等,详见 官方文档
*(e) 作者做法是在 Hyper-V 中安装 Ubuntu 虚拟机,然后虚拟机安装 docker-ce,使用基本一致。在 Windows10 本地安装,现版本的 docker desktop 已经支持和 WSL2 联用了,也很方便!
国内使用 dockerhub 提供的镜像访问速度较慢,因此可换为国内的镜像源
sudo mkdir -p /etc/docker
# 根据自己喜好可以换其他源
sudo tee /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker 使用常常需要加上 sudo 权限,所以可以避免
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
该镜像可以不用使用 docker-compose,如果需要安装的话,可以以如下命令安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
从镜像仓库拉取需要的 docker 镜像
# 根据选择镜像标签,推荐 full
docker pull kingsleyluoxin/sharelatex:full
# 拉取之后查看应该得到类似下图的结果
docker images
启动容器
docker run -d -p 8080:80 kingsleyluoxin/overleaf:full
此时已经可以访问 127.0.0.1:8080/launchpad 进行设置
端口设置后需要检查映射端口(例子中的 8080)的开放性,如果防火墙没有开放该端口,需要将其打开,根据自己需要设置为端口
sudo firewall-cmd --query-port=8080/tcp
如果得到结果为 yes 则可以不用后续步骤
sudo firewall-cmd --permanent --add-port=8080/tcp
修改防火墙规则后需要重启防火墙,使规则生效
sudo firewall-cmd --reload
运行容器后可以在浏览器访问 127.0.0.1:8080/launchpad 开始设置,如果映射端口设置的是 80,则可以直接访问 127.0.0.1/launchpad
设置完管理用户邮箱和密码后登录,即可开始使用!
使用过程中有问题可以发邮件交流
kingsleyluoxin AT hotmail DOT com