自建协作文档!Outline开源知识库,告别Notion网络限制

自建协作文档!Outline开源知识库,告别Notion网络限制

前言

经常使用Notion的朋友大概率都遇到过这些糟心问题:网络访问卡顿、页面加载缓慢,偶尔还会出现连接失败,重要笔记、团队文档完全依赖外部服务,数据存储在第三方云端,隐私与数据安全没办法自己掌控。想要流畅使用就要折腾各种网络环境,个人和小团队使用体验大打折扣。

如果你也想拥有类似Notion的高颜值协作文档体验,同时希望把全部文档数据牢牢掌握在自己服务器中,那开源项目Outline就非常值得尝试。Outline是一款面向团队的开源知识库工具,界面清爽简洁,支持富文本编辑、文档树形目录、全文检索、多人协同编辑、权限分组、文档导出等全套能力,功能对标Notion,完全开源免费。

无需依赖境外网络,部署在自己的服务器上即可随时访问,不管是个人整理笔记、搭建私人知识库,还是小团队内部沉淀文档、整理项目资料都十分合适。本文将完整讲解Outline的Docker部署全过程,解决部署中常见的密钥、数据库SSL等各类踩坑问题,手把手带你搭建一套私有化的自建协作文档系统。

image-20260804173003399

1.什么是Outline?

Outline是一款开源、自托管的团队协作文档 / 知识库系统,定位是私有化部署版Notion替代工具,主打简洁UI、结构化文档管理、多人实时协作。

✨核心特点

  1. 界面与体验

    界面风格贴近Notion,支持富文本编辑器,支持标题、表格、图片、代码块、引用、嵌入附件,文档以树形层级目录组织,方便搭建知识库目录。

  2. 数据完全自主可控

    全部数据存放在自己服务器的PostgreSQL数据库,文档文件本地存储,数据不归第三方,不用担心网络封锁、服务关停、外部访问限制。

  3. 团队协作能力

    支持多人同时编辑文档,成员权限管控,区分管理员、普通成员,支持文档分享、链接共享、全文搜索,文档可以导出Markdown/PDF。

  4. 登录方式

    原生不支持账号密码登录,依赖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 极点云官网

image-20260522154032880

2.2验证docker是否开启

使用命令:

docker -v 
systemctl status -v

没有docker的小伙伴可以参考这篇文章:极空间开箱实录:从拆箱到远程访问保姆级教程,30分钟上手! – cpolar 极点云官网

image-20251017103712618

3.安装Outline

通过Docker部署:

在开始部署之前,确保你的系统已经安装了Docker。可以通过以下命令检查 Docker 是否已安装:

docker --version

image-20260507155742946

首先创建一下安装的目录并进入到该目录:

mkdir -p /opt/outline && cd /opt/outline

image-20260804170702235

创建并编辑 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

03dba001ce2c36c6a46b9fade0033229

生成安全密钥(复制执行)

openssl rand -hex 32

执行两次,分别填入 SECRET_KEYUTILS_SECRET

d06a4a368d180b91177d4187a916dc65

启动服务

docker-compose up -d

image-20260804170723447

查看启动日志

docker-compose logs -f outline

image-20260804170807094

验证是否启动成功:

docker ps

image-20260804170913164

部署完成后,在浏览器中输入 http://极空间IP:3000 就能看到Outline的界面:

cca374fb977e88022f516fa3708fd450

4.使用Outline

Outline知识库初始化,创建工作区界面,需要填写工作区名称、管理员名称、管理员邮箱,完成信息填写后点击继续操作,即可完成工作区初始化:

90a2dce2f0482239f19fec7431653937

登录成功!

234654044e64f60925e0f88dd74bc39e

添加新的知识库:

image-20260804172423831

点击发布:

image-20260804172520836

image-20260804172657605

发布后可以收藏。收藏的知识库在这里查看:

image-20260804172732461

也可以根据关键词搜索:

image-20260804172945275

部署完成的Outline仅能在内网服务器访问,如果想要外网随时随地访问私有知识库,就可以搭配cpolar内网穿透工具。无需公网IP、不用配置路由器端口映射,简单配置即可生成安全的公网访问地址,在家、外出手机或者其他电脑都能够直接访问我们自建的Outline知识库,随时随地查阅、编辑团队文档,把本地搭建的私有协作文档对外可用,同时cpolar支持配置HTTPS加密域名,适配Outline的HTTPS访问需求,保障外网访问的数据传输安全。

5.安装cpolar实现随时随地开发

5.1 什么是cpolar?

cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。

5.2 部署cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

官网在此:https://www.cpolar.com

使用一键脚本安装命令:

sudo curl https://get.cpolar.sh | sh

image-20250725104019896

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

22e5adfaf290a17fc3384bb296055259

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

8a6698b1bf26d64ba3645827fbfb1c29

6.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了: outline,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:3000
  • 域名类型:随机域名
  • 地区:选择China Top

image-20260804173237508

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

image-20260804173331397

访问成功。

image-20260804173405385

7.保留固定公网地址

使用cpolar为其配置二级子域名(cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站),该地址为固定地址,不会随机变化。

image-20250918151358733

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是outline,大家可以自定义。填写备注信息,点击保留。

image-20260804173616803

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20260804173630995

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

image-20260804173704970

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image-20260804173731214

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

image-20260804173757119

总结

整体来看,Outline作为开源私有化知识库,能够很好替代Notion,解决了Notion国内网络卡顿、数据托管第三方的痛点,把所有文档数据留存于自己服务器中,实现完全自主可控。本次部署过程中需要注意密钥格式、PostgreSQL数据库SSL连接等问题,避开常见部署坑点即可顺利搭建。

配合cpolar内网穿透,无需公网IP,就能生成公网HTTPS访问链接,实现外网随时随地访问自建知识库。不管是个人笔记归档,还是小团队沉淀运维手册、项目资料,Outline都能提供流畅的协作文档体验,打造属于自己的私有Wiki文档平台。

感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

Share:

发表回复

目录

On Key

推荐文章