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

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

 次点击
33 分钟阅读

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。

环境变量(使用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 中创建一个应用。

环境变量:

-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,并通过环境变量灵活管理配置,创建一个强大、可扩展的知识管理平台。

© 本文著作权归作者所有,未经许可不得转载使用。