如何在 Synology NAS 上安装 Discourse

原文链接: How to Install Discourse on Your Synology NAS – Marius Hosting
作者: Marius Bogdan Lixandru
日期: 2024年 9 月 5 日


Discourse 是一个开源的 Internet 论坛系统。功能包括讨论的线程、分类和标记、可配置的访问控制、实时更新、扩展链接预览、无限滚动和实时通知。它可以通过其插件架构和主题系统进行定制。将其用作邮件列表、论坛、长篇聊天室等!在本分步指南中,我将向您展示如何使用 Docker 和 Portainer 在 Synology NAS 上安装 Discourse
:bulb:**注意:**本指南与最新的 Discourse v3.3.2 版本完美配合。

第 1 步

使用我的分步指南安装 Portainer。如果您的 Synology NAS 上已经安装了 Portainer,请跳过此步骤。注意确保您已安装最新的 Portainer 版本

第 2 步

确保您拥有 synology.me 通配符证书。按照我的指南获取通配符证书。如果您已经拥有 synology.me 通配符证书,请跳过此步骤。

第 3 步

转到控制面板/登录门户/高级选项卡/单击反向代理。请按照下图中的说明进行操作。

第 4 步

现在单击 “Create” 按钮。请按照下图中的说明进行操作。

第 5 步

单击“创建”按钮后,将打开下面的窗口。请按照下图中的说明进行操作。

在 General 区域,设置 Reverse Proxy Name 描述:键入 Discourse。之后,添加以下说明:

来源
协议: HTTPS
主机名: discourse.yourname.synology.me
端口:443
选中启用 HSTS
目标
协议: HTTP
主机名: localhost
端口: 2249

第 6 步

在 Reverse Proxy Rules 上,单击 Custom Header 选项卡。单击 Create,然后从下拉菜单中单击 WebSocket。点击 WebSocket 后,将自动添加两个 Header Name 和 2 个 Value。单击 Save (保存)。请按照下图中的说明进行操作。

第 7 步

转到控制面板 /网络 /连接 选项卡/选中启用 HTTP/2 ,然后单击应用 。请按照下图中的说明进行操作。

第 8 步

转到控制面板/安全/高级选项卡/选中启用 HTTP 压缩,然后单击应用。请按照下图中的说明进行操作。

第 9 步

转到 File Station 并打开 docker 文件夹。在 docker 文件夹中,创建一个新文件夹并将其命名为 discourse 。请按照下图中的说明进行操作。
注意:请注意,请仅输入小写字母,而不要输入大写字母。

第 10 步

现在,在您在步骤 10 中创建的 discourse 文件夹中创建四个新文件夹,并将其命名为 datadbredissidekiq。请按照下图中的说明进行操作。
注意:请注意,请仅输入小写字母,而不要输入大写字母。

第 11 步

右键单击您之前在 STEP 11 中创建的 discourse 文件夹,然后单击 Properties 。请按照下图中的说明进行操作。

第 12 步

转到 Permission 选项卡,然后单击 Advanced options。从下拉菜单中选择“**Make inherited permissions explicitit”。**请按照下图中的说明进行操作。

第 13 步

选择 每个人 然后单击 编辑 选项卡。请按照下图中的说明进行操作。

第 14 步

检查所有 ReadWrite Permissions。单击 Done。请按照下图中的说明进行操作。

第 15 步

步骤 15 上单击**“完成**”后,选中“应用于此文件夹、子文件夹和文件”。单击 Save (保存)。请按照下图中的说明进行操作。

第 16 步

按照我的分步指南了解如何为您的 Gmail 帐户激活 SMTP。此步骤是必需的。注意:如果您不想使用 Google 最简单的 SMTP 方法,并且您已经从自己的邮件服务器获得了 SMTP 详细信息,您可以跳过此步骤并改用您的个性化电子邮件 SMTP 详细信息。

第 17 步

使用您的用户名和密码登录 Portainer。在 Portainer 的左侧边栏上,单击 Stacks,然后单击 + Add stack。请按照下图中的说明进行操作。

第 18 步

在 Name 字段中,键入 in discourse。请按照下图中的说明进行操作。
**注意:**复制 粘贴下面的代码到 Portainer Stacks Web 编辑器中

services:
  postgresql:
    image: bitnami/postgresql:16
    container_name: Discourse-DB
    hostname: postgresql
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "bitnami_discourse", "-U", "bn_discourse"]
      timeout: 45s
      interval: 10s
      retries: 10
    volumes:
      - /volume1/docker/discourse/db:/bitnami/postgresql:rw
    environment:
      POSTGRESQL_DATABASE: bitnami_discourse
      POSTGRESQL_USERNAME: bn_discourse
      POSTGRESQL_PASSWORD: bitnami123
    restart: on-failure:5

  redis:
    image: redis
    container_name: Discourse-REDIS
    command: redis-server --requirepass redispass
    healthcheck:
     test: ["CMD-SHELL", "redis-cli ping || exit 1"]
    volumes:
      - /volume1/docker/discourse/redis:/data:rw
    environment:
      TZ: Europe/Bucharest
    restart: on-failure:5

  discourse:
    image: bitnami/discourse:3.3.2
    container_name: Discourse
    restart: on-failure:5
    healthcheck:
      test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/3000' || exit 1
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 90s
    ports:
      - 2249:3000
    depends_on:
      - postgresql
      - redis
    environment:
      - DISCOURSE_USERNAME=marius
      - DISCOURSE_PASSWORD=mariushosting
      - DISCOURSE_EMAIL=yourown@email
      - DISCOURSE_ENV=production
      - DISCOURSE_ENABLE_HTTPS=yes
      - DISCOURSE_DATABASE_HOST=postgresql
      - DISCOURSE_DATABASE_PORT_NUMBER=5432
      - DISCOURSE_DATABASE_USER=bn_discourse
      - DISCOURSE_DATABASE_NAME=bitnami_discourse
      - DISCOURSE_DATABASE_PASSWORD=bitnami123
      - DISCOURSE_REDIS_HOST=redis
      - DISCOURSE_REDIS_PORT_NUMBER=6379
      - DISCOURSE_REDIS_PASSWORD=redispass
      - POSTGRESQL_CLIENT_POSTGRES_USER=bn_discourse
      - POSTGRESQL_CLIENT_POSTGRES_PASSWORD=bitnami123
      - POSTGRESQL_CLIENT_CREATE_DATABASE_NAME=bitnami_discourse
      - POSTGRESQL_CLIENT_CREATE_DATABASE_EXTENSIONS=hstore,pg_trgm
      - DISCOURSE_HOST=discourse.yourname.synology.me
      - DISCOURSE_DEVELOPER_EMAILS=yourown@email
      - DISCOURSE_SMTP_HOST=smtp.gmail.com
      - DISCOURSE_SMTP_AUTH=login
      - DISCOURSE_SMTP_PORT_NUMBER=587
      - DISCOURSE_SMTP_USER=Your-own-gmail-address
      - DISCOURSE_SMTP_PASSWORD=Your-own-app-password
      - DISCOURSE_SMTP_PROTOCOL=tls
    volumes:
      - /volume1/docker/discourse/data:/bitnami/discourse:rw
      
  sidekiq:
    image: bitnami/discourse:3.3.2
    container_name: Discourse-SIDEKIQ
    depends_on:
      - discourse
    volumes:
      - /volume1/docker/discourse/sidekiq:/bitnami/discourse:rw
    command: /opt/bitnami/scripts/discourse-sidekiq/run.sh
    environment:
      - DISCOURSE_HOST=discourse.yourname.synology.me
      - DISCOURSE_ENABLE_HTTPS=yes
      - DISCOURSE_ENV=production
      - DISCOURSE_DATABASE_HOST=postgresql
      - DISCOURSE_DATABASE_PORT_NUMBER=5432
      - DISCOURSE_DATABASE_USER=bn_discourse
      - DISCOURSE_DATABASE_NAME=bitnami_discourse
      - DISCOURSE_DATABASE_PASSWORD=bitnami123
      - DISCOURSE_REDIS_HOST=redis
      - DISCOURSE_REDIS_PORT_NUMBER=6379
      - DISCOURSE_REDIS_PASSWORD=redispass
      - DISCOURSE_DEVELOPER_EMAILS=yourown@email
      - DISCOURSE_SMTP_HOST=smtp.gmail.com
      - DISCOURSE_SMTP_AUTH=login
      - DISCOURSE_SMTP_PORT_NUMBER=587
      - DISCOURSE_SMTP_USER=Your-own-gmail-address
      - DISCOURSE_SMTP_PASSWORD=Your-own-app-password
      - DISCOURSE_SMTP_PROTOCOL=tls

: 在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 TZ 的值。(从此列表中选择您当前的时区。
: 在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_USERNAME 的值。输入您自己的用户名。Marius 是用户名的一个示例。
: 在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_PASSWORD 的值。输入您自己的密码。MariusHosting 是密码的一个示例。您稍后将在 STEP 24 中需要此密码。
: 在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_EMAIL 的值。输入您自己的电子邮件地址。您稍后将在 STEP 24 中需要此电子邮件。
注意:在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_HOST 的值,并键入您之前在步骤 6 中创建的 synology.me DDNS(带 https://)。
: 在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_DEVELOPER_EMAILS 的值。输入您自己的电子邮件地址。
注意:在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_SMTP_USER 的值并键入您自己的 Gmail 地址。请参阅步骤 17
注意:在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_SMTP_PASSWORD 的值并输入您自己的 Gmail 应用程序密码 。请参阅步骤 17
注意:在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_HOST 的值,并键入您自己的 synology.me DDNS,而不 https:// 您之前在步骤 6 中创建的开头。
: 在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_DEVELOPER_EMAILS 的值。输入您自己的电子邮件地址。
注意:在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_SMTP_USER 的值并键入您自己的 Gmail 地址。请参阅步骤 17
注意:Google 应用专用密码获取地址:https://myaccount.google.com/apppasswords
注意:在将上述代码粘贴到下面的 Web 编辑器区域之前,请更改 DISCOURSE_SMTP_PASSWORD 的值并键入您自己的 Gmail 应用程序密码 。请参阅步骤 17

第 19 步

在页面上向下滚动,直到看到一个名为 Deploy the stack 的按钮。点击它。请按照下图中的说明进行操作。安装过程最多可能需要几分钟。这将取决于您的 Internet 速度连接。

第 20 步

如果一切正常,您将在屏幕右上角看到以下消息:“Success Stack successfully deployed ”。

:hourglass:现在请等待,因为 Discourse 映像大约为 3GB。

第 21 步

回到第 1 步,否则 您将处理业力:slightly_smiling_face:

第 22 步

请等待大约 10-12 分钟以完成安装,否则如果您尝试过早连接,将收到一个空白的错误页面。现在打开浏览器并输入您的 HTTPS/SSL 证书,如下所示 https:// discourse.yourname.synology.me 中。就我而言,它是 https:// 话语。mariushosting.synology.me 如果一切顺利,您将看到 Discourse 主登录页面。单击 Sign Up(注册)。请按照下图中的说明进行操作。

第 23 步

将打开一个新的弹出窗口。输入您之前在步骤 19 中添加的电子邮件地址 (DISCOURSE_EMAIL) 和您自己的密码 (DISCOURSE_PASSWORD),然后单击登录。请按照下图中的说明进行操作。

第 24 步

在左侧 Discourse 侧边栏上,单击 Admin (管理员 )。请按照下图中的说明进行操作。

第 25 步

单击 所有站点设置 / 安全 / 安全性 。检查 强制 https 选项,然后确认。 请按照下图中的说明进行操作。

第 26 步

您的 Discourse 论坛一目了然!

享受 Discourse!

#:sos:故障 排除

如果您在使用此容器时遇到问题,请务必查看常见 Docker 问题一文。

注意:我可以在 Synology NAS 上运行 Docker 吗?查看支持的型号
注意如何在 Synology NAS 上备份 Docker 容器
注意:了解如何使用最新映像更新 Discourse 容器
注意如果运行 Docker,如何释放 NAS 上的磁盘空间
注意如何为Docker容器安排启动和停止
注意如何激活电子邮件通知
注意如何在 NAS 上添加访问控制配置文件
注意如何更改 Docker 容器重启策略
注意如何将 Docker 容器与 VPN 一起使用
注意将 Docker Run 转换为 Docker Compose
注意如何清理 Docker
注意如何自动清理 docker
注意使用 Docker 和 DDNS 时的最佳实践
注意一些 Docker 容器需要 WebSocket
注意找出 Docker 的最佳 NAS 型号.
注意为 Docker 容器激活 Gmail SMTP