这篇教程是 Ubuntu 搭建Sharelatex(Overleaf)服务器并配置Nginx反向代理访问的教程。
安装依赖
安装Docker
已经安装Docker的用户可以跳过这一节。参考菜鸟教程
安装 apt 依赖包,用于通过HTTPS来获取仓库:
1 2 3 4 5 6
| sudo apt install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
|
添加 Docker 的官方 GPG 密钥:
1
| curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
|
装最新版本的 Docker Engine-Community, docker-compose 和 containerd
1
| sudo apt install docker-ce docker-ce-cli containerd.io docker-compose
|
使用以下命令来验证docker是否安装成功
1 2 3 4 5 6 7 8 9 10 11
| $ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 1b930d010525: Pull complete Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f Status: Downloaded newer image for hello-world:latest
Hello from Docker! This message shows that your installation appears to be working correctly. ...
|
安装Overleaf
将Overleaf代码克隆至本地
1
| git clone https://github.com/overleaf/toolkit.git ./overleaf
|
进入代码目录进行初始化
此时将生成三个配置文件
1 2
| ls config/ overleaf.rc variables.env version
|
更改如下配置:SHARELATEX_LISTEN_IP=0.0.0.0代表监听外网请求,SHARELATEX_PORT代表监听端口,要和后续Nginx反向代理端口相同
1 2
| SHARELATEX_LISTEN_IP=0.0.0.0 SHARELATEX_PORT=12150
|
启动服务
一开始会拉取sharelatex镜像,等到出现大量log时即为启动成功,使用Ctrl+C退出,然后执行
此时用浏览器打开 http://IP:监听的端口/launchpad 即可进入管理员账户创建页面。
安装完整texlive包
以上安装的overleaf配套的LaTeX不是完整版,所以需要继续下载。首先进入容器的bash:
1 2
| sudo docker exec -it sharelatex bash cd /usr/local/texlive
|
然后执行以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| # 下载并运行升级脚本 wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh sh update-tlmgr-latest.sh -- --upgrade
# 更换texlive的下载源 tlmgr option repository https://mirrors.sustech.edu.cn/CTAN/systems/texlive/tlnet/
# 升级tlmgr tlmgr update --self --all
# 安装完整版texlive(时间比较长,不要让shell断开) tlmgr install scheme-full
# 退出sharelatex的命令行界面,并重启sharelatex容器 exit docker restart sharelatex
|
至此,overleaf的安装完成
配置Nginx反向代理
在Nginx配置文件中加入该配置,其中反向代理端口要与之前配置的相同。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| server { listen 80; listen [::]:80; server_name domain; return 302 https://$server_name$request_uri; }
server { listen 443 ssl http2; listen [::]:443 ssl http2;
server_name domain;
index index.html;
ssl_certificate /path/domain.cer; ssl_certificate_key /path/.acme.sh/xlz.pub/domain.key;
ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
server_tokens off;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
client_max_body_size 50M; location / { proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 3m; proxy_send_timeout 3m; proxy_pass http://overleaf所在IP地址:overleaf监听端口; } }
|
然后,在浏览器中输入 http://domain 就可以访问你的Overleaf了。