本地化文档工具Outline的部署和使用

news/2026/1/16 18:55:57/文章来源:https://www.cnblogs.com/alphainf/p/19493676

本地化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中的挂载需要一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1169530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vivado错误日志】[DRC REQP-1741]IDELAY3 drivers invalid load :IDELAY3 DATAOUT pin may not drive a BUFG*

问题描述: 我把7020的工程移植到XCZU19EG上用Vivado编译时报错&#xff1a; [DRC REQP-1741] IDELAY3 drivers invalid load :IDELAY3 data_progress_U0/u_delay_rxd DATAOUT pin(net: data_progress_U0/data_clk)may not drive a BUFG* 原因&#xff1a; 除了时钟信号外&…

这一篇PPO写的不错,有机会再仔细看看

https://zhuanlan.zhihu.com/p/1898817630208517687 强化学习再梳理,从PPO到GRPO到DAPO

2026年优质GEO平台源码哪家好?源头供应商精选 - 源码云科技

2026年优质GEO平台源码哪家好?源头供应商精选2026年AI获客赛道彻底爆发,GEO优化作为抢占智能搜索流量的核心手段,成了企业引流获客、创业者掘金的香饽饽。市面上各类GEO优化服务商、GEO优化软件层出不穷,但想选到靠…

2026年 园林绿化景观厂家推荐排行榜:匠心工艺与生态美学融合,打造城市绿色空间优选品牌 - 品牌企业推荐师(官方)

2026年园林绿化景观厂家推荐排行榜:匠心工艺与生态美学融合,打造城市绿色空间优选品牌 随着城市化进程的深化与生态文明建设的持续推进,园林绿化景观已从单纯的美化装饰,演变为提升城市品质、改善人居环境、促进生…

简单明了的将卡尔曼滤波器讲清楚 - MKT

简单明了的将卡尔曼滤波器讲清楚 整合所有步骤至此,我们已经得到了构建一个单输入-单输出卡尔曼滤波器所需的全部公式。现在可以将它们整合成一个可在软件中实现的算法流程: 初始化:(x =) 系统初始状态估计值 (q…

手持式空气颗粒计数器哪家强?2026年品牌实力综合测评 - 品牌推荐大师1

在洁净室验证、无菌灌装环境监控、半导体制造、制药生产及科研实验室等对空气质量高度敏感的场景中,手持式空气颗粒计数器已成为不可或缺的核心检测工具。它以便携、快速、精准的特点,成为现场颗粒物浓度监测的首选设…

【信道估计】基于matlab LSE和MMSE MIMO OFDM系统信道估计【含Matlab源码 14945期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

2026年 影像仪厂家推荐排行榜:二次元影像仪,半自动影像仪,测量影像仪,全自动影像检测仪器品牌实力深度解析 - 品牌企业推荐师(官方)

2026年影像仪厂家推荐排行榜:二次元影像仪、半自动影像仪、测量影像仪、全自动影像检测仪器品牌实力深度解析 在现代精密制造业的宏大图景中,质量检测是确保产品从图纸走向市场的关键隘口。影像测量技术,作为连接微…

python基于django的社区志愿者活动签到服务平台是设计与实现

目录设计与实现摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;设计与实现摘要 基于Django框架的社区志愿者活动签到服务平台旨在解决传统志愿者活动中签到效率低、数据管理混乱…

2026年最新CE修改器下载安装教程(Windows系统实测版)

前言 在游戏调试、数值测试、内存分析等技术场景中&#xff0c;CE修改器&#xff08;Cheat Engine&#xff09; 是最常用的内存修改与调试工具之一。它能实时读取进程内存数据&#xff0c;帮助开发者分析程序逻辑、学习内存结构或追踪关键变量的变化。 然而&#xff0c;许多初…

2026年GEO平台源码源头推荐,专业搭建服务商 - 源码云科技

2026年GEO平台源码源头推荐,专业搭建服务商2026年AI获客赛道彻底爆发,生成式AI用户规模突破5.15亿,信息获取方式从传统搜索转向对话生成,GEO优化成为企业抢占算法流量的核心抓手。在这片红利蓝海下,选对靠谱的GEO…

047.扫描线

扫描线 对边界排序,按顺序扫描,过程中动态维护当前位置状态,从而高效处理区间问题 经典扫描线问题,天际线 leetcode 218class Solution { public:vector<vector<int>> getSkyline(vector<vector<…

【波束成形】基于matlab最小相差多用户毫米波大规模MIMO系统混合波束成形【含Matlab源码 14944期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到海神之光博客之家&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49…

【信道估计】粗量化大规模MIMO系统的计算高效最大似然信道估计【含Matlab源码 14946期】

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;&#x1f49e;Matlab领域博客之家&#x1f49e;&…

【windows11】windows11安装

跳过联网激活 在联网界面按键盘调出终端界面 shift f10输入以下代码打开没有联网的选项 oobe\bypassnro跳过tpm2.0检查 在windows安装目录使用以下代码&#xff0c;这段代码是以服务器方式执行安装程序&#xff0c;会跳过很多在本地服务安装文件有限制但在服务器端没有限制的限…

【PPT】使用VSCODE+MARP输出PPT

【PPT】使用VSCODEMARP输出PPT 文章目录[TOC](文章目录)前言一、实验目的二、实验过程1. VSCODE下载MARP2.新建.md文件3.预览模式4.导出PPT三、实验结果四、参考资料总结前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、实验目的 工作原因&…

导师严选2026 TOP8一键生成论文工具:专科生毕业论文写作全攻略

导师严选2026 TOP8一键生成论文工具&#xff1a;专科生毕业论文写作全攻略 2026年专科生论文写作工具测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着高校教育的不断深化&#xff0c;专科生在毕业论文写作过程中面临的问题也愈发突出。从选题困难、文献检索耗时到格式…

海外仓库存积压是“利润黑洞”还是“烫手山芋”?TOPWMS 助您破局! - 跨境小媛

在跨境电商 3.0 时代,海外仓虽是提升物流时效、降低退货率的“神器”,但一旦陷入库存积压的泥潭,它就会瞬间变成不断烧钱的“利润黑洞”。据统计,约有 42% 的卖家因库存管理不当,导致净利润率被压缩 5%-15%。 一、…

SQL查询性能优化 - EXISTS、IN

从客户表&#xff08;c1&#xff09;中&#xff0c;找出所有状态为“2”的客户&#xff0c;并且要求存在另一个状态也为“2”、邮箱包含customer、手机号以138开头的同名客户。将所有状态为“2”且满足存在性检查的最终结果&#xff0c;按照客户姓名 (c1.name) 进行排序&#x…

【程序员必看】voyage-context-3向量模型发布:RAG检索效率提升14%,存储成本仅0.5%,香不香?

最近看到一个有意思的工作&#xff0c;原文来自&#xff1a; voyage-context-3&#xff1a;聚焦分段细节&#xff0c;融入全局文档上下文 **概要&#xff1a;**Voyage AI 推出了voyage-context-3&#xff0c;这是一款情境化分段向量模型。它能为文本分段&#xff08;chunk&…