outline—使用 React 和 Node.js 为您的团队构建的开放、可扩展的 wiki。

使用 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 应用程序

自托管生产

码头工人

对于手动自托管生产安装,以下是推荐的步骤:

  1. 首先设置 Redis 和 Postgres 服务器,这超出了指南的范围。
  2. 下载最新的官方Docker镜像,每个月中旬左右都会有新版本发布:docker pull outlinewiki/outline
  3. 使用.env.sample作为参考,在您的生产环境中设置所需的变量。您可以直接导出环境变量,或创建一个.env文件并将其传递给 docker 镜像,如下所示:docker run --env-file=.env outlinewiki/outline
  4. 使用yarn db:migrate. 默认情况下,生产假定与数据库的 SSL 连接,如果 Postgres 在同一台机器上并且不是 SSL,您可以使用 迁移yarn db:migrate --env=production-ssl-disabled,例如:docker run --rm outlinewiki/outline yarn db:migrate
  5. 启动容器:docker run outlinewiki/outline
  6. 访问 http://you_server_ip:3000 应该可以看到 Outline 页面可以使用PORT环境变量更改端口号
  7. (可选)您可以添加一个nginx或其他反向代理来为您的 Outline 实例提供一个没有端口号的干净 URL,支持 SSL 等。

地形

或者,社区成员维护一个脚本,以使用Terraform 和 Ansible在 Google Cloud Platform 上部署 Outline 。

升级

码头工人

如果您使用 Docker 运行 Outline,则需要在更新映像后在 docker 容器内运行迁移。该命令将类似于:

docker run --rm outlinewiki/outline:latest yarn db:migrate

吉特

如果您通过克隆此存储库来运行 Outline,请运行以下命令进行升级:

纱线运行升级

地方发展

对于贡献特性和修复,您可以按照以下步骤快速获得使用 Docker 运行的环境:

  1. 如果您还没有这些依赖项,请安装它们
    1. 桌面版 Docker
    2. Node.js(首选 v12 LTS)
  2. 克隆这个 repo
  3. https://api.slack.com/apps注册 Slack 应用程序
  4. 将文件复制.env.sample.env
  5. 填写以下字段:
    1. SECRET_KEY(按照顶部评论中的说明进行操作.env
    2. SLACK_KEY (这在 Slack 管理员中称为“客户端 ID”)
    3. SLACK_SECRET (这在 Slack 管理员中称为“客户端机密”)
  6. 配置 Slack 应用的 Oauth 和权限设置
    1. Slack 最近禁止使用httplocalhost 协议。对于本地开发,您可以使用像ngrok这样的工具或像mkcert. (如何使用HTTPS进行本地开发
    2. 添加https://my_ngrok_address/auth/slack.callback为 Oauth 重定向 URL 并更新环境URL变量以匹配
    3. 确保机器人令牌范围至少包含 users:read
  7. 运行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

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注