如何使用 docker 搭建本地 overleaf 服务器

如何使用 docker 搭建本地 overleaf 服务器

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,则可以继续阅读:

1. docker 安装

(1)Linux 安装

ubuntu 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 docker 安装

安装依赖

# 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 *

(2)Windows10 docker 安装

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 联用了,也很方便!

(3)配置镜像加速

国内使用 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

(4)配置免 sudo 使用 docker

docker 使用常常需要加上 sudo 权限,所以可以避免

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

*(5)安装 docker-compose

该镜像可以不用使用 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

2. 镜像拉取

从镜像仓库拉取需要的 docker 镜像

# 根据选择镜像标签,推荐 full
docker pull kingsleyluoxin/sharelatex:full
# 拉取之后查看应该得到类似下图的结果
docker images

在这里插入图片描述

3. 利用拉取的镜像启动容器

启动容器

docker run -d -p 8080:80 kingsleyluoxin/overleaf:full 

此时已经可以访问 127.0.0.1:8080/launchpad 进行设置

centos 注意

端口设置后需要检查映射端口(例子中的 8080)的开放性,如果防火墙没有开放该端口,需要将其打开,根据自己需要设置为端口

(1)检查端口状态

sudo firewall-cmd --query-port=8080/tcp

如果得到结果为 yes 则可以不用后续步骤

(2)开放端口

sudo firewall-cmd --permanent --add-port=8080/tcp

(3)应用生效

修改防火墙规则后需要重启防火墙,使规则生效

sudo firewall-cmd --reload 

4. 使用 latex 服务器

运行容器后可以在浏览器访问 127.0.0.1:8080/launchpad 开始设置,如果映射端口设置的是 80,则可以直接访问 127.0.0.1/launchpad

设置完管理用户邮箱和密码后登录,即可开始使用!

使用过程中有问题可以发邮件交流

kingsleyluoxin AT hotmail DOT com

你可能感兴趣的:(实验总结,环境配置)