当前位置: 首页 > news >正文

Outline 自托管团队知识库/Wiki 搭建教程(Notion 替代方案)

Outline 自托管团队知识库/Wiki 搭建教程(Notion 替代方案)

团队知识管理是每个技术团队的刚需,Notion 固然好用,但数据托管在海外服务器、价格随团队规模线性增长、网络访问有时不稳定,这些痛点让很多团队开始寻找可以私有化部署的替代品。Outline 是目前开源社区中最接近 Notion 体验的知识库工具,支持 Markdown 编写、实时协作、文档嵌套、全文搜索、多种登录方式,界面美观现代。本文讲解如何用 Docker Compose + Caddy 完整部署 Outline。

Outline 核心特性

  • Notion 式编辑器:块编辑器,支持标题、列表、代码块、表格、图片、内嵌内容
  • 实时协作:多人同时编辑同一文档,变更实时同步
  • 文档结构:支持集合(Collection)→ 文档→ 子文档三级嵌套
  • 全文搜索:基于 PostgreSQL 全文索引,中英文搜索均支持
  • SSO 登录:支持 Google、GitHub、Slack OAuth,以及 SAML/OIDC 企业登录
  • API 接口:完整 REST API,可与其他工具集成
  • 导出功能:支持导出为 Markdown、PDF,数据随时可迁移

服务器配置

Outline 依赖 PostgreSQL、Redis 和对象存储,整体内存需求适中。推荐使用2 核 4GB机型,可以流畅支持 10-50 人团队日常使用,文档量不受限制。

推荐选用雨云服务器 rainyun-com,注册填优惠码2026off领 5 折优惠券,2 核 4GB 机型性价比出色,比 Notion Team 版年费便宜得多,数据还完全掌控在自己手里。系统建议选 Ubuntu 22.04 LTS,磁盘至少 40GB(含文档附件存储)。

准备工作

安装 Docker 和 Docker Compose

curl-fsSLhttps://get.docker.com|shsudousermod-aGdocker$USERnewgrpdockerdocker--versiondockercompose version

域名与防火墙

将域名(如wiki.example.com)A 记录解析到服务器 IP:

sudoufw allow80/tcpsudoufw allow443/tcpsudoufwenable

生成必要的密钥

Outline 需要几个随机密钥,提前生成好:

# 生成 SECRET_KEY(64位十六进制)openssl rand-hex32# 生成 UTILS_SECRETopenssl rand-hex32

将两个输出分别保存,稍后填入配置文件。

docker-compose.yml

创建项目目录:

mkdir-p~/outline&&cd~/outline

创建docker-compose.yml

version:"3.8"services:outline:image:outlinewiki/outline:latestcontainer_name:outline_appenv_file:.envdepends_on:-postgres-redisrestart:unless-stoppednetworks:-outline-netvolumes:-./data:/var/lib/outline/datapostgres:image:postgres:15-alpinecontainer_name:outline_postgresenvironment:POSTGRES_USER:outlinePOSTGRES_PASSWORD:${POSTGRES_PASSWORD}POSTGRES_DB:outlinevolumes:-pgdata:/var/lib/postgresql/datarestart:unless-stoppednetworks:-outline-netredis:image:redis:7-alpinecontainer_name:outline_redisrestart:unless-stoppednetworks:-outline-netcaddy:image:caddy:alpinecontainer_name:outline_caddyports:-"80:80"-"443:443"volumes:-./Caddyfile:/etc/caddy/Caddyfile-caddy_data:/data-caddy_config:/configrestart:unless-stoppednetworks:-outline-netvolumes:pgdata:caddy_data:caddy_config:networks:outline-net:driver:bridge

创建环境变量文件.env

cat>.env<<'EOF' # 应用基础配置 SECRET_KEY=替换为openssl生成的第一个密钥 UTILS_SECRET=替换为openssl生成的第二个密钥 URL=https://wiki.example.com PORT=3000 NODE_ENV=production # 数据库 DATABASE_URL=postgres://outline:替换为数据库密码@outline_postgres:5432/outline POSTGRES_PASSWORD=替换为数据库密码 # Redis REDIS_URL=redis://outline_redis:6379 # 文件存储(本地存储模式) FILE_STORAGE=local FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data FILE_STORAGE_UPLOAD_MAX_SIZE=262144000 # 语言和时区 DEFAULT_LANGUAGE=zh_CN TZ=Asia/Shanghai # 邮件(可选,用于邀请成员,暂时留空也能用) # SMTP_HOST= # SMTP_PORT= # SMTP_USERNAME= # SMTP_PASSWORD= # SMTP_FROM_EMAIL= # 登录方式(至少配置一种,这里演示 GitHub OAuth) # 在 GitHub Settings → Developer settings → OAuth Apps 创建应用 GITHUB_CLIENT_ID=替换为GitHub_OAuth_Client_ID GITHUB_CLIENT_SECRET=替换为GitHub_OAuth_Client_Secret # 允许创建账号(生产环境建议改为 false,通过邀请制管理) TEAM_LOGO= ENABLE_UPDATES=true EOF

Caddy 反向代理配置

创建Caddyfile

wiki.example.com { reverse_proxy outline_app:3000 # 支持上传附件 request_body { max_size 256MB } # 开启压缩 encode gzip # WebSocket 支持(实时协作需要) @websocket { header Connection *Upgrade* header Upgrade websocket } handle @websocket { reverse_proxy outline_app:3000 } }

启动服务

cd~/outline# 创建数据目录mkdir-pdata# 启动所有服务dockercompose up-d# 查看启动日志dockercompose logs-foutline# 执行数据库迁移(首次必须执行)dockercomposeexecoutlineyarndb:migrate

数据库迁移完成后,访问https://wiki.example.com即可看到登录界面。

初始化配置

配置 OAuth 登录

Outline 不支持传统用户名/密码注册,必须通过 OAuth 或邮件邀请登录。最简单的方式是配置 GitHub OAuth:

  1. 进入 GitHub → Settings → Developer settings → OAuth Apps → New OAuth App
  2. 填写信息:
    • Application name:团队知识库
    • Homepage URL:https://wiki.example.com
    • Authorization callback URL:https://wiki.example.com/auth/github.callback
  3. 创建完成后,将 Client ID 和 Client Secret 填入.env

如果团队使用 Google Workspace,也可以配置 Google OAuth(需要在 Google Cloud Console 创建应用):

# 在 .env 中添加GOOGLE_CLIENT_ID=your_google_client_idGOOGLE_CLIENT_SECRET=your_google_client_secret

修改.env后重启服务:

dockercompose up-d

团队初始化

首次登录后:

  1. 创建工作区名称(即团队/公司名称)
  2. 通过「设置」→「成员」→「邀请成员」向同事发送邀请链接
  3. 在「集合」中创建第一个文档集合(类似 Notion 的空间)

推荐初始文档结构

知识库 ├── 工程规范 │ ├── 代码风格指南 │ ├── Git 提交规范 │ └── 代码审查流程 ├── 产品文档 │ ├── 需求文档 │ └── 设计规范 ├── 运维手册 │ ├── 部署流程 │ └── 故障处理 SOP └── 会议记录 └── 2026 年

常见问题

Q:登录后提示"工作区不存在"?

首次登录的用户会自动创建工作区。如果出现错误,检查数据库迁移是否完成:

dockercomposeexecoutlineyarndb:migrate

Q:图片上传失败?

检查数据目录权限:

# 确保容器内用户有写权限dockercomposeexecoutlinels-la/var/lib/outline/# 如权限不足,在宿主机执行chmod777~/outline/data

Q:如何备份数据?

#!/bin/bash# 保存为 ~/outline/backup.shDATE=$(date+%Y%m%d_%H%M%S)BACKUP_DIR=~/outline-backupsmkdir-p"$BACKUP_DIR"# 备份数据库dockerexecoutline_postgres pg_dump-Uoutline outline|\gzip>"$BACKUP_DIR/db-$DATE.sql.gz"# 备份附件文件tar-czf"$BACKUP_DIR/files-$DATE.tar.gz"~/outline/data# 保留最近 30 天find"$BACKUP_DIR"-mtime+30-deleteecho"备份完成:$DATE"
chmod+x ~/outline/backup.sh# 每天凌晨 3 点自动备份(crontab-l2>/dev/null;echo"0 3 * * * ~/outline/backup.sh")|crontab-

Q:如何升级 Outline?

cd~/outlinedockercompose pulldockercompose up-d# 新版本可能需要数据库迁移dockercomposeexecoutlineyarndb:migrate

Q:实时协作不生效?

确认 Caddy 配置中包含了 WebSocket 代理规则(上方 Caddyfile 已包含),且防火墙允许 443 端口的 WebSocket 连接。


Outline 是 Notion 最强力的开源替代品,美观的块编辑器、实时协作、强大的全文搜索、灵活的权限控制,功能丝毫不逊于付费产品,而且数据完全自托管,不必担心数据主权和价格上涨问题。

http://www.gsyq.cn/news/1489212.html

相关文章:

  • 职场工作总结appAI能力比拼哪个好?2026实测多款对比后结果超出多数人预期
  • 从Notebook到生产:机器学习模型落地的七道生死关
  • 终极Windows 11系统优化指南:如何用Win11Debloat免费打造纯净高效系统
  • Plain Craft Launcher 2:高效实用的Minecraft启动器深度解析与实战指南
  • CompressO:3分钟学会如何将大文件压缩到极致,释放90%存储空间!
  • 同一个 AI,为什么到你项目里就开始自作主张——CLAUDE.md 到底该写什么
  • 2026年厦门二手专用车/特种车推荐榜:二手环卫洒水车、扫路车、垃圾车、高空作业车厂家选购指南 - 品牌发掘
  • 错过标讯、筛选太累?2026招投标团队如何摆脱无效搜索
  • 我用了半年只留下这1个,2026职场视频总结效率准确率胜出工具真心太香了
  • 基于NXP多PMIC的Zynq UltraScale+ MPSoC高可靠电源与功能安全设计
  • 京东天猫苏宁商品数据抓取工具包+京东评论情感打分脚本(含Scrapy/Requests双实现、词典规则分析、多平台适配)
  • 026 文件搜索高级技巧:正则表达式深度使用、多行模式、文件类型过滤与上下文控制
  • 律师拜访客户整理视频2026年5款提升视频内容整理效率与准确率工具,省下90人工核对时间
  • 百度网盘macOS版终极加速指南:免费解锁全速下载体验
  • 从Eclipse到IDEA:iObjects Java组件在不同IDE下的环境配置差异与实战技巧
  • WarcraftHelper:魔兽争霸终极优化指南 - 解锁地图限制、宽屏支持与性能提升
  • 刚跑完2026一季度区域客户拜访 测了十多款视频号内容总结工具终见产品胜出
  • 告别双系统!保姆级教程:在Windows上用WSL2+PyCharm配置CUDA深度学习环境(含镜像源加速)
  • 2026内衣模杯/胸垫/文胸/无缝胸围实力厂家排行榜:东莞市昌鸿服装辅料有限公司为何稳居行业前列 - 变量人生001
  • 27考研资料|免费全套|电子版
  • 欧盟商标转让服务机构盘点:核心维度客观对比分析 - 互联网科技品牌测评
  • Zotero-Style:让你的文献管理变得简单高效又美观
  • i.MX 8M Mini到8M Nano硬件兼容性设计实战指南
  • 2026年 3,3-亚戊基丁内酰胺厂家最新推荐榜单:高纯度合成与工业应用的核心优势深度解析 - 品牌发掘
  • 2026成都二手房装修公司权威指南:严选“零增项”与“环保标杆”十大实力公司 - 推荐官
  • 在Linux中实现Cortex-A53核心自测试(SCST)的架构设计与工程实践
  • 如何在3分钟内免费解锁网易云音乐:NCMDump终极转换指南
  • Chrome.ahk:用AutoHotkey实现高效浏览器自动化的完整指南
  • 【字节跳动】本文档披露了GR3六轴协作机械臂的底层核心参数,包含六大关节的伺服控制参数(位置/速度环P/I增益、阻尼前馈、扭矩阈值)、各连杆质量与质心坐标等动力学数据、总线通讯协议帧结构(帧头/功能码
  • 2026 西宁防水补漏服务商口碑测评榜单|全屋渗漏维修机构优选指南 - 宅安选房屋修缮