私有化部署Outline

Outline介绍

Github
Outline是一个开源的知识库, 类似Notion/语雀的 基于块的可以协作的文本编辑器
因为是开源的 所以可以拿来私有化部署

docker配置

参考官方的文档, 需要配置一个postgres和一个redis

我写这篇的时候, 官方的文档的docker-compose配置是把redis和postgres暴露到宿主机的端口的, 其实可以不用暴露出来 走docker网络就可以了

环境配置

必须的配置项:

  • 开头的各种token
  • redis和postgres 和Outline自身的存储
  • SMTP, 用于登录时接收登录链接(相当于接收验证码)

配置账号

docker -ps 找到outline的dontainer, 然后docker exec -it xxxxxx bash, 然后 根据Outline官方的文档, 执行node build/server/scripts/seed.js my@email.com, outline会给你一个url, 浏览器访问一下这个url 你就得到最开始的管理员账号了, 后续可以从管理员账号邀请 来创建其他人的账号

这个方式在下次outline重启的时候会报让执行node ./build/server/scripts/20210226232041-migrate-authentication.js这个错, 不要去执行这个命令, 出现这个报错的原因是 outline不允许product环境下 有用户却没有OAuth2的登录提供商, 我们只需要连接上数据库之后在authentication_providers表随便造一条数据就可以了

网络

暴露到公网

CF Tunnel

给公开的访问的, 通过cf访问

家宽Caddy mTLS反代

因为嫌CF Tunnel有点慢有点不稳, 所以我要直连家里的服务器, 所以用的caddy反代. 用mTLS防止别人连我家宽https端口. 这个就是给我自己用的, 我自己编辑用

国内公开共享反代

因为cf tunnel从国内访问过慢, 我想分享给人看的东西别人看不到, 于是从国内服务器做一个反代. 但该反代把/auth和首页屏蔽到403了, 不允许登录/编辑, 只准看公开共享

国内七牛云CDN

又因为上面的服务器是个3mbps小水管…因此套了个cdn, 回源上面的国内反代. 同样只准看不准编辑

短链接

有些分享的链接嫌太长了, 想缩短下…就还是在上面的国内小水管机器上, 用caddy搞redir了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
graph
c-ova(家里服务器的另一台虚拟机<br>跑caddy反代, 对公网暴露mTLS)
dlj(阿里云服务器 短链接 l.ggemo.com/test)
cdn(七牛云CDN<br>outline-cdn.ggemo.com/s/后面一大串)
xsg(阿里云服务器 outline.ggemo.com/s/后面一大串)
cftunnel(cf outline.qri.moe/s/后面一大串)
cfredir(cf重定向规则 短链接 l.qri.moe/xxx)
host(家里服务器, 真正跑服务的地方)
dlj -->|redir| cdn
cdn -->|回源| xsg
xsg -->|tailscale/反代| host
cfredir -->|redir| cftunnel
cftunnel -->|CF Tunnels| host
c-ova -->|反代| host

修改manifest

我弄得有点复杂, 因为我想把manifest (https://your.outline.domain/static/manifest.webmanifest) 篡改一下, 来让PWA在手机和电脑上安装之后用我自定义的图标, 所以在cf worker 仅针对manifest做一个反代, 将manifest的请求打到另一个文件上(minio文件)

Caddy同理, 仅将manifest的url做篡改

Outline的好用法

文本画图

Outline内置了Mermaid, 可以进行文本画图

公开共享

https://p.qri.moe
这个链接是一个公开共享的文档集, 可以当公开的文档用. Outline官方的文档就是这么搞的(