Files
blog.hifuu.ink/source/_posts/overleaf.md
2025-02-26 09:13:52 +08:00

98 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Overleaf Toolkit踩坑记录
date: 2024-11-06 09:56:18
tags: 技术
categories: [技术分享]
---
在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。
具体流程就不赘述了,先将访问[Overleaf Toolkit官方仓库](https://github.com/overleaf/toolkit)将代码clone下来并按照手册执行即可。
## 问题一:无法 Pull Mongo、Redis 和 Sharelatex 镜像
在执行 `bin/up` 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。
截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。
### 解决方案:为 Docker 设置代理
通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:
1. 创建一个 `systemd` 服务文件,为 Docker 设置代理。
2. 编辑 `/etc/systemd/system/docker.service.d/proxy.conf` 文件,添加以下内容(确保已经设置了代理服务器):
```ini
[Service]
Environment="HTTP_PROXY=http://<your-proxy-server>:<port>"
Environment="HTTPS_PROXY=http://<your-proxy-server>:<port>"
Environment="NO_PROXY=localhost,127.0.0.1"
```
3. 重新加载 `systemd` 配置并重启 Docker
```bash
sudo systemctl daemon-reload
sudo systemctl restart docker
```
4. 重启 Docker 后再次执行 `sudo ./up`,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。
---
## 问题二:外部机器无法访问 Overleaf Web 服务
先确认ipv4和ipv6转发功能没有问题但是依旧出现只能本机访问127.0.0.1其他方式均无法访问甚至nmap扫描端口也发现并未开放sharelatex端口可以通过修改docker-compose配置文件解决。
注意到在默认的 `lib/docker-compose.base.yml` 配置中Overleaf Web 服务的端口映射方式为 `"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"`。
### 解决方案:修改端口映射
在 `docker-compose.base.yml` 文件中,删除 `${OVERLEAF_LISTEN_IP:-127.0.0.1}` 前缀,将 `"${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"` 修改为 `"${OVERLEAF_PORT:-80}:80"`。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。
修改后的 `docker-compose.base.yml` 端口映射配置如下:
```yaml
---
services:
sharelatex:
restart: always
image: "${IMAGE}"
container_name: sharelatex
volumes:
- "${OVERLEAF_DATA_PATH}:${OVERLEAF_IN_CONTAINER_DATA_PATH}"
ports:
#- "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"
- "${OVERLEAF_PORT:-80}:80"
environment:
GIT_BRIDGE_ENABLED: "${GIT_BRIDGE_ENABLED}"
GIT_BRIDGE_HOST: "git-bridge"
GIT_BRIDGE_PORT: "8000"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
V1_HISTORY_URL: "http://sharelatex:3100/api"
env_file:
- ../config/variables.env
stop_grace_period: 60s
```
完成修改后,重新启动 Docker 服务:
```bash
sudo ./start
```
现在,外部机器可以通过服务器的 IP 地址加端口 `{Overleaf_Port}` 访问 Overleaf Web 服务。
---
## 总结
这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 `docker-compose.base.yml` 中的端口映射使外部设备可以访问 Overleaf 服务。
可以在这里参考我的本地[Overleaf](https://overleaf.hifuu.ink)效果注意安装完后还需要配置latex包和中文字体。
这篇记录希望能为遇到类似问题的朋友提供帮助。