XZY·ONE

Xzy®

Docker 环境变量安装 Outline 并连接 PostgreSQL 数据库

21
2024-12-31
Docker 环境变量安装 Outline 并连接 PostgreSQL 数据库

Outline 是一个开源的知识库和团队协作工具,功能强大且易于部署。本文将介绍通过 Docker 环境变量安装 Outline 并连接到 PostgreSQL 数据库的完整方法。

Outline 官网教程中建议通过 Docker Compose 部署,但这种方法对于部分系统不够友好。而使用 环境变量 配置数据库信息,则可在容器启动后灵活调整,方便运维管理。

前置条件

  1. 安装 Docker :请确保您的服务器上已经安装了 Docker。

  2. 准备 PostgreSQL 数据库

    • 数据库主机(dbhost

    • 数据库端口(dbport,默认为 5432

    • 数据库名称(dbname

    • 数据库用户名(dbusername

    • 数据库密码(dbpassword

如果你还没有安装 PostgreSQL 数据库,那么试下:

https://xzy.one/archives/docker-postgres

使用 Docker 启动 Outline

运行以下命令以部署 Outline(修改其中必要的参数)

docker run -d \
   --name outline \
   -p 3000:3000 \
   -e TZ=Asia/Shanghai \
   -e NODE_ENV=production \
   -e SECRET_KEY=$(openssl rand -hex 32) \
   -e UTILS_SECRET=$(openssl rand -hex 32) \
   -e DATABASE_URL=postgres://dbusername:dbpassword@dbhost:dbport/dbname \
   -e DATABASE_CONNECTION_POOL_MIN=2 \
   -e DATABASE_CONNECTION_POOL_MAX=10 \
   -e REDIS_URL=redis://localhost:6379 \
   -e URL=https://your.domain \
   -e PORT=3000 \
   -e FILE_STORAGE=s3 \
   -e AWS_ACCESS_KEY_ID=your_aws_key \
   -e AWS_SECRET_ACCESS_KEY=your_aws_secret \
   -e AWS_REGION=your_aws_region \
   -e AWS_S3_ACCELERATE_URL=https://s3.domain \
   -e AWS_S3_UPLOAD_BUCKET_URL=https://s3.domain \
   -e AWS_S3_UPLOAD_BUCKET_NAME=bucket_name_here \
   -e AWS_S3_FORCE_PATH_STYLE=true \
   -e AWS_S3_ACL=private \
   -e OIDC_CLIENT_ID=your_google_client_id \
   -e OIDC_CLIENT_SECRET=your_google_client_secret \
   -e OIDC_AUTH_URI=https://accounts.google.com/o/oauth2/v2/auth \
   -e OIDC_TOKEN_URI=https://oauth2.googleapis.com/token \
   -e OIDC_USERINFO_URI=https://openidconnect.googleapis.com/v1/userinfo \
   -e ENABLE_UPDATES=true \
   -e SMTP_HOST=smtp.host \
   -e SMTP_PORT=587 \
   -e SMTP_USERNAME=smtp@username \
   -e SMTP_PASSWORD=smtppassword \
   -e SMTP_FROM_EMAIL=smtp@username \
   -e SMTP_REPLY_EMAIL=your@mail \
   -e SMTP_SECURE=true \
   -e PUID=0 \
   -e PGID=0 \
   -e DEFAULT_LANGUAGE=zh_CN \
   -v /opt/docker/outline/data:/var/lib/outline/data \
   --restart unless-stopped \
   outlinewiki/outline:latest

环境变量参数说明

基础配置

环境变量名

描述

TZ

设置时区,例如 Asia/Shanghai

NODE_ENV

环境类型,默认为 production

SECRET_KEY

应用密钥,需使用 openssl rand -hex 32 生成 32 字节随机密钥。

UTILS_SECRET

工具密钥,需使用 openssl rand -hex 32 生成 32 字节随机密钥。

数据库配置

环境变量名

描述

DATABASE_URL

PostgreSQL 数据库连接地址,格式为:postgres://dbusername:dbpassword@dbhost:dbport/dbname

DATABASE_CONNECTION_POOL_MIN

数据库连接池最小连接数,建议设置为 2

DATABASE_CONNECTION_POOL_MAX

数据库连接池最大连接数,建议设置为 10

存储配置

环境变量名

描述

FILE_STORAGE

文件存储方式,支持所有适配 S3 格式的存储(如 AWS S3, Minio, 又拍云等)。

AWS_ACCESS_KEY_ID

AWS S3 存储访问密钥。

AWS_SECRET_ACCESS_KEY

AWS S3 存储密钥。

AWS_REGION

AWS S3 存储区域。

AWS_S3_UPLOAD_BUCKET_NAME

AWS S3 存储桶名称。

Redis 配置

环境变量名

描述

REDIS_URL

Redis 连接地址,格式为:redis://localhost:6379

邮件配置

环境变量名

描述

SMTP_HOST

邮件服务器地址。

SMTP_PORT

邮件服务器端口,默认 587

SMTP_USERNAME

邮件服务器用户名。

SMTP_PASSWORD

邮件服务器密码。

SMTP_FROM_EMAIL

发件人邮箱地址。

SMTP_REPLY_EMAIL

收件人回复的邮箱地址。

SMTP_SECURE

是否启用安全连接,true 表示启用。

配置支持的认证方式

Outline 支持多种第三方认证方式,至少需要配置一种以下方式以实现用户登录。您可以根据需求选择合适的认证方式:

1. Google OAuth

需要在 Google Cloud Console 中创建 OAuth 客户端 ID。

  • 创建地址:Google Cloud Console

  • 配置重定向 URI:https://<YOUR_DOMAIN>/auth/google.callback

环境变量(使用 OCID 形式):

-e OIDC_CLIENT_ID=your_google_client_id \
-e OIDC_CLIENT_SECRET=your_google_client_secret \
-e OIDC_AUTH_URI=https://accounts.google.com/o/oauth2/v2/auth \
-e OIDC_TOKEN_URI=https://oauth2.googleapis.com/token \
-e OIDC_USERINFO_URI=https://openidconnect.googleapis.com/v1/userinfo \

2. Slack

需要在 Slack API 中创建一个应用。

  • 创建地址:Slack App Management

  • 配置重定向 URI:https://<YOUR_DOMAIN>/auth/slack.callback

环境变量:

-e SLACK_CLIENT_ID=your_slack_client_id \
-e SLACK_CLIENT_SECRET=your_slack_client_secret \

3. Microsoft Azure AD

需要在 Azure AD 中创建一个 OAuth 客户端。

环境变量:

-e AZURE_CLIENT_ID=your_azure_client_id \
-e AZURE_CLIENT_SECRET=your_azure_client_secret \
-e AZURE_RESOURCE_APP_ID=your_azure_resource_app_id \

4. OpenID Connect (OIDC)

支持通用 OIDC 身份提供商。

  • 配置重定向 URI:https://<YOUR_DOMAIN>/auth/oidc.callback

环境变量:

-e OIDC_CLIENT_ID=your_oidc_client_id \
-e OIDC_CLIENT_SECRET=your_oidc_client_secret \
-e OIDC_AUTH_URI=https://idp.example.com/auth \
-e OIDC_TOKEN_URI=https://idp.example.com/token \
-e OIDC_USERINFO_URI=https://idp.example.com/userinfo \
-e OIDC_LOGOUT_URI=https://idp.example.com/logout \
-e OIDC_USERNAME_CLAIM=preferred_username \
-e OIDC_DISPLAY_NAME=OpenID Connect \
-e OIDC_SCOPES="openid profile email" \

5. GitHub

需要在 GitHub 中创建一个 GitHub App。

环境变量:

-e GITHUB_CLIENT_ID=your_github_client_id \
-e GITHUB_CLIENT_SECRET=your_github_client_secret \
-e GITHUB_APP_NAME=your_github_app_name \
-e GITHUB_APP_ID=your_github_app_id \
-e GITHUB_APP_PRIVATE_KEY=your_github_app_private_key \

6. Discord

需要在 Discord 开发者平台中创建应用。

环境变量:

-e DISCORD_CLIENT_ID=your_discord_client_id \
-e DISCORD_CLIENT_SECRET=your_discord_client_secret \
-e DISCORD_SERVER_ID=your_discord_server_id \
-e DISCORD_SERVER_ROLES=comma_separated_role_ids \

小结

使用上述方法,您可以快速通过 Docker 部署 Outline,并通过环境变量灵活管理配置,创建一个强大、可扩展的知识管理平台。