️ 注意:本教程只适用于 macOS / Linux 操作系统。如果需要在 Windows 上部署 Overleaf,请先安装 WSL,之后在 WSL 中部署 Overleaf 。

本地部署 Overleaf

启动

克隆 Overleaf 仓库:

git clone https://github.com/overleaf/toolkit.git

进入 toolkit 目录并生成配置文件:

bin/init

下载镜像并启动 Overleaf 容器:

bin/up

注意,Overleaf 脚本中使用的命令行工具均为 GNU 工具,如果你在 macOS 上启动 Overleaf 时遇到工具报错,有可能是你使用了 BSD 工具的原因。请使用 brew 安装相应工具的 GNU 版本,如 coreutils

Overleaf 镜像下载完成并启动之后我们可以按下 Ctrl + C 停止容器。

之后启动 Overleaf 的时候,可以使用下面的命令让 Overleaf 在后台运行:

bin/start

参考:Quick-Start Guide

注册管理员帐户

Overleaf 容器启动之后,我们可以打开 http://localhost/launchpad 注册管理员帐户。之后我们可以用这个帐户登录 Overleaf 服务。

安装宏包

Overleaf 镜像自带的宏包很少,为了编译我们的 LaTeX 文档,往往需要安装其他宏包。

容器运行的状态下进入容器 Shell:

bin/shell

更新并安装全部宏包:

# 使用中科大镜像源
tlmgr repository set https://mirrors.ustc.edu.cn/CTAN/systems/texlive/tlnet
# 更新已安装的全部宏包,包括 tlmgr 自身
tlmgr update --self --all
# 安装 scheme-full 套件(CTAN 上的全部宏包)
tlmgr install scheme-full

️: 安装全部宏包的时间大约要 40 分钟左右

安装依赖包:

apt install ttf-mscorefonts-installer  # 安装 Windows 字体
apt install inkscape python3-pygments # 安装 TikZ & Syntax highlighter 依赖 # 导入 TeX Live 字体
ln -s /usr/local/texlive/2024/texmf-var/fonts/conf/texlive-fontconfig.conf /etc/fonts/conf.d/09-texlive.conf
fc-cache -fsv # 刷新字体缓存

你可能还要安装一些中文字体,将这些字体拷贝到 fonts 文件夹,然后运行下面的命令:

docker cp fonts sharelatex:/usr/local/share/fonts

参考:搭建本地版 Latex 编辑器,为你的毕业论文排版「减减负」| 少数派

VS Code 有一个叫 Overleaf 的插件,可以让 VS Code 连接到你搭建的 Overleaf 服务。

Troubleshooting

无法安装宏包

在安装宏包时你可能遇到如下错误:

tlmgr: Local TeX Live (2023) is older than remote repository (2024).
Cross release updates are only supported with
update-tlmgr-latest(.sh/.exe) --update
See https://tug.org/texlive/upgrade.html for details.

这是镜像使用的 TeX Live 版本过低导致的。如果你当前使用的不是最新的 ShareLaTeX 镜像,可以使用下面的命令更新镜像:

bin/upgrade

如果你已经在使用最新的 ShareLaTeX 镜像,那说明官方还没有给最新的 TeX Live 打镜像。你可以设置 TeX Live 使用旧版镜像源,或者更新当前容器中的 TeX Live 版本,也可以自己打一个包含新版 TeX Live 的镜像。

  • 设置旧版镜像源:

    tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/tex-historic-archive/systems/texlive/2021/tlnet-final/
  • 如果你要更新当前容器中的 TeX Live 版本,参见:Linux 更新 TeX Live

  • 如果你要自己打镜像,参见:自制 ShareLaTeX 镜像

打开 Web 界面时遇到 502 错误

如果遇到 502 错误,可能是端口冲突导致的。进入 config/overleaf.rc 修改一下端口号:

OVERLEAF_PORT=8080

部署到服务器上之后无法访问

Overleaf 的默认监听端口是 127.0.0.1:80,也就是只监听来自本地的 HTTP 访问请求。如果要开放所有 IP 的访问请求,需要修改 config/overleaf.rc 设置:

OVERLEAF_LISTEN_IP=0.0.0.0
OVERLEAF_PORT=80

这样所有地址都可以访问服务器的 80 端口来获取 Overleaf 服务。

无法启动 ShareLaTeX 容器

如果你在运行 bin/up 的过程中遇到这样的错误提示:

Initiating Mongo replica set...
Rebranding from ShareLaTeX to Overleaf
Starting with Overleaf CE and Server Pro version 5.0.0 the environment variables will use the Overleaf brand.
Previous versions used the ShareLaTeX brand for environment variables.
Your config/variables.env has 60 entries matching 'OVERLEAF_', expected prefix 'SHARELATEX_'.
Please align your config/version with the naming scheme of variables in config/variables.env.

说明当前配置设置的 Overleaf 版本过低。我们需要使用大版本号为 5 以上的版本。

编辑 config/version,使用新的版本号替代旧的版本号。你可以在 Docker Hub 上查看最新的版本号:sharelatex | DockerHub

撰写本文时,最新的版本号为:

5.0.3

无法启动 Mongo 容器

如果你在 WSL / macOS 上运行 bin/up 命令时遇到如下错误:

MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
Waiting for Mongo... Please configure ALL_TEX_LIVE_DOCKER_IMAGES in /home/xiao/toolkit/config/variables.env You can read more about configuring Sandboxed Compiles in our documentation:
https://github.com/overleaf/overleaf/wiki/Server-Pro:-sandboxed-compiles#changing-the-texlive-image

这可能是由于 Mongo 访问绑定挂载目录的 bug 导致的。要解决这个问题,我们需要将 Mongo 和 Redis 的数据存储位置由绑定挂载目录改为命名卷。方法为:创建 config/docker-compose.override.yml 文件,填入以下内容:

# 创建卷
volumes:
mongo-data:
redis-data: # 挂载卷
services:
mongo:
volumes:
- mongo-data:/data/db redis:
volumes:
- redis-data:/data

然后重新运行 bin/up

参考:Persistent Data | Overleaf Docs

本地部署 Overleaf 服务的更多相关文章

  1. windows下百度离线人脸识别本地部署与使用(nodejs做客户端,c++做服务端,socket做通信)

    1.离线人脸识别本地部署 详情请阅读百度人脸识别官网 2.nodejs做socket通信的客户端 为什么不直接通过调用c++编译的exe获得人脸识别结果? 原因:exe运行时会加载很多模型而消耗很多时 ...

  2. 在 CentOS7 上部署 zookeeper 服务

    在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...

  3. Exceptionless 本地部署

    免费开源分布式系统日志收集框架 Exceptionless 前两天看到了这篇文章,亲身体会了下,确实不错,按照官方的文档试了试本地部署,折腾一番后终于成功,记下心得在此,不敢独享. 本地部署官方wik ...

  4. ArcGIS JavaScript API本地部署离线开发环境[转]

    原文地址:http://www.cnblogs.com/brawei/archive/2012/12/28/2837660.html 1 获取ArcGIS JavaScript API API的下载地 ...

  5. jsbin本地部署

    jsbin 本地运行 1.首先安装node.js,下载地址http://nodejs.org/ 安装完成后,使用node.js安装jsbin,如下:进入node环境,执行下面语句: $ npm ins ...

  6. ArcGIS API for JavaScript 4.x 本地部署之Apache(含Apache官方下载方法)

    IIS.Nginx都说了,老牌的Apache和Tomcat也得说一说(如果喜欢用XAMPP另算) 本篇先说Apache. 安装Apache 这个...说实话,比Nginx难找,Apache最近的版本都 ...

  7. 升级本地部署的CRM到Dynamics 365及部分新特性介绍。

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复241或者20161226可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  8. Linux 自动化部署Rsyslog服务

    Linux 自动化部署Rsyslog服务 源码如下: #/bin/bash #该脚本用于自动化部署Ryslog服务配置 #作者:雨中落叶 #博客:https://www.cnblogs.com/yuz ...

  9. Linux下部署Samba服务环境的操作记录

    关于Linux和Windows系统之间的文件传输,很多人选择使用FTP,相对较安全,但是有时还是会出现一些问题,比如上传文件时,文件名莫名出现乱码,文件大小改变等问题.相比较来说,使用Samba作为文 ...

  10. CDH 5.16.1 离线部署 & 通过 CDH 部署 Hadoop 服务

    参考 Cloudera Enterprise 5.16.x Installing Cloudera Manager, CDH, and Managed Services Installation Pa ...

随机推荐

  1. CosyVoice多语言、音色和情感控制模型,one-shot零样本语音克隆模型本地部署(Win/Mac),通义实验室开源

    近日,阿里通义实验室开源了CosyVoice语音模型,它支持自然语音生成,支持多语言.音色和情感控制,在多语言语音生成.零样本语音生成.跨语言声音合成和指令执行能力方面表现卓越. CosyVoice采 ...

  2. yb课堂实战之接口协议调整和日期格式 《十八》

    调整api接口协议和日期格式 统一输出协议,驼峰转下划线 格式化日期

  3. AI驱动音乐创新,网易数帆X云音乐刷新MIREX世界纪录 网易数帆 网易数帆

    在近期揭榜的2021国际音频检索评测大赛(MIREX)上,网易数帆易智语音团队携手网易云音乐音视频实验室,凭借生产级AI技术创新能力,在歌词识别和歌单识别两个赛道大幅打破世界纪录夺得冠军. MIREX ...

  4. 【译】使 Visual Studio 更加可视化

    任何 Web.桌面或移动开发人员都经常使用图像.你可以从 C#.HTML.XAML.CSS.C++.VB.TypeScript 甚至代码注释中引用它们.有些图像是本地的,有些存在于线上或网络共享中,而 ...

  5. AT_abc178_d 题解

    洛谷链接&Atcoder 链接 本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读. 题目简述 给定一个正整数 \(S\),问有多少个数满足以下条件: 序列中必须为 \(\ge 3\ ...

  6. C# 泛型SQLHelper<T>类

    示例[1] 1.创建SQLHelper类 using System.Collections.Generic; using System.Configuration; using System.Data ...

  7. ngnix简介和基础

    一.Nginx简介 Nginx 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器 是一个模块化软件 [1].安装nginx 使用源码包编译安装 cd /opt ...

  8. 一文详解 JuiceFS 读性能:预读、预取、缓存、FUSE 和对象存储

    在高性能计算场景中,往往采用全闪存架构和内核态并行文件系统,以满足性能要求.随着数据规模的增加和分布式系统集群规模的增加,全闪存的高成本和内核客户端的运维复杂性成为主要挑战. JuiceFS,是一款全 ...

  9. Java8 Stream流使用

    Java8 Stream 流式编程 一.Lambda表达式 Lambda表达式也可以称为闭包,它是推动Java8发布的最重要新特性,lambda允许把函数作为一个方法参数传递给方法. 在Java8之前 ...

  10. 如何在Arch Linux上构建Raspberry Pi虚拟环境

    如何在Linux上构建Raspberry Pi虚拟环境 ​ 下面我们来讲讲如何使用QEMU来仿照树莓派环境.这里首先先分成两大类.第一类是跑比较老的,安全性较低的老树莓派,主要指代的是22年4月份发布 ...