敏行科技
敏行科技
发布于 2023-11-02 / 173 阅读
0

使用Solopace.Gem搭配Overleaf搭建虚拟实验室

Overleaf是一款在线的协作式LaTeX编辑器,旨在简化文档创建和编辑过程。LaTeX是一种用于科学、数学和技术领域的强大排版系统。Overleaf的特点包括多人协作,用户可以随时随地与同事和同学一起编辑文档,实时预览功能可让用户即时查看编辑结果。还提供多种模板,用于创建论文、报告、演示文稿等,节省时间。编辑器支持高级LaTeX功能,包括数学公式、图表、表格、引用和参考文献。自动编译确保用户立即看到更新后的文档。版本控制功能可追踪不同版本,导出选项允许生成PDF文件或ZIP文件。用户可生成协作链接,无需注册Overleaf账户,也支持私人项目和团队协作,提供免费和付费计划。

概述

开源版本的Overleaf称为"Overleaf Community Edition",简称"Overleaf CE"。它是Overleaf团队推出的开源LaTeX协作编辑器,可让用户在自己的服务器上创建类似Overleaf的在线LaTeX编辑环境。这种自托管方式赋予用户在内部网络或私人服务器上创建、编辑和共享LaTeX文档的完全控制权。

  • 数据隐私和安全性: 在某些情况下,可能对数据隐私和安全性有严格要求,不希望文档和敏感信息存储在第三方云服务上。独立部署Overleaf允许您完全掌握数据存储和访问,确保合规和安全标准。

  • 机构内部部署: 一些大学、研究机构或企业可能需要在内部网络提供LaTeX编辑和协作功能,以支持学术、研究和文档创作。独立部署Overleaf能够满足这一需求,使机构内部用户轻松创建和编辑LaTeX文档。

  • 定制需求: 如果您有特定的定制需求,希望对编辑器界面、功能或工作流程进行个性化定制,独立部署Overleaf提供更大的灵活性,可满足各种需求,实现编辑环境的定制化。

  • 带宽和访问限制: 在某些地区或网络环境中,外部云服务的访问可能受到带宽或访问限制。独立部署Overleaf可为用户提供更流畅的内部网络访问体验。

  • 成本效益: 对于一些组织而言,长期使用第三方云服务可能会导致高昂费用。独立部署Overleaf有助于节省成本,尤其是在大规模使用情况下。

  • 技术支持和控制: 独立部署Overleaf让您在技术层面上更具掌控力,可以根据需要进行维护、升级和修复,与内部技术团队直接合作解决问题。

网络中已经有一些教程,要么安装的Overleaf版本太低,要么遇到的问题没有明确给出解决方法。

准备工作

Docker Desktop安装

Docker是一种开源的容器化平台,它使开发者能够轻松地创建、部署和管理应用程序及其依赖项。它的核心概念是容器,容器是一个独立的、可移植的环境,包含了应用程序及其所有运行时依赖项,如库、配置和环境变量。Docker的优势在于它提供了一种标准化的方式来封装应用程序,使其可以在不同的环境中无缝运行,无论是在开发者的本地计算机上、测试环境中还是生产服务器上。
使用Docker,开发者可以轻松地创建自定义容器镜像,将其分享给团队成员或社区,从而实现开发环境的一致性。容器还能够实现快速部署和水平扩展,使应用程序更具可伸缩性和弹性。此外,Docker生态系统还提供了许多附加工具和服务,如Docker Compose和Docker Swarm,用于简化多容器应用程序的管理和编排。

Docker Desktop是一款用于Windows和macOS操作系统的桌面应用程序,专门设计用于简化Docker容器的开发、测试和部署过程。它提供了一个用户友好的图形界面,使开发者能够轻松地创建、管理和运行容器化应用程序。

通过Docker Desktop,用户可以在本地计算机上构建和运行Docker容器,无需深入了解容器技术的复杂性细节。它还包括了Docker Compose,这是一个用于定义和运行多容器应用程序的工具,以及Kubernetes的集成,可用于更复杂的容器编排和管理。

Docker Desktop还具备自动更新功能,以确保用户始终使用最新的Docker引擎和工具,从而提供更好的性能和安全性。它是一个强大的工具,适用于开发者、测试人员和DevOps团队,可帮助他们在本地环境中快速、方便地构建和测试容器化应用程序,从而加速软件开发周期。

安装Docker Desktop后,在本地对Docker进行可视化的管控,比较方便。

下载安装地址:

www.docker.comwww.docker.com/products/docker-desktop/


安装过程比较简单,此处省略。

部署Overleaf

使用Docker安装Overleaf

1.打开命令行cmd, 拉取 Overleaf 官方开源镜像:

docker pull sharelatex/sharelatex:4.1.1 

Overleaf版本参考地址:

https://github.com/overleaf/overleaf/wiki/Release-Notes--4.x.xgithub.com/overleaf/overleaf/wiki/Release-Notes--4.x.x

由于国内下载比较慢,需要等待挺长时间,可以参照https://www.cnblogs.com/Flat-White/p/17107494.html设置国内的Docker源。

下载过程如下图所示:

2.前往 https://github.com/overleaf/overleaf/blob/main/docker-compose.yml下载 docker-compose.yml 文件到本地;

3.针对4.1.1版本的 overleaf,在Github中的docker-compose.yml 未做更新https://github.com/overleaf/overleaf/issues/1120),因此需要对下载下来的docker-compose.yml 进行如下修改:

如果不做修改,会导致mongo和sharelatex启动不起来,出现以下类似问题:
(1)dependency failed to start: container for service "mongo" is unhealthy
(2)MongoServerError: Transaction numbers are only allowed on a replica set member or mongos

(1)将image: sharelatex/sharelatex的版本修改为:

image: sharelatex/sharelatex:4.1.1


(2)将mongo部分的配置修改成如下所示:

   mongo:
        restart: always
        image: mongo:4.4
        container_name: mongo
        command: "--replSet overleaf"
        expose:
          - 27017
        volumes:
          - "./mongo_data:/data/db"
        healthcheck:
          test: echo 'db.stats().ok' | mongo localhost:27017/test --quiet
          interval: 10s
          timeout: 10s
          retries: 5

    mongoinit:
        image: mongo:4.4
        # this container will exit after executing the command
        restart: "no"
        depends_on:
          mongo:
            condition: service_healthy
        entrypoint:
          [
            "mongo",
            "--host",
            "mongo:27017",
            "--eval",
            'rs.initiate({ _id: "overleaf", members: [ { _id: 0, host: "mongo:27017" } ] })',
          ]

端口之类的配置按需要进行配置就好,通常默认就好。

4.命令行进入docker-compose.yml 文件所在目录下,然后执行:

在操作系统的命令行工具进行执行;

docker-compose up

执行过程中如下图所示:

5.下载完成后会自动启动compose,执行成功后,如图所示:

6.通过访问http://127.0.0.1/launchpad 可以配置管理员账号;

如果配置了特定的端口号,需要添加端口号进行访问;

7.此时可以通过 http://127.0.0.1/ 来访问本地的 overleaf ;

如果配置了特定的端口号,需要添加端口号进行访问;

8.找个Latex模版(IEEE conference-latex-template_10-17-19)编译试一下,结果出现如下错误:

官方的镜像为了节省带宽,镜像中未含完整版本的TeXLive。

需要继续安装完整版本的TeXLive


TeXLive安装

1.进入到容器sharelatex的命令行界面:

在操作系统的命令行执行

$ docker exec -it sharelatex bash 

也可以使用Docker Desktop直接进入

使用Docker Desktop可以双击直接进入,如图所示:

2.进入到sharelatex容器的文件夹:

# cd /usr/local/texlive

3.下载更新文件:

# wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh --no-check-certificate

4.执行更新操作:

# sh update-tlmgr-latest.sh -- --upgrade

5.为了提高更新速度,配置国内更新源:

 # tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/

6.执行更新操作:

# tlmgr update --self --all # luaotfload-tool -fu

7.执行安装操作:

 # tlmgr install scheme-full

如图所示:

8.关闭重启Overleaf:


此时可以正常编译了,如下图所示:




对中文也可以进行编译了,如下图所示:




配置远程访问

在自己的电脑安装后,需要在其他外网环境(图书馆、咖啡馆)也可以访问到,或者需要给到师门同学一起使用,就需要实现远程访问。

一些方法

当前的远程访问实现的方法有:
(1)WireGuard:支持P2P的连接方式,开源,不稳定,经常P2P连接不通;
(2)HeadSacle:开源,部署配置起来太复杂;
(3)蒲公英:购买硬件设备;

(4)。。。。

选择的方法

折腾了几天,各种配置,各种安装,最终还是放弃了上面提到的方法。

使用了【传送门】

方便易用的企业异地组网工具solopace.doaction.pro/

这个产品,简单易用,连接稳定,无需购买硬件,用户体验优秀,免费版本支持6台电脑,要支持更多的电脑费用也可以接受。使用的截图如下: