白嫖了半年的overleaf高级会员,然后四月份发邮件告诉我不能用了。

我的那一坨文档编译必定会超时,想着买个会员支持一下吧,要VISA,算了本地部署吧。

前置

完成docker的安装,我用的是windows版的docker(就是开wsl那个)

最好下一个GUI的Docker Desktop,方便管理。

安装

  1. 拉取最新版本的:
1
docker pull sharelatex/sharelatex
  1. 下载 docker-compose.yml 文件到本地

官方提供了一个github,但是很遗憾,上次更新是在3年前,根本没更新过。下面提供一个可以跑的版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
version: '2.2'
services:
sharelatex:
restart: always
# Server Pro users:
# image: quay.io/sharelatex/sharelatex-pro
image: sharelatex/sharelatex
container_name: sharelatex
depends_on:
mongo:
condition: service_healthy
redis:
condition: service_started
ports:
- 9010:80
links:
- mongo
- redis
stop_grace_period: 60s
volumes:
- ~/sharelatex_data:/var/lib/overleaf
########################################################################
#### Server Pro: Uncomment the following line to mount the docker ####
#### socket, required for Sibling Containers to work ####
########################################################################
# - /var/run/docker.sock:/var/run/docker.sock
environment:

OVERLEAF_APP_NAME: Overleaf Community Edition

OVERLEAF_MONGO_URL: mongodb://mongo/sharelatex
# OVERLEAF_MONGO_URL: mongodb://mongo/sharelatex

# Same property, unfortunately with different names in
# different locations
OVERLEAF_REDIS_HOST: redis
# OVERLEAF_REDIS_HOST: redis
REDIS_HOST: redis

ENABLED_LINKED_FILE_TYPES: 'project_file,project_output_file'

# Enables Thumbnail generation using ImageMagick
ENABLE_CONVERSIONS: 'true'

# Disables email confirmation requirement
EMAIL_CONFIRMATION_DISABLED: 'true'

# temporary fix for LuaLaTex compiles
# see https://github.com/overleaf/overleaf/issues/695
TEXMFVAR: /var/lib/overleaf/tmp/texmf-var

## Set for SSL via nginx-proxy
#VIRTUAL_HOST: 103.112.212.22

# OVERLEAF_SITE_URL: http://overleaf.example.com
# OVERLEAF_NAV_TITLE: Overleaf Community Edition
# OVERLEAF_HEADER_IMAGE_URL: http://example.com/mylogo.png
# OVERLEAF_ADMIN_EMAIL: support@it.com

# OVERLEAF_LEFT_FOOTER: '[{"text": "Another page I want to link to can be found <a href=\"here\">here</a>"} ]'
# OVERLEAF_RIGHT_FOOTER: '[{"text": "Hello I am on the Right"} ]'

# OVERLEAF_EMAIL_FROM_ADDRESS: "hello@example.com"

# OVERLEAF_EMAIL_AWS_SES_ACCESS_KEY_ID:
# OVERLEAF_EMAIL_AWS_SES_SECRET_KEY:

# OVERLEAF_EMAIL_SMTP_HOST: smtp.example.com
# OVERLEAF_EMAIL_SMTP_PORT: 587
# OVERLEAF_EMAIL_SMTP_SECURE: false
# OVERLEAF_EMAIL_SMTP_USER:
# OVERLEAF_EMAIL_SMTP_PASS:
# OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH: true
# OVERLEAF_EMAIL_SMTP_IGNORE_TLS: false
# OVERLEAF_EMAIL_SMTP_NAME: '127.0.0.1'
# OVERLEAF_EMAIL_SMTP_LOGGER: true
# OVERLEAF_CUSTOM_EMAIL_FOOTER: "This system is run by department x"

# ENABLE_CRON_RESOURCE_DELETION: true

################
## Server Pro ##
################

# SANDBOXED_COMPILES: 'true'

# SANDBOXED_COMPILES_SIBLING_CONTAINERS: 'true'
# SANDBOXED_COMPILES_HOST_DIR: '/var/sharelatex_data/data/compiles'

# DOCKER_RUNNER: 'false'

## Works with test LDAP server shown at bottom of docker compose
# OVERLEAF_LDAP_URL: 'ldap://ldap:389'
# OVERLEAF_LDAP_SEARCH_BASE: 'ou=people,dc=planetexpress,dc=com'
# OVERLEAF_LDAP_SEARCH_FILTER: '(uid={{username}})'
# OVERLEAF_LDAP_BIND_DN: 'cn=admin,dc=planetexpress,dc=com'
# OVERLEAF_LDAP_BIND_CREDENTIALS: 'GoodNewsEveryone'
# OVERLEAF_LDAP_EMAIL_ATT: 'mail'
# OVERLEAF_LDAP_NAME_ATT: 'cn'
# OVERLEAF_LDAP_LAST_NAME_ATT: 'sn'
# OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN: 'true'

# OVERLEAF_TEMPLATES_USER_ID: "578773160210479700917ee5"
# OVERLEAF_NEW_PROJECT_TEMPLATE_LINKS: '[ {"name":"All Templates","url":"/templates/all"}]'


# OVERLEAF_PROXY_LEARN: "true"`

mongo:
restart: always
image: mongo:5.0
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:
restart: "no"
image: mongo:5.0
depends_on:
mongo:
condition: service_healthy
entrypoint:
[
"mongo",
"--host",
"mongo:27017",
"--eval",
'rs.initiate({ _id: "overleaf", members: [ { _id: 0, host: "mongo:27017" } ] })',
]
redis:
restart: always
image: redis:6.2
container_name: redis
expose:
- 6379
volumes:
- ~/redis_data:/data

# ldap:
# restart: always
# image: rroemhild/test-openldap
# container_name: ldap
# expose:
# - 389

# See https://github.com/jwilder/nginx-proxy for documentation on how to configure the nginx-proxy container,
# and https://github.com/overleaf/overleaf/wiki/HTTPS-reverse-proxy-using-Nginx for an example of some recommended
# settings. We recommend using a properly managed nginx instance outside of the Overleaf Server Pro setup,
# but the example here can be used if you'd prefer to run everything with docker-compose

# nginx-proxy:
# image: jwilder/nginx-proxy
# container_name: nginx-proxy
# ports:
# #- "80:80"
# - "443:443"
# volumes:
# - /var/run/docker.sock:/tmp/docker.sock:ro
# - /home/overleaf/tmp:/etc/nginx/certs

我把端口设成了9010

  1. 启动docker:在下载docker-compose.yml的文件夹下输出命令启动docker
1
docker-compose up
  1. 访问127.0.0.1:9010就成功了
    overleaf部署成功

注册

这里没有注册按钮,因为我们需要注册一个总管理。通过访问http://127.0.0.1:9010/launchpad 可以配置管理员账号;

注册即可,如果你是一个人那么就用这个总管理即可

更新编译环境

编译环境比较老

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

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

1
# cd /usr/local/texlive

3.下载更新文件:

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

4.执行更新操作:

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

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

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

6.执行更新操作:

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

7.执行安装操作:

1
# tlmgr install scheme-full

8.关闭重启Overleaf:

问题

可能出现什么PDF不存在,这个时候,点击左上角Menu,把编译器设置为XeLatex


参考
[1] https://zhuanlan.zhihu.com/p/656444021