使用docker搭建overleaf环境

使用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监听端口;
    }
}
相关推荐
穷人小水滴3 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
EatFans3 小时前
Docker 实战部署:从本地镜像到云服务器,一篇走通 FastAPI + Celery + MySQL + Redis + Nginx
docker·fastapi
judezh4 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
暗不需求4 小时前
Docker 入门:从「光盘与 DVD」到全栈项目容器化实战
docker·容器·面试
探索云原生4 小时前
一个 Deployment 就能跑 vLLM,为什么还需要 KServe?
docker·ai·云原生·kubernetes·go
虎头金猫6 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS6 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AIGC大时代6 天前
图表说明别只会贴图:同一主张可勾选图注骨架(千笔-AIWritePaper)
论文写作·千笔-aiwritepaper·图注骨架·可勾选验收·图表说明
玉&心6 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing6 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker