使用 React 和 Node.js 为您的团队构建的开放、可扩展的 wiki。
使用我们在www.getoutline.com 上托管的版本试用 Outline 。

这是运行Outline和所有相关服务的源代码。如果您想使用 Outline,则无需运行此代码,我们在getoutline.com 上提供了该应用程序的托管版本。
如果您想运行自己的 Outline 副本或为开发做出贡献,那么这里就是您的最佳选择。
安装
Outline 需要以下依赖项:
- Node.js >= 12
- 纱
- Postgres >=9.5
- Redis >= 4
- 用于文件存储的 AWS S3 存储桶或兼容的 API
- 用于身份验证的 Slack、Google、Azure 或 OIDC 应用程序
自托管生产
码头工人
对于手动自托管生产安装,以下是推荐的步骤:
- 首先设置 Redis 和 Postgres 服务器,这超出了指南的范围。
- 下载最新的官方Docker镜像,每个月中旬左右都会有新版本发布:
docker pull outlinewiki/outline
- 使用.env.sample作为参考,在您的生产环境中设置所需的变量。您可以直接导出环境变量,或创建一个
.env
文件并将其传递给 docker 镜像,如下所示:docker run --env-file=.env outlinewiki/outline
- 使用
yarn db:migrate
. 默认情况下,生产假定与数据库的 SSL 连接,如果 Postgres 在同一台机器上并且不是 SSL,您可以使用 迁移yarn db:migrate --env=production-ssl-disabled
,例如:docker run --rm outlinewiki/outline yarn db:migrate
- 启动容器:
docker run outlinewiki/outline
- 访问 http://you_server_ip:3000 应该可以看到 Outline 页面可以使用
PORT
环境变量更改端口号 - (可选)您可以添加一个
nginx
或其他反向代理来为您的 Outline 实例提供一个没有端口号的干净 URL,支持 SSL 等。
地形
或者,社区成员维护一个脚本,以使用Terraform 和 Ansible在 Google Cloud Platform 上部署 Outline 。
升级
码头工人
如果您使用 Docker 运行 Outline,则需要在更新映像后在 docker 容器内运行迁移。该命令将类似于:
docker run --rm outlinewiki/outline:latest yarn db:migrate
吉特
如果您通过克隆此存储库来运行 Outline,请运行以下命令进行升级:
纱线运行升级
地方发展
对于贡献特性和修复,您可以按照以下步骤快速获得使用 Docker 运行的环境:
- 如果您还没有这些依赖项,请安装它们
- 桌面版 Docker
- Node.js(首选 v12 LTS)
- 纱
- 克隆这个 repo
- 在https://api.slack.com/apps注册 Slack 应用程序
- 将文件复制
.env.sample
到.env
- 填写以下字段:
SECRET_KEY
(按照顶部评论中的说明进行操作.env
)SLACK_KEY
(这在 Slack 管理员中称为“客户端 ID”)SLACK_SECRET
(这在 Slack 管理员中称为“客户端机密”)
- 配置 Slack 应用的 Oauth 和权限设置
- Slack 最近禁止使用
http
localhost 协议。对于本地开发,您可以使用像ngrok这样的工具或像mkcert
. (如何使用HTTPS进行本地开发) - 添加
https://my_ngrok_address/auth/slack.callback
为 Oauth 重定向 URL 并更新环境URL
变量以匹配 - 确保机器人令牌范围至少包含
users:read
- Slack 最近禁止使用
- 运行
make up
。这将下载依赖项,构建并启动 Outline 的开发版本
贡献
Outline 是由一个小团队构建和维护的 - 我们希望您能帮助修复错误和添加功能!
在提交拉取请求之前,请通过在GitHub 上创建或评论问题让核心团队知道,我们也很乐意在讨论中收到您的来信。通过这种方式,我们可以确保在编写代码之前就一种方法达成一致。这将导致更高的代码被接受的可能性。
如果您正在寻找入门方法,以下是帮助我们改进 Outline 的方法列表:
- 翻译成其他语言
good first issue
标签问题- 服务器和前端的性能改进
- 开发人员幸福感和文档
- GitHub 上列出的错误和其他问题
建筑学
如果您有兴趣贡献或了解有关 Outline 代码库的更多信息,请首先参考架构文档,以了解应用程序如何组合在一起的高级概述。
调试
在开发中 Outline 将简单的日志输出到控制台,并以类别为前缀。在生产中,它输出 JSON 日志,这些日志可以通过您首选的日志摄取管道轻松解析。
默认情况下禁用 HTTP 日志记录,但可以通过设置DEBUG=http
环境变量来启用。
测试
我们的目标是为应用程序的关键部分提供足够的测试覆盖率,而不是 100% 的单元测试覆盖率。应彻底测试所有 API 端点和任何与身份验证相关的内容。
要添加新测试,请使用Jest编写测试并.test.js
在测试代码旁边添加一个带有扩展名的文件。
#运行所有测试 make test #在监视模式下运行后端测试 make watch
创建测试数据库后,make test
您可以单独直接运行前端和后端测试。
#运行后端测试 纱线测试:服务器 #运行前端测试 yarn test:app
迁移
Sequelize 用于创建和运行迁移,例如:
yarn sequelize migration:generate --name my-migration yarn sequelize db:migrate
或者在测试数据库上运行迁移:
yarn sequelize db:migrate --env test
资源来源:https://github.com/outline