自建协作文档!Outline开源知识库,告别Notion网络限制
前言
经常使用Notion的朋友大概率都遇到过这些糟心问题:网络访问卡顿、页面加载缓慢,偶尔还会出现连接失败,重要笔记、团队文档完全依赖外部服务,数据存储在第三方云端,隐私与数据安全没办法自己掌控。想要流畅使用就要折腾各种网络环境,个人和小团队使用体验大打折扣。
如果你也想拥有类似Notion的高颜值协作文档体验,同时希望把全部文档数据牢牢掌握在自己服务器中,那开源项目Outline就非常值得尝试。Outline是一款面向团队的开源知识库工具,界面清爽简洁,支持富文本编辑、文档树形目录、全文检索、多人协同编辑、权限分组、文档导出等全套能力,功能对标Notion,完全开源免费。
无需依赖境外网络,部署在自己的服务器上即可随时访问,不管是个人整理笔记、搭建私人知识库,还是小团队内部沉淀文档、整理项目资料都十分合适。本文将完整讲解Outline的Docker部署全过程,解决部署中常见的密钥、数据库SSL等各类踩坑问题,手把手带你搭建一套私有化的自建协作文档系统。
1.什么是Outline?
Outline是一款开源、自托管的团队协作文档 / 知识库系统,定位是私有化部署版Notion替代工具,主打简洁UI、结构化文档管理、多人实时协作。
✨核心特点
- 界面与体验
界面风格贴近Notion,支持富文本编辑器,支持标题、表格、图片、代码块、引用、嵌入附件,文档以树形层级目录组织,方便搭建知识库目录。
-
数据完全自主可控
全部数据存放在自己服务器的PostgreSQL数据库,文档文件本地存储,数据不归第三方,不用担心网络封锁、服务关停、外部访问限制。
-
团队协作能力
支持多人同时编辑文档,成员权限管控,区分管理员、普通成员,支持文档分享、链接共享、全文搜索,文档可以导出Markdown/PDF。
-
登录方式
原生不支持账号密码登录,依赖OIDC统一身份认证,可对接Keycloak、Authentik、Google、Slack等身份源。
📌适用场景
- 个人自建私有知识库、笔记库
- 小团队内部文档沉淀、接口手册、运维手册、项目文档
- 企业内部Wiki,替代Notion,规避网络访问问题
📦技术栈
- 后端Node.js,数据库PostgreSQL,缓存Redis,推荐使用Docker Compose一键部署。
和Notion简单对比
- Notion:SaaS云端服务,功能强大,但国内网络访问不稳定,数据托管在国外服务器。
- Outline:开源私有化部署,网络不受限,数据自己保管;需要自己维护服务器、数据库、身份登录。
2.前提条件
2.1ssh远程连接到极空间
- 开启【SSH 服务】
- 使用终端(Windows PowerShell / Mac Terminal)登录:
ssh root@IP
没有ssh的小伙伴可以参考这篇文章:
连接成功:极空间别再吃灰了!开启SSH,秒变全能服务器! – cpolar 极点云官网
2.2验证docker是否开启
使用命令:
docker -v
systemctl status -v
没有docker的小伙伴可以参考这篇文章:极空间开箱实录:从拆箱到远程访问保姆级教程,30分钟上手! – cpolar 极点云官网
3.安装Outline
通过Docker部署:
在开始部署之前,确保你的系统已经安装了Docker。可以通过以下命令检查 Docker 是否已安装:
docker --version
首先创建一下安装的目录并进入到该目录:
mkdir -p /opt/outline && cd /opt/outline
创建并编辑 docker-compose.yml文件:
vi docker-compose.yml
version: "3.8"
services:
postgres:
image: postgres:15-alpine
container_name: outline-postgres
restart: always
volumes:
- ./pgdata:/var/lib/postgresql/data
environment:
POSTGRES_USER: outline
POSTGRES_PASSWORD: PostgresPass123
POSTGRES_DB: outline
healthcheck:
test: ["CMD", "pg_isready", "-U", "outline", "-d", "outline"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: outline-redis
restart: always
volumes:
- ./redisdata:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
outline:
image: outlinewiki/outline:latest
container_name: outline
restart: always
ports:
- "3000:3000"
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
volumes:
- ./uploads:/var/lib/outline/data
environment:
NODE_ENV: production
# 访问地址!改成你的域名/服务器公网地址
URL: http://你的IP:3000
# 随机密钥,自行生成替换
SECRET_KEY: "`openssl rand -hex 32`"
UTILS_SECRET: "`openssl rand -hex 32`"
DATABASE_URL: postgres://outline:PostgresPass123@postgres:5432/outline
REDIS_URL: redis://redis:6379
FILE_STORAGE: local
PORT: 3000
FORCE_HTTPS: false
生成安全密钥(复制执行)
openssl rand -hex 32
执行两次,分别填入 SECRET_KEY、UTILS_SECRET
启动服务
docker-compose up -d
查看启动日志
docker-compose logs -f outline
验证是否启动成功:
docker ps
部署完成后,在浏览器中输入 http://极空间IP:3000 就能看到Outline的界面:
4.使用Outline
Outline知识库初始化,创建工作区界面,需要填写工作区名称、管理员名称、管理员邮箱,完成信息填写后点击继续操作,即可完成工作区初始化:
登录成功!
添加新的知识库:
点击发布:
发布后可以收藏。收藏的知识库在这里查看:
也可以根据关键词搜索:
部署完成的Outline仅能在内网服务器访问,如果想要外网随时随地访问私有知识库,就可以搭配cpolar内网穿透工具。无需公网IP、不用配置路由器端口映射,简单配置即可生成安全的公网访问地址,在家、外出手机或者其他电脑都能够直接访问我们自建的Outline知识库,随时随地查阅、编辑团队文档,把本地搭建的私有协作文档对外可用,同时cpolar支持配置HTTPS加密域名,适配Outline的HTTPS访问需求,保障外网访问的数据传输安全。
5.安装cpolar实现随时随地开发
5.1 什么是cpolar?
cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。
5.2 部署cpolar
cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh
安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar
Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。
6.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了: outline,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:3000
- 域名类型:随机域名
- 地区:选择China Top
创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。
访问成功。
7.保留固定公网地址
使用cpolar为其配置二级子域名(cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站),该地址为固定地址,不会随机变化。
点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是outline,大家可以自定义。填写备注信息,点击保留。
登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新
更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。
最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。
总结
整体来看,Outline作为开源私有化知识库,能够很好替代Notion,解决了Notion国内网络卡顿、数据托管第三方的痛点,把所有文档数据留存于自己服务器中,实现完全自主可控。本次部署过程中需要注意密钥格式、PostgreSQL数据库SSL连接等问题,避开常见部署坑点即可顺利搭建。
配合cpolar内网穿透,无需公网IP,就能生成公网HTTPS访问链接,实现外网随时随地访问自建知识库。不管是个人笔记归档,还是小团队沉淀运维手册、项目资料,Outline都能提供流畅的协作文档体验,打造属于自己的私有Wiki文档平台。
感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

































