当前位置: 首页 > news >正文

linux部署overleaf服务器

一、基本介绍

如果你们团队有超过4g内存和15g以上硬盘空间的linux服务器,可以在linux服务器上部署overleaf环境,从而可以拥有更加稳定的overleaf环境,可供整个团队使用。
官方文档:
https://github.com/overleaf/toolkit/blob/master/doc/quick-start-guide.md

二、环境要求

内存:至少4g
硬盘:至少15g
提前安装docker
最好拥有sudo权限(如果输入命令时出现permission denied,可以使用sudo命令)

三、部署

3.1 下载overleaf-toolkit

overleaf-toolkit 是官方提供的服务器搭建项目,下载:

git clone --depth=1 https://github.com/overleaf/toolkit.git ./overleaf-toolkit && cd ./overleaf-toolkit

下载后生成的文件夹:

  • doc 文件夹中是更详细的说明文档
  • config 文件夹中是配置文件
  • bin 文件夹包含一些命令,包括后续的up(启动)和stop(停止)

3.2 生成配置文件

# 生成配置文件
bin/init# 检查
bin/doctor

之后会生成三个文件:

overleaf.rc  variables.env  version

修改overleaf.rc

# 存放数据的主文件夹
OVERLEAF_DATA_PATH=/data/overleaf/data# 0.0.0.0 表示接受来自任意 ip 的访问
OVERLEAF_LISTEN_IP=0.0.0.0# 此处为linux监听的端口,一般设为80即可
OVERLEAF_PORT=80# 此处为linux的ip和设置的端口,便于后续在内网其他电脑上直接访问
OVERLEAF_SITE_URL=http://a.b.c.d:port

overleaf.rc其余内容无需改动

启动

bin/up 是对 docker-compose 命令的封装,它俩的用法是一样的。下面三个命令选其中一个即可:

bin/up -d # 后台运行
bin/docker-compose -d
bin/up # 临时启动

它会创建三个容器,一个 docker 网络

docker ps -a
CONTAINER ID   IMAGE                         COMMAND                  CREATED          STATUS                   PORTS                  NAMES
13a5d9a62ffd   sharelatex/sharelatex:5.2.1   "/sbin/my_init"          32 minutes ago   Up 7 minutes             0.0.0.0:5207->80/tcp   sharelatex
56b2f2e95ad1   redis:6.2                     "docker-entrypoint.s…"   32 minutes ago   Up 8 minutes             6379/tcp               redis
93fe60ddccee   mongo:6.0                     "docker-entrypoint.s…"   33 minutes ago   Up 8 minutes (healthy)   27017/tcp              mongodocker network ls
NETWORK ID     NAME               DRIVER    SCOPE
4f1fdade7e94   bridge             bridge    local
d147463e297d   host               host      local
343b1468a006   none               null      local
4a117aceb573   overleaf_default   bridge    local

3.3 安装texlive

首先找一个你认为最快的CTAN镜像源:CTAN镜像源

# 进入容器
bin/shell# 查看版本
tlmgr --version
# 更换镜像源,我用腾讯云的镜像
tlmgr option repository http://mirrors.cloud.tencent.com/CTAN/systems/texlive/tlnet
# 查看
tlmgr option show repository
# 先更新
tlmgr update --self --all # 安装完整的包,要花挺长一段时间,尽量选速度快的源
tlmgr install scheme-full# 重启容器
bin/stop 
bin/start

四、登录和使用overleaf

现在可以在内网其他电脑上通过上述设置的ip和端口访问overleaf

4.1 创建管理员

在内网其他电脑上的浏览器输入网址创建管理员:

http://a.b.c.d:port/launchpad

再登录:

http://a.b.c.d:port/login

其他团队成员第一次登录时需要管理员帮助注册,界面如下:点击右上角“admin”-“manage users”
在这里插入图片描述
出现注册界面:
在这里插入图片描述
将其中localhost改成上述ip和port即可

如果想自动将localhost转成ip和port,请参考章节五

五、overleaf注册链接问题

5.1 修改docker-compose.yml文件

如果此时处于容器内,即,状态如下:
在这里插入图片描述
输入命令“exit”退出容器

在overleaf-toolkit文件下如果没有docker-compose.yml,自己新建一个,可以参照如下写docker-compose.yml文件:

services:sharelatex:image: sharelatex/sharelatex:5.5.4restart: unless-stoppeddepends_on:- mongo- redisports:- "0.0.0.0:port:80"volumes:# - ./config:/etc/overleaf#- sharelatex_data:/var/lib/sharelatex- sharelatex_data:/var/lib/overleafenvironment:#- OVERLEAF_MONGO_URL=mongodb://mongo/sharelatex- OVERLEAF_MONGO_URL=mongodb://mongo:27017/sharelatex?replicaSet=rs0- OVERLEAF_REDIS_HOST=redis- OVERLEAF_SITE_URL=http://a.b.c.d:portmongo:image: mongo:6.0restart: unless-stoppedcommand: ["--replSet", "rs0", "--bind_ip_all"]volumes:- mongo_data:/data/dbredis:image: redis:6restart: unless-stoppedvolumes:- redis_data:/datavolumes:sharelatex_data:mongo_data:redis_data:

在config文件夹新建setting.js文件,其中内容:

module.exports = {siteUrl: "http://a.b.c.d:port",overleaf: {siteUrl: "http://a.b.c.d:port"},sharelatex: {siteUrl: "http://a.b.c.d:port"}
};

六、测试

在内网其他电脑上测试latex编译情况,使用最小测试代码:

\documentclass{article}
\usepackage{caption}
\begin{document}
Hello, Overleaf CE!
\end{document}

测试成功界面:
在这里插入图片描述

七、编译时缺少宏包

overleaf搭建成功之后,无法编译在其他环境上能够成功编译的tex文件,报错:

This compile didn’t produce a PDF. This can happen if: There is an unrecoverable LaTeX error. If there are LaTeX errors shown below or in the raw logs, please try to fix them and compile again. The document environment contains no content. If it’s empty, please add some content and compile again. This project contains a file called output.pdf. If that file exists, please rename it and compile again. LaTeX Error: File caption.sty' not found. The compiler cannot find the file you want to include. Make sure that you have uploaded the file and specified the file location correctly.

7.1 安装单个包

# 进入容器
docker ps  # 找到 overleaf/sharelatex 或 overleaf/overleaf 容器名/ID
docker exec -it <container_name> bash# 用tlmgr安装缺包
tlmgr update --self
tlmgr install caption
# 如果你的项目还缺别的包,一次性多装:
# tlmgr install caption titlesec enumitem float wrapfig fancyhdr siunitx etoolbox ...

7.2 升级texlive从而安装多个包

tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet
tlmgr update --self
tlmgr update --all

7.3 安装中文包

# 更新 tlmgr & 宏包索引
tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet
tlmgr update --self
tlmgr update --all# 安装中文相关宏包(含 ctex/xeCJK/CJK 等)
tlmgr install collection-langchinese# 安装 Fandol 字体(TeX Live 自带的开源中文字体,ctex 默认可用)
tlmgr install fandol# 拉丁字体(Latin Modern + TeX Gyre)
tlmgr install lm tex-gyre# (推荐)中文宏包集合 + Fandol 字体
tlmgr install collection-langchinese fandol# (可选)安装其它常用包
tlmgr install xecjk ctex zhnumber cjkutf8 unicode-math

测试中文内容:

\documentclass{ctexart}
\begin{document}
中文测试:你好,Overleaf!
\end{document}

测试成功界面:
在这里插入图片描述

http://www.xdnf.cn/news/1376281.html

相关文章:

  • HarmonyOS布局实战:用声明式UI构建自适应电商卡片
  • 华为鸿蒙HarmonyOS Next基础开发教程
  • 【前端】Devtools使用
  • 毕业项目推荐:28-基于yolov8/yolov5/yolo11的电塔危险物品检测识别系统(Python+卷积神经网络)
  • 极限RCE之三字节RCE
  • Go+Gdal 完成高性能GIS数据空间分析
  • 怎么解决大模型幻觉问题
  • NSSCTF 4th WP
  • React(面试)
  • 深度讲解智能体:ReACT Agent
  • Python包发布与分发策略:从开发到生产的最佳实践(续)
  • 基于 Ultralytics YOLO11与 TrackZone 的驱动的高效区域目标跟踪方案实践
  • Effective c++ 35条款详解
  • 【测试】pytest测试环境搭建
  • 日志的实现
  • Java全栈开发工程师的面试实战:从基础到微服务
  • 小程子找Bug之for循环的初始化表达类型
  • Hadoop(五)
  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day8
  • 设备电机状态监测:通往预测性维护与效能飞升之路
  • 深入理解C++ std::forward:完美转发的原理与应用
  • GitLab 导入/导出仓库
  • 财务报表怎么做?财务常用的报表软件都有哪些
  • 为什么 “int ” 会变成 “int”?C++ 引用折叠的原理与本质详解
  • 20.19 LoRA微调Whisper终极指南:3步实现中文语音识别错误率直降37.8%
  • 信任,AI+或人机环境系统智能的纽带
  • (一)光头整洁架构(Mediator Pattern/Result Patttern/UnitOfWork/Rich Domain)
  • k8s部署pgsql集群
  • 【PostgreSQL内核学习:通过 ExprState 提升哈希聚合与子计划执行效率】
  • Kafka 4.0 兼容性矩阵解读、升级顺序与降级边界