【手把手教你】如何免费畅快使用阿里云ECS搭建私有Overleaf论文写作服务

简介: 本文详细介绍如何利用阿里云ECS免费搭建私有Overleaf论文写作服务,包括ECS服务器的部署、Overleaf服务的安装、TexLive包的更新、XeLaTeX修复、中文字体支持及账号管理等步骤。通过这些操作,你可以实现免费且高效的多人协作论文写作,避免付费版本的高昂费用。适合需要频繁合作撰写论文的团队使用。

目录

文章目录


1. 前言简介

对于很多Latex重度爱好者,Overleaf可能是无法拒绝的软件。最近免费版Overleaf调整限制在线协同编辑项目和用户数,还是会带来一些不便,对团队协助效率有影响。然而,面对付费版本每年199 $的会员费,不少人多少还是有些纠结和肉疼。


考虑到多人协作通常在论文撰写期间,尤其是各大会议投稿前的某个相对短暂的时间段,实际全年使用时间有限,那么是否有一个比较好的方法能够即免费,又体验上无差异地使用Overleaf呢? 为此,笔者近日实践了一把,趟过网上已有文章的各种坑,亲测有效,给大家介绍一种如何0元购畅快使用阿里云ECS搭建私有Overleaf论文写作服务的方法。




2. 部署ECS服务器

[1] 注册阿里云账号并进入免费试用网页


[2] 选择“云服务ECS免费试用(个人版)”, 创建ECS实例

  • 进入ECS规格选择,官方体验版本是2核(vCPU)2GB,实测发现在拉去overleaf更新文件时,容易出现资源不足的问题,不建议选择。笔者建议选择的是: 2核(vCPU) 8GiB, 亲测各种拉去数据都毫无障碍,非常给力! 如果使用配置面板里面没有,那么优先先选择 “2核(vCPU) 4GiB” , 操作系统 Ubuntu, 搭配宝塔工具。 至于免费地域,按照自己所在城市,就近原则即可,实际差异并不大,关键看哪里有ECS免费资源。

ECS服务器配置:
       - Ubuntu 22.04 64位
       - 宝塔Linux面板

  • 备注:如果使用上面选择的 “2核(vCPU) 4GiB” 实例在后面搭建过程中有拉取数据卡顿问题(原因是下载或者写入速度超过配置),参考本文后面的如何修改ECS实例配置章节。
  • ECS实例创建好后,会跳转到云服务器ECS的管理界面 (https://ecs.console.aliyun.com/home), 在这里执行对ECS服务器的网络安全配置、系统登陆、服务器的开停等操作。


[3] 点击左侧 “实例”,找到自己的ECS服务器,然后 选择 “远程登陆”, 按照提示输入账号与密码。 注意:

  • 【1】选择 Workbench原创链接,后面操作界面比较友好
  • 【2】初始登陆的账号是root, 密码如果不知道,可以按照页面提示,选择重置密码,在线修改,然后重新登陆即可。 输入账号登陆
  • 重置密码:
  • [4] 登陆成功后,如果你看到的界面如下,那么恭喜你,已经顺利完成ECS服务器的创建和登陆操作!


[5] 更新系统的docker与 docker-compose

apt update
apt install -y docker-compose

注意: 我们需要更新的是 “docker-compose”, 一些网上文章错误写成 “ docker-composer”, 这是不正确,需要留意! 至此,ECS服务器的准备工作,完成,没有多余动作!


3. 安装Overleaf服务

[1] 在workspace文件夹下创建 overleaf-toolkit文件夹,便于后续服务器管理

cd workspace && mkdir overleaf-toolkit


创建完成后:


[2] 下载Overleaf官方提供的Toolkit安装工具包:

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


执行结果:

Cloning into './overleaf-toolkit'...
remote: Enumerating objects: 2292, done.
remote: Counting objects: 100% (1018/1018), done.
remote: Compressing objects: 100% (263/263), done.
remote: Total 2292 (delta 846), reused 834 (delta 747), pack-reused 1274 (from 1)
Receiving objects: 100% (2292/2292), 846.29 KiB | 1.87 MiB/s, done.
Resolving deltas: 100% (1505/1505), done.


[3] 生成overleaf服务配置,并设置服务端口
首先,生成服务配置文件:

./bin/init

使用 bin/init 指令来进行初始化的配置文件生成,运行完该指令之后应该会创建出三个配置文件,分别是:config/overleaf.rc,config/variables.env 以及 config/version,分别对应 Overleaf 容器的配置, docker 的环境配置以及选用的 Overleaf 的 docker 镜像。

接着,修改配置文件。

  • (1) overleaf.rc 文件中我们需要注意的几个配置:

OVERLEAF_PORT 指的是运行 Overleaf 的容器要选择曝露的端口,默认是 80 端口但如果有要使用 Nginx
反向代理的需求的话则需要自选一个端口(不常用的就行); SIBLING_CONTAINERS_ENABLED 这个配置真的巨坑,默认的话是
true 但如果没有购买官方的 Server Pro 的话请直接修改成 false,因为这个功能很大程度上依赖于官方提供给 Server
Pro 用户的镜像,如果不调到 false 的话极有可能出现编译失败的情况;

其他的则可以按需进行修改,详细可参考官方 Github
的介绍:https://github.com/overleaf/toolkit/blob/master/doc/overleaf-rc.md?spm=a2c6h.12873639.article-detail.10.5a3369458NLdVU&file=overleaf-rc.md

  • (2) variables.env文件主要都是一些 Overleaf 程序上的配置,如 OVERLEAF_NAV_TITLE 等就是网页上导航栏的标题,不修改也不会出大问题。
  • (3)version 文件一般初次部署默认不用修改;


注意
如果你当前的ECS服务器没有部署其他服务,那么参考上面的配置,基本没有问题。但是如果有其他服务部署,那么可能存在80端口被占用的问题,那么建议更换下端口号。


[4] 部署 overleaf服务
在overleaf-toolkit文件夹里面,执行下面的命令,先测试下看看overleaf服务是否能够正常启动:

./bin/up


这时候,系统会调用 docker-compose 帮我们创建所需要的容器,并且可以看到输出了很多的日志信息。


然后,我们可以直接通过日志信息或者到浏览器访问:
http://服务器IP:Overleaf端口 查看是否运行成功。
比如:http://12.121.121.12:80


服务器IP查询:


注意,如果连接不成功,那么可能的原因有几种:

  • 1) 端口配置问题,查看下是否80端口已经被其他应用占用,如果是,那么换一个端口;
  • 2)ECS服务器的安全策略限制,导致无法连接,那么更新下安全策略
  • 3)防火墙设置,导致80端口无法连接,那么更新下防火墙配置



如果运行成功的话应该能够正常访问,我们就可以按下 Ctrl+C 终止运行,并且使用命令:

./bin/start

让程序进入后台长期运行,之后我们可以通过指令:

docker stats

来观察服务运行的情况


4. 更新TexLive包

在这一步之前,虽然我们能够使用overleaf服务,但是编译tex文件会出现问题。这是因为TexLive包没有更新。

首先,我们创建一个docker container, 运行如下命令:

docker exec -it sharelatex bash

这样直接进入到 sharelatex这个容器环境。

接着,我们需要更新下容器的源更新为阿里云的镜像源(参考:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.12873639.article-detail.11.5a3369458NLdVU),同时设置我们的 TexLive Manager 的源也改成阿里云的源:

tlmgr option repository https://mirrors.aliyun.com/CTAN/systems/texlive/tlnet

更新下daemon.json文件,非常关键,否则后面可能遇到下面的更新问题


ERROR: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)


sudo vim /etc/docker/daemon.json


在daemon.json里面补充如下内容:

{
“registry-mirrors”: [“https://docker.211678.top”,“https://docker.1panel.live”,“https://hub.rat.dev”,“https://docker.m.daocloud.io”,“https://do.nark.eu.org”,“https://dockerpull.com”,“https://dockerproxy.cn”,
https://docker.awsl9527.cn”]
}


然后保存文件。


最后,直接执行下面的命令,更新texlive:

tlmgr install scheme-full

此步骤需要的时间较长,并且容易造成 IO 飙升, ECS服务器如果是2Gib版本,通常会在这一步执行过程中,进入假死状态,导致无法操作。4Gib和8Gib版本,通常没有问题,直接通过。


  • 进入安装状态


  • 安装过程中,CPU, MEM的情况


  • 安装完成画面:


待得安装完成后,可运行 exit 退出容器的 shell,并运行:

cat config/version


获取当前的version信息,接着

docker sharelatex/sharelatex:[version]-with-texlive-full
echo [version]-with-texlive-full > config/version

将容器刻录成镜像,防止重启重建时需要再次重新安装 TexLive 完整版,
至此完整版 TexLive 即安装完成。


5. XeLaTex修复

网上文章介绍说XeLaTex镜像是破损的,需要进行更新,这个没有特别验证,就直接更新了下,比较简单,代码如下:

docker exec -it sharelatex bash
apt update
apt install -y texlive-xetex texlive-latex-extra texlive-science


6. 中文字体支持

这一步看个人需求,如果是面向学术写作,这一步实际并不太重要,因为文章通常是用英文写的。

需要中文支持的同学,可以参考下面步骤。注意:本人没有亲测,不保证是否有坑!

1、将Windows机的中文字体复制到host机,Windows机的字体储存在C:\windows\Fonts,目录,这里复制到host机的/root/Fonts目录:
# 进入Fonts目录
 cd Fonts/ 
# 删除其中的.fon字体文件(否则可能会报错) 
 rm -r *.fon 
# 返回上层目录并打包 
 cd .. 
 tar -zcvf winfonts.tar.gz Fonts/ 
# 把压缩文件传到sharelatex容器的root目录下
 docker cp winfonts.tar.gz sharelatex:/root 
# 进入容器的命令行界面 
 docker exec -it sharelatex bash 
# 通过安装wqy字体同时安装xfont工具 
 apt-get install xfonts-wqy 
# 进入root目录,解压winfonts.tar.gz,并移动到系统字体目录下 
 cd ~ 
 tar -zxvf 
 winfonts.tar.gz mv Fonts usr/share/fonts/ 
# 进入字体目录安装字体 
 cd usr/share/fonts/Fonts 
 mkfontscale 
 mkfontdir 
 fc-cache -fv 
# 检查确认中文字体安装成功 
 fc-list :lang=zh-cn 
#此时会出现已经安装的中文字体
2、重启服务
 docker restart sharelatex


7. overleaf账号管理

[1] 管理员账户
使用浏览器,访问:
http://ECS-IP: 端口/launchpad 建立管理员账号
比如:http://127.0.0.1:80/launchpad

如果已经注册好,那么会跳转到管理员登陆界面。
例如: http://127.0.0.1/login (这里的IP,就是你的ECS对外公网IP)

[2] 建立普通用户账号
以管理员身份操作,选择 ”Manage User“,增加其他用户的邮箱信息,然后会得到一个修改密码的连接。

将这个修改密码的链接,发给你的伙伴,他们按照提示登陆并设置密码,就可以与你一同使用overleaf服务了。


注意:

  • 这里有一个坑点,之前我们没有修改overleaf的配置,这时候在Set Password Url里面,出现的还是http://overleaf.example.com, 实际需要替换为你的服务器IP信息,即: http://ECS-IP.

至此,Overleaf服务已经完成部署工作,可以愉快地去邀请你的小伙伴一起写论文了。


8. 致谢

本文创作所使用的ECS服务器为阿里云提供的免费ECS,感谢阿里云!

有需要的朋友,可以使用下面链接,体验免费版本或者购买ECS的双十一优惠:
免费ECS链接:https://free.aliyun.com/


双十一活动链接:https://www.aliyun.com/activity/1111/2024


后记

如果觉得我的博客对您有用,欢迎三连击 (点赞、收藏、关注和评论) 不迷路,我将持续为您带来计算机人工智能前沿技术(尤其是AI相关的大语言模型,深度学习和计算机视觉相关方向)最新学术论文及工程实践方面的内容分享,助力您更快更准更系统地了解 AI前沿技术

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
弹性计算 监控 负载均衡
|
2月前
|
NoSQL Redis Windows
windows服务器重装系统之后,Redis服务如何恢复?
windows服务器重装系统之后,Redis服务如何恢复?
71 6
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
120 60
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
203 62
|
17天前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
80 3
|
1月前
|
SQL 存储 数据管理
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
Hadoop-15-Hive 元数据管理与存储 Metadata 内嵌模式 本地模式 远程模式 集群规划配置 启动服务 3节点云服务器实测
56 2
|
2月前
|
Java 应用服务中间件 Windows
windows服务器重装系统之后,Tomcat服务如何恢复?
windows服务器重装系统之后,Tomcat服务如何恢复?
58 10
|
2月前
|
消息中间件 Java Kafka
windows服务器重装系统之后,Kafka服务如何恢复?
windows服务器重装系统之后,Kafka服务如何恢复?
30 8
|
1月前
|
网络安全 Docker 容器
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
【Bug修复】秒杀服务器异常,轻松恢复网站访问--从防火墙到Docker服务的全面解析
25 0
|
1月前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务

相关产品

  • 云服务器 ECS