济源市网站建设_网站建设公司_SEO优化_seo优化
2026/1/16 18:53:25 网站建设 项目流程

本地化OutLine部署小记

写在前面

最近在研究有什么好用的在线云文档工具,而且要能够本地化部署的。

经过了一系列的研究,最终选用了这个outline。

但是,官方的文档十分地不友好,需要做的配置项过多,包括但不限于:

  1. 官方的docker-compose没法直接拉起来用。
  2. 其本身并没有用户管理的系统,需要使用oidc协议挂载一个专门的统一认证执行登录。(不一定是坏事)
  3. 老的版本需要对接Amazon S3 Bucket执行数据存储,这一部分容易引入其他的报错项。
  4. 图片存储的时候,有一个路径需要自己建起来,否则会无法存图。

经过了一个晚上+一个白天的折腾,终于架设起来了一个本地化的OutLine服务。

下面是部署流程

好评功能

  1. 统一认证登录(近似,内网化的情况下可以少维护一组账号)
  2. 支持文档多人在线编辑,评论和@的功能@谢丰泽
  3. 支持类似于gitlab一样,实现分组设置文档的权限。

缺点

  1. 无法像飞书那样发分享链接后立即针对该人/该群设置权限(当然没和IM连动是这样的)
  2. 无法实现单文档的权限管理,必须挂在某一个group下(要是想分享给别人则必须开一个group,到时候会有很多的group)。

参考文档

感谢https://www.cnblogs.com/id404/p/17989524提供的一键安装脚本,本人的安装素材是在这个基础上进行二次修改得到的。

感谢https://blog.csdn.net/zhanjiafeiss/article/details/148282284提供的将gitlab应用于outline的登录的介绍。

部署流程

Docker下载

下载下面这三个docker

redis:latest
outlinewiki/outline:0.72.0-3
postgres:15.2-alpine3.17

对于redis应该是任意版本都可以。

对于outline,推荐使用当前的这个版本,老版本或者新版本的feature很可能导致部署失败。

对于postgres,理论上应该不限版本。

我这个经过了极致精简,没有nginx,没有https-portal,以尽可能提高部署成功率。

GitLab注册

请参考第二个链接中,如何将gitlab应用于outline登录的链接中,对gitlab部分的配置。

(对本地的配置可以继续参照我这里)

这里补充说明一个redirect_url(回调URL)应当如何设置的说明,设置的格式为:

http://host:port/auth/oidc.callback

此处需要填写outline所对应服务器的host和port。

本人使用了一台阿里云服务器进行部署,且直接映射往80端口,故配置为

http://47.120.60.242/auth/oidc.callback

(不要尝试访问了,非公司内网是访问不到的)

文件准备

我们新建一个文件夹,假设名字叫做outline,然后里面放置四个文件,分别为.env docker-compose.yml env.oidc env.outline,然后就可以启动了。

.env

准备.env文件[注意里面的HTTP_IP和HTTP_PORT_IP]需要修改为outline服务器的host和port。

NETWORKS=outlinewiki
NETWORKS_EXTERNAL=false
HTTP_IP=47.120.60.242
HTTP_PORT_IP=80
OUTLINE_VERSION=0.72.0-3
POSTGRES_VERSION=15.2-alpine3.17
MINIO_VERSION=RELEASE.2022-11-17T23-20-09Z
MINIO_MC_VERSION=RELEASE.2022-11-17T21-20-39Z

env.oidc

准备env.oidc文件

注意里面的OIDC_AUTH_URI OIDC_TOKEN_URI和OIDC_USERINFO_URI中的内容,应该是gitlab对应的host和port,这里也是用了80端口所以没有配置。

# 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://<URL>/auth/oidc.callback
OIDC_CLIENT_ID=ldfalsdfjlasklfklsadfjklasdjklfjklsdfjklasjklfs #修改为你自己的,从gitlab复制过来
OIDC_CLIENT_SECRET=gloas-w49rj3489rj89efsdlfgjklsdfjklgjldj    #修改为你自己的,从gitlab复制过来
OIDC_AUTH_URI=http://47.113.216.116/oauth/authorize/
OIDC_TOKEN_URI=http://47.113.216.116/oauth/token/
OIDC_USERINFO_URI=http://47.113.216.116/oauth/userinfo/# Specify which claims to derive user information from
# Supports any valid JSON path with the JWT payload
OIDC_USERNAME_CLAIM=username# Display name for OIDC authentication
OIDC_DISPLAY_NAME=GitLab# Space separated auth scopes.
OIDC_SCOPES=openid email

env.outline

准备env.outline文件

由于SECRET_KEY和UTILS_SECRET这两个key的危险性过高,已经被去除,可以用注释中的命令去生成。

本地的AWS_SECRET_ACCESS_KEY无所谓,都是存储在本地的。

注意里面的URL要填写outline服务器的访问的url。

注意第12行中的port,这个PORT和外面的port无关,不需要修改,具体看下方的docker-compose.yml中的端口映射既可。

# Copy this file to .env, remove this comment and change the keys. For development
# with docker this should mostly work out of the box other than setting the Slack
# keys (for auth) and the SECRET_KEY.
#
# Please use `openssl rand -hex 32` to create SECRET_KEY
SECRET_KEY=  #填写你的key
UTILS_SECRET=#填写你的key# Must point to the publicly accessible URL for the installation
URL=http://47.120.60.242
PORT=3000# Optional. If using a Cloudfront distribution or similar the origin server
# should be set to the same as URL.
CDN_URL=http://47.120.60.242# enforce (auto redirect to) https in production, (optional) default is true.
# set to false if your SSL is terminated at a loadbalancer, for example
FORCE_HTTPS=falseENABLE_UPDATES=true
DEBUG=cache,presenters,events,emails,mailer,utils,multiplayer,server,services# Third party signin credentials (at least one is required)# 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://<your Outline URL>/auth/google.callback
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=# Comma separated list of domains to be allowed (optional)
# If not set, all Google apps domains are allowed by default
GOOGLE_ALLOWED_DOMAINS=# Third party credentials (optional)
SLACK_VERIFICATION_TOKEN=
SLACK_MESSAGE_ACTIONS=false
GOOGLE_ANALYTICS_ID=
SENTRY_DSN=# AWS credentials (optional in development)
AWS_ACCESS_KEY_ID=39a83a0404ad0f9b
AWS_SECRET_ACCESS_KEY=a6ddc535c7b535166ae73b2a71772c2e4d2c8e30a84d487735e1a561debe4d98
AWS_REGION=xx-xxxx-x
AWS_S3_UPLOAD_BUCKET_URL=http://47.120.60.242
AWS_S3_UPLOAD_MAX_SIZE=26214400
AWS_S3_FORCE_PATH_STYLE=true
# uploaded s3 objects permission level, default is private
# set to "public-read" to allow public access
AWS_S3_ACL=private# Emails configuration (optional)
SMTP_HOST=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_EMAIL=
SMTP_REPLY_EMAIL=# Custom logo that displays on the authentication screen, scaled to height: 60px
# TEAM_LOGO=https://example.com/images/logo.png# See translate.getoutline.com for a list of available language codes and their
# percentage translated.
DEFAULT_LANGUAGE=zh_CN# 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=26214400# Disable SSL for connecting to Postgres
PGSSLMODE=disable
ALLOWED_DOMAINS=

docker-compose.yml

准备docker-compose.yml文件。

唯一一个可能要修改的地方,就是wk-outline中的ports,这里需要修改为你最终访问的那个port。

version: "3"
services:wk-redis:image: redis:latestrestart: alwaysnetworks:- outlinewikiwk-postgres:image: postgres:${POSTGRES_VERSION}environment:POSTGRES_USER: userPOSTGRES_PASSWORD: passPOSTGRES_DB: outlinevolumes:- ./data/pgdata:/var/lib/postgresql/datarestart: alwaysnetworks:- outlinewikiwk-outline:image: outlinewiki/outline:${OUTLINE_VERSION}command: sh -c "yarn db:migrate --env production-ssl-disabled && yarn start"ports:- 80:3000environment:- DATABASE_URL=postgres://user:pass@wk-postgres:5432/outline- DATABASE_URL_TEST=postgres://user:pass@wk-postgres:5432/outline-test- REDIS_URL=redis://wk-redis:6379- AWS_S3_UPLOAD_BUCKET_NAME=outline-bucketenv_file:- ./env.outline- ./env.oidcvolumes:- ./data/outline:/var/lib/outline/datarestart: alwaysdepends_on:- wk-postgres- wk-redisnetworks:- outlinewiki
networks:outlinewiki:external: ${NETWORKS_EXTERNAL}

启动

我们将几个文件复制到一起以后,运行docker compose up既可启动,如图所示:

a23ec011-3858-468b-905f-ed58c5cbc2de

outline有一点值得表扬:可以不用预先建data这个文件夹,当outline发现没有这个文件夹的时候,会直接自动创建,postgres也会自动建立所需要的表。(除了启动比较慢)

访问

启动以后,我们就可以访问到了,按照这里的配置,我们的访问链接是47.120.60.242,我们可以打开到这个页面:

bcb57203-a94c-4719-997d-5b547453ecee

然后,我们直接去gitlab中登录既可。

gitlab有可能会提示重定向失败,这个时候就需要去重新配置GitLab注册部分的内容了。

然后你就可以看到如下的内容:

b17bc709-d66c-41aa-960c-4c4ff150d46e

文档共享

此处有一个需要注意的地方,即如果你要给某一个用户开权限,则这个用户必须登陆过这个系统才可以,否则用户列表中找不到他。

数据迁移

数据需要迁移的话直接把data这个文件夹复制走就可以了。

当然,注意docker-compose中的挂载需要一样。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询