«

自建overleaf服务器

叫个啥名字 发布于 阅读:3152 linux


之前一直使用overleaf写tex,但苦于网络连接不稳定、临近投稿前大量人使用导致编译缓慢、文件隐私性等问题,于是使用自己的服务器搭建overleaf。

项目地址:GitHub - overleaf/: A web-based collaborative LaTeX editor

运行环境:linux服务器(需要预先安装docker, ubuntu为例)


一、安装overleaf

首先将overleaf项目从github拉至本地

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

然后进行初始化配置

cd ./overleaf
sudo bin/init

这里我们进入config下的overleaf.rc文件进行配置:


OVERLEAF_LISTEN_IP=0.0.0.0     #设置为0.0.0.0才能被所有ip访问
OVERLEAF_PORT=7460    #想映射的端口,默认的80端口常常被占用(注意,映射的端口需要在防火墙中开放)

其中还有许多个性化的配置:如网页抬头文字内容,网址标题,UI语言(中文)等,可以在overleaf的Wiki页面 中进行查看

下面为一些我的设置,variables.env

OVERLEAF_SITE_LANGUAGE=zh-CN
OVERLEAF_APP_NAME="Personal Overleaf"
ENABLED_LINKED_FILE_TYPES=project_file,project_output_file
ENABLE_CONVERSIONS=true
EMAIL_CONFIRMATION_DISABLED=true
OVERLEAF_RESTRICT_INVITES_TO_EXISTING_ACCOUNTS=true
OVERLEAF_BEHIND_PROXY=true
OVERLEAF_SECURE_COOKIE=true
OVERLEAF_SITE_URL=https://overleaf.wangsy.site:8443
OVERLEAF_NAV_TITLE=Personal Overleaf
OVERLEAF_ADMIN_EMAIL=wangshengyu@njust.edu.cn
OVERLEAF_LEFT_FOOTER=[{"text":"Designed by wangsy © 2024", "url": "https://www.wangsy.fun"}, {"text":"Welcome to wangsy site", "url": "https://www.wangsy.fun"}]
OVERLEAF_RIGHT_FOOTER=[{"text":"Happy every day"}]
ENABLE_CRON_RESOURCE_DELETION=true
OVERLEAF_EMAIL_FROM_ADDRESS=XXX@vip.163.com
OVERLEAF_EMAIL_SMTP_HOST=smtp.vip.163.com
OVERLEAF_EMAIL_SMTP_PORT=25
OVERLEAF_EMAIL_SMTP_SECURE=false
OVERLEAF_EMAIL_SMTP_USER=XXX@vip.163.com
OVERLEAF_EMAIL_SMTP_PASS=XXXX
OVERLEAF_EMAIL_SMTP_NAME=MoreFine-of-wangsy
OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=false
OVERLEAF_EMAIL_SMTP_IGNORE_TLS=true
OVERLEAF_EMAIL_SMTP_LOGGER=true
OVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by the MoreFine of wangsy in Shandong province.
# Set for the Server Pro
EXTERNAL_AUTH=none

然后还需要在拉去镜像前先将镜像的环境变量写入:

vim .lib/docker-compose.base.yml

 

在environment:添加以下内容

PATH: "/usr/local/texlive/2019/bin/x86_64-linux:$PATH"
为了与宿主机时区相同,并在docker-compose.base.yml中的volumes:添加以下数据
- "/etc/timezone:/etc/timezone"
- "/etc/localtime:/etc/localtime"

执行容器,如果之前没有安装过docker-compose还需要预先安装

# centos: yum install docker-compose
# ubuntu: apt install docker-compose
以上变量设置好后,开始拉取镜像并创建容器

sudo bin/up

可以等出现大量的log时使用 ctrl+c 停止, 然后执行

sudo bin/start

至此完成后台运行容器,overleaf的停止,重装等等可以通过bin下的命令进行。

注意的是当config的变量等数据更改后需要重新运行sudo bin/up,这样容器重新设置,所以后续第二步的下载texlive包需要重新运行。

然后用浏览器打开以下网址

http://IP:端口/launchpad

应该能看到管理员注册界面,至此overleaf的安装结束。

二、下载完整texlive包

以上安装的overleaf配套的LaTeX不是完整版,所以需要继续下载。

首先进入容器的bash:

sudo docker exec -it sharelatex bash
cd /usr/local/texlive

然后执行以下命令:

# 下载并运行升级脚本
wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
sh update-tlmgr-latest.sh -- --upgrade
# 更换texlive的下载源
tlmgr option repository http://mirrors.cloud.tencent.com/CTAN/systems/texlive/tlnet
#升级tlmgr
nohup tlmgr update --self --all > update.log 2>&1 &
tail -f update.log
完成后再进行下一步
# 安装完整版texlive(时间比较长,不要让shell断开)
nohup tlmgr install scheme-full > install.log 2>&1 &

#可能shell会中断,后台运行没关系,重新进入docker查看tl.log是否运行完毕,运行完毕后再执行下一步。
tail -f install.log
#完成的标识出现以下字样
#tlmgr: package log updated: /usr/local/texlive/2022/texmf-var/web2c/tlmgr.log
#tlmgr: command log updated: /usr/local/texlive/2022/texmf-var/web2c/tlmgr-commands.log

# 退出sharelatex的命令行界面,并重启sharelatex容器
exit
docker restart sharelatex

PS:支持中文 Overleaf以及sharelatex如何安装各种字库 (ivdone.cn)

不想下载完整版,有个简便方法:

直接使用宿主机的textlive,可以直接将宿主机安装后的复制过去,前提是提前在docker-compose.base.yml文件中已经添加了环境路径,例如2019版本:

在docker-compose.base.yml中的environment部分添加以下内容:

 
PATH: "/usr/local/texlive/2019/bin/x86_64-linux:$PATH"
然后退回宿主机,运行:
sudo docker cp /usr/local/texlive/2019  sharelatex:/usr/local/texlive/2019

三、上传取消50m大小的限制

1.修改反代nginx的大小限制。

sudo docker exec -it sharelatex bash

(a) 修改docker容器里面以下三个文件中的client_max_body_size: 50M  // 50M   !把50修改为1024

/etc/nginx/templates/nginx.conf.template

/etc/nginx/nginx.conf

/overleaf/server-ce/nginx/nginx.conf.template    //这一项如果没有就不管了

修改容器中overleaf的自带限制:
/overleaf/services/web/config/settings.defaults.js

maxUploadSize50 * 1024 * 1024 // 50 MB   !把50修改为1024

/overleaf/services/web/app/src/Features/Uploads/ArchiveManager.js

const isTooLarge = totalSizeInBytes > ONE_MEG * 300 // !把300 改为1024

(b) 如果也使用了宿主机反代,则修改宿主机反代,1panel面板在  网站>>设置>>配置修改,将以下两项全部设置为1024m

client_body_buffer_size 1024m

client_max_body_size 1024m

四、其他配置

进入容器
1.docker-compose没有设置时区宿主机相同,通过以下命令设置,在宿主机中运行以下:
docker cp /usr/share/zoneinfo/Asia/Shanghai sharelatex:/etc/localtime
然后进入docker:
sudo docker exec -it sharelatex bash
然后并运行:
echo "Asia/Shanghai" > /etc/timezone

2. 配置代码高亮。
安装 minted 包。
apt update apt install python-pygments python3-pygments
然后修改 /usr/local/texlive/2019/texmf.cnf (注意版本号要根据实际情况决定),并添加:
shell_escape = t

3.安装微软字体
apt-get install ttf-mscorefonts-installer
fc-cache



4.配置可在textlive中调用命令行:
修改/usr/local/texlive/2023/texmf.cnf
添加:shell_escape = t

五、升级后注意事项

手动备份data后升级,会出现一些问题。
1.data/sharelatex 下的文件所有权应该为www-data,而手动备份后权限变了。
所以手动备份升级后,将data数据拷贝进来后运行。data下另外两个也变了,需要根据实际情况改权限。

cd data

chown 999:root   mongo

chown 999:root   redis

chown root:root  overleaf

chown -R 999:docker  mongo/*

chown -R 999:docker  redis/*

chown -R www-data:www-data  overleaf/*

2.sharelatex里面的texlive版本太新导致,这个可以在宿主机中安装旧版本的texlive,然后

sudo docker cp /usr/local/texlive  sharelatex:/usr/local

这里要注意docker中的文件夹,原来是2022还是2023。

另外需要在overleaf/lib/docker-compose.base.yml中是否添加了

PATH: /usr/local/texlive/xxxx/bin/x86_64-linux:$PATH这句话,xxxx是具体的docker中的版本,即路径

Note:

旧版本的textlive:

Index of /pub/tex/historic/systems/texlive (utah.edu)

Index of /tex-historic-archive/systems/texlive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

安装旧版本后可能也需要更新旧版本到旧版本中的最新版本,可以通过以下操作,年份版本根据实际情况修改:

wget https://mirrors.tuna.tsinghua.edu.cn/tex-historic-archive/systems/texlive/2022/tlnet-final/update-tlmgr-latest.sh

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

tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/tex-historic-archive/systems/texlive/2022/tlnet-final

nohup tlmgr update --self --all > update.log 2>&1 &

nohup tlmgr install scheme-full > install.log 2>&1 &

 
 

六、各种清理docker存储的命令

prune 命令用来删除不再使用的 docker 对象。

删除所有未被 tag 标记和未被容器使用的镜像:

docker image prune

删除所有未被容器使用的镜像:

docker image prune -a

删除所有停止运行的容器:

docker container prune

删除所有未被挂载的卷:

docker volume prune

删除所有网络:

docker network prune

删除 docker 所有资源:

docker system prune

overleaf

请先 登录 再评论
收到16条评论
avatar
jrgwfdtgsq 1 年前
自建overleaf服务器
[url=http://www.g3go7li016kok7fw7dx0y372810a9k7ss.org/]ujrgwfdtgsq[/url]
<a href="http://www.g3go7li016kok7fw7dx0y372810a9k7ss.org/">ajrgwfdtgsq</a>
jrgwfdtgsq http://www.g3go7li016kok7fw7dx0y372810a9k7ss.org/
回复
avatar
yfnnyhifee 1 年前
自建overleaf服务器
[url=http://www.gu8u1z73r16451y4we3o4id093rrmmk1s.org/]uyfnnyhifee[/url]
yfnnyhifee http://www.gu8u1z73r16451y4we3o4id093rrmmk1s.org/
<a href="http://www.gu8u1z73r16451y4we3o4id093rrmmk1s.org/">ayfnnyhifee</a>
回复
avatar
ifviytyevh 1 年前
自建overleaf服务器
<a href="http://www.g9v2954d1wfa0wj59sm4vbh86t6d2o51s.org/">aifviytyevh</a>
[url=http://www.g9v2954d1wfa0wj59sm4vbh86t6d2o51s.org/]uifviytyevh[/url]
ifviytyevh http://www.g9v2954d1wfa0wj59sm4vbh86t6d2o51s.org/
回复
avatar
gzpximdrpe 1 年前
自建overleaf服务器
gzpximdrpe http://www.g38cd77h6a82718ynoutqkyq253n293gs.org/
[url=http://www.g38cd77h6a82718ynoutqkyq253n293gs.org/]ugzpximdrpe[/url]
<a href="http://www.g38cd77h6a82718ynoutqkyq253n293gs.org/">agzpximdrpe</a>
回复
avatar
kdihydgps 1 年前
自建overleaf服务器
<a href="http://www.g2psy1mc325420g31c9zk3f6lql0bq42s.org/">akdihydgps</a>
[url=http://www.g2psy1mc325420g31c9zk3f6lql0bq42s.org/]ukdihydgps[/url]
kdihydgps http://www.g2psy1mc325420g31c9zk3f6lql0bq42s.org/
回复