使用docker搭建overleaf环境
安装docker
可参考笔记: ubuntu docker gpu环境安装
如果不需要安装gpu版本的docker,可使用下列命令
shell
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-get update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose
安装Overleaf
将overleaf代码clone到本地
shell
git clone https://github.com/overleaf/toolkit.git ./overleaf
如果github仓库下载不了,则可以使用https://gitee.com/xiaoxia722/overleaf_toolkit.git
进入代码目录进行初始化
shell
cd ./overleaf
bin/init
此时将生成三个配置文件
shell
ls config/
overleaf.rc variables.env version
更改overleaf.rc配置文件
shell
SHARELATEX_LISTEN_IP=0.0.0.0(接收外网请求)
SHARELATEX_PORT=12150(overleaf的端口,可以不改)
启动服务
shell
sudo bin/up
刚开始会拉取大量的log,然后使用ctrl+c退出
重新启动
shell
sudo bin/start
安装完整texlive包
以上安装的overleaf配套的LaTeX不是完整版,所以需要继续下载。首先进入容器的bash:
shell
sudo docker exec -it sharelatex /bin/bash
cd /usr/local/texlive
然后执行以下命令:1
shell
# 下载并运行升级脚本
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
可以通过访问http://公网IP:映射的端口/launchpad,默认端口下可以访问本地接口http://127.0.0.1:80/launchpad注册管理员账号
其他情况下可以访问http://公网IP:映射的端口进行使用
反向代理
在Nginx配置文件中加入该配置,其中反向代理端口要与之前配置的相同。
sehll
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证书
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监听端口;
}
}