outline,一款开源的文档知识库

此篇文档书写不易,搭建过程中出现了众多错误,配置文件过于复杂,由我踩坑,望帮助到你。

 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

version: "3.2"
services:

  outline:
    image: outlinewiki/outline:latest
    container_name: outline
    env_file: ./docker.env
    ports:
      - "3000:3000"
    volumes:
      - ./storage-data:/var/lib/outline/data
    depends_on:
      - postgres
      - redis

  redis:
    image: redis
    container_name: outline_redis
    env_file: ./docker.env
    ports:
      - "6379:6379"
    volumes:
      - ./redis.conf:/redis.conf
    command: ["redis-server", "/redis.conf"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 30s
      retries: 3

  postgres:
    image: postgres
    container_name: outline_postgres
    env_file: ./docker.env
    ports:
      - "5432:5432"
    volumes:
      - ./database-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-d", "outline", "-U", "user"]
      interval: 30s
      timeout: 20s
      retries: 3
    environment:
      POSTGRES_USER: 'user'
      POSTGRES_PASSWORD: 'pass'
      POSTGRES_DB: 'outline'

  https-portal:
    image: steveltn/https-portal
    container_name: outline_https-portal
    env_file: ./docker.env
    ports:
      - '80:80'
      - '443:443'
    links:
      - outline
    restart: unless-stopped
    volumes:
      - ./https-portal-data:/var/lib/https-portal
    healthcheck:
      test: ["CMD", "service", "nginx", "status"]
      interval: 30s
      timeout: 20s
      retries: 3
    environment:
      DOMAINS: 'docs.seektao.cc -> http://outline:3000'
      STAGE: 'production'
      WEBSOCKET: 'true'
      CLIENT_MAX_BODY_SIZE: '0'

docker.env

  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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
# –––––––––––––––– REQUIRED ––––––––––––––––

NODE_ENV=production

# Generate a hex-encoded 32-byte random key. You should use `openssl rand -hex 32`

# in your terminal to generate a random value.

SECRET_KEY=a5a8564663263819b472876321f5a505782004ea0e2fae704312fae53a77fe1f

# Generate a unique random key. The format is not important but you could still use

# `openssl rand -hex 32` in your terminal to produce this.

UTILS_SECRET=generate_a_new_key

# For production point these at your databases, in development the default

# should work out of the box.

DATABASE_URL=postgres://user:pass@outline_postgres:5432/outline

DATABASE_CONNECTION_POOL_MIN=

DATABASE_CONNECTION_POOL_MAX=

# Uncomment this to disable SSL for connecting to Postgres

PGSSLMODE=disable

# For redis you can either specify an ioredis compatible url like this

REDIS_URL=redis://outline_redis:6379

# or alternatively, if you would like to provide additional connection options,

# use a base64 encoded JSON connection option object. Refer to the ioredis documentation

# for a list of available options.

# Example: Use Redis Sentinel for high availability

# {"sentinels":[{"host":"sentinel-0","port":26379},{"host":"sentinel-1","port":26379}],"name":"mymaster"}

# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJzZW50aW5lbC0wIiwicG9ydCI6MjYzNzl9LHsiaG9zdCI6InNlbnRpbmVsLTEiLCJwb3J0IjoyNjM3OX1dLCJuYW

1lIjoibXltYXN0ZXIifQ==

# URL should point to the fully qualified, publicly accessible URL. If using a

# proxy the port in URL and PORT may be different.

URL=https://docs.seektao.cc

PORT=3000

# See [documentation](docs/SERVICES.md) on running a separate collaboration

# server, for normal operation this does not need to be set.

COLLABORATION_URL=

# Specify what storage system to use. Possible value is one of "s3" or "local".

# For "local", the avatar images and document attachments will be saved on local disk.

FILE_STORAGE=local

# If "local" is configured for FILE_STORAGE above, then this sets the parent directory under

# which all attachments/images go. Make sure that the process has permissions to create

# this path and also to write files to it.

FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data

# Maximum allowed size for the uploaded attachment.

FILE_STORAGE_UPLOAD_MAX_SIZE=262144000

# Override the maximum size of document imports, generally this should be lower

# than the document attachment maximum size.

FILE_STORAGE_IMPORT_MAX_SIZE=

# Override the maximum size of workspace imports, these can be especially large

# and the files are temporary being automatically deleted after a period of time.

FILE_STORAGE_WORKSPACE_IMPORT_MAX_SIZE=

# To support uploading of images for avatars and document attachments in a distributed

# architecture an s3-compatible storage can be configured if FILE_STORAGE=s3 above.

AWS_ACCESS_KEY_ID=get_a_key_from_aws

AWS_SECRET_ACCESS_KEY=get_the_secret_of_above_key

AWS_REGION=xx-xxxx-x

AWS_S3_ACCELERATE_URL=

AWS_S3_UPLOAD_BUCKET_URL=http://s3:4569

AWS_S3_UPLOAD_BUCKET_NAME=bucket_name_here

AWS_S3_FORCE_PATH_STYLE=true

AWS_S3_ACL=private

# –––––––––––––– AUTHENTICATION ––––––––––––––

# Third party signin credentials, at least ONE OF EITHER Google, Slack,

# or Microsoft is required for a working installation or you'll have no sign-in

# options.

# To configure Slack auth, you'll need to create an Application at

# => https://api.slack.com/apps

#

# When configuring the Client ID, add a redirect URL under "OAuth & Permissions":

# https:///auth/slack.callback

# https://docs.seektao.cc/auth/slack.callback

SLACK_CLIENT_ID=7687326676465.7671810207669

SLACK_CLIENT_SECRET=432ad37fe62d5ff357dc807c13fd64b9

# To configure Google auth, you'll need to create an OAuth Client ID at

# => https://console.cloud.google.com/apis/credentials

#

# When configuring the Client ID, add an Authorized redirect URI:

# https:///auth/google.callback

GOOGLE_CLIENT_ID=

GOOGLE_CLIENT_SECRET=

# To configure Microsoft/Azure auth, you'll need to create an OAuth Client. See

# the guide for details on setting up your Azure App:

# => https://wiki.generaloutline.com/share/dfa77e56-d4d2-4b51-8ff8-84ea6608faa4

AZURE_CLIENT_ID=

AZURE_CLIENT_SECRET=

AZURE_RESOURCE_APP_ID=

# To configure generic OIDC auth, you'll need some kind of identity provider.

# See documentation for whichever IdP you use to acquire the following info:

# Redirect URI is https:///auth/oidc.callback

OIDC_CLIENT_ID=

OIDC_CLIENT_SECRET=

OIDC_AUTH_URI=

OIDC_TOKEN_URI=

OIDC_USERINFO_URI=

OIDC_LOGOUT_URI=

# Specify which claims to derive user information from

# Supports any valid JSON path with the JWT payload

OIDC_USERNAME_CLAIM=preferred_username

# Display name for OIDC authentication

OIDC_DISPLAY_NAME=OpenID Connect

# Space separated auth scopes.

OIDC_SCOPES=openid profile email

# To configure the GitHub integration, you'll need to create a GitHub App at

# => https://github.com/settings/apps

#

# When configuring the Client ID, add a redirect URL under "Permissions & events":

# https:///api/github.callback

GITHUB_CLIENT_ID=Ov23liFFJo2SJ5bdvaiO

GITHUB_CLIENT_SECRET=304221a41c3ab12854076c617bf9762823741f99

GITHUB_APP_NAME=

GITHUB_APP_ID=

GITHUB_APP_PRIVATE_KEY=

# To configure Discord auth, you'll need to create a Discord Application at

# => https://discord.com/developers/applications/

#

# When configuring the Client ID, add a redirect URL under "OAuth2":

# https:///auth/discord.callback

DISCORD_CLIENT_ID=

DISCORD_CLIENT_SECRET=

# DISCORD_SERVER_ID should be the ID of the Discord server that Outline is

# integrated with.

# Used to verify that the user is a member of the server as well as server

# metadata such as nicknames, server icon and name.

DISCORD_SERVER_ID=

# DISCORD_SERVER_ROLES should be a comma separated list of role IDs that are

# allowed to access Outline. If this is not set, all members of the server

# will be allowed to access Outline.

# DISCORD_SERVER_ID and DISCORD_SERVER_ROLES must be set together.

DISCORD_SERVER_ROLES=

# –––––––––––––––– OPTIONAL ––––––––––––––––

# Base64 encoded private key and certificate for HTTPS termination. This is only

# required if you do not use an external reverse proxy. See documentation:

# https://wiki.generaloutline.com/share/1c922644-40d8-41fe-98f9-df2b67239d45

SSL_KEY=

SSL_CERT=

# If using a Cloudfront/Cloudflare distribution or similar it can be set below.

# This will cause paths to javascript, stylesheets, and images to be updated to

# the hostname defined in CDN_URL. In your CDN configuration the origin server

# should be set to the same as URL.

CDN_URL=

# Auto-redirect to https in production. The default is true but you may set to

# false if you can be sure that SSL is terminated at an external loadbalancer.

FORCE_HTTPS=true

# Have the installation check for updates by sending anonymized statistics to

# the maintainers

ENABLE_UPDATES=true

# How many processes should be spawned. As a reasonable rule divide your servers

# available memory by 512 for a rough estimate

WEB_CONCURRENCY=1

# You can remove this line if your reverse proxy already logs incoming http

# requests and this ends up being duplicative

DEBUG=http

# Configure lowest severity level for server logs. Should be one of

# error, warn, info, http, verbose, debug and silly

LOG_LEVEL=info

# For a complete Slack integration with search and posting to channels the

# following configs are also needed, some more details

# => https://wiki.generaloutline.com/share/be25efd1-b3ef-4450-b8e5-c4a4fc11e02a

#

SLACK_VERIFICATION_TOKEN=your_token

SLACK_APP_ID=A0XXXXXXX

SLACK_MESSAGE_ACTIONS=true

# For Dropbox integration, follow these instructions to get the key https://www.dropbox.com/developers/embedder#setup

# and do not forget to whitelist your domain name in the app settings

DROPBOX_APP_KEY=

# Optionally enable Sentry (sentry.io) to track errors and performance,

# and optionally add a Sentry proxy tunnel for bypassing ad blockers in the UI:

# https://docs.sentry.io/platforms/javascript/troubleshooting/#using-the-tunnel-option)

SENTRY_DSN=

SENTRY_TUNNEL=

# To support sending outgoing transactional emails such as "document updated" or

# "you've been invited" you'll need to provide authentication for an SMTP server

SMTP_HOST=

SMTP_PORT=

SMTP_USERNAME=

SMTP_PASSWORD=

SMTP_FROM_EMAIL=

SMTP_REPLY_EMAIL=

SMTP_TLS_CIPHERS=

SMTP_SECURE=true

# The default interface language. See translate.getoutline.com for a list of

# available language codes and their rough percentage translated.

DEFAULT_LANGUAGE=en_US

# Optionally enable rate limiter at application web server

RATE_LIMITER_ENABLED=true

# Configure default throttling parameters for rate limiter

RATE_LIMITER_REQUESTS=1000

RATE_LIMITER_DURATION_WINDOW=60

# Iframely API config

IFRAMELY_URL=https://docs.seektao.cc

IFRAMELY_API_KEY=9fabb0c3c7fad08a16fcf3
网站总访客数:Loading
网站总访问量:Loading

-->