原文链接: How to Install Discourse on Your Synology NAS – Marius Hosting
作者: Marius Bogdan Lixandru
日期: 2024年 9 月 5 日
Discourse 是一个开源的 Internet 论坛系统。功能包括讨论的线程、分类和标记、可配置的访问控制、实时更新、扩展链接预览、无限滚动和实时通知。它可以通过其插件架构和主题系统进行定制。将其用作邮件列表、论坛、长篇聊天室等!在本分步指南中,我将向您展示如何使用 Docker 和 Portainer 在 Synology NAS 上安装 Discourse 。
第 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 文件夹中创建四个新文件夹,并将其命名为 data、db、redis、sidekiq。请按照下图中的说明进行操作。
注意:请注意,请仅输入小写字母,而不要输入大写字母。
第 11 步
右键单击您之前在 STEP 11 中创建的 discourse 文件夹,然后单击 Properties 。请按照下图中的说明进行操作。
第 12 步
转到 Permission 选项卡,然后单击 Advanced options。从下拉菜单中选择“**Make inherited permissions explicitit”。**请按照下图中的说明进行操作。
第 13 步
选择 每个人 然后单击 编辑 选项卡。请按照下图中的说明进行操作。
第 14 步
检查所有 Read 和 Write 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 ”。
现在请等待,因为 Discourse 映像大约为 3GB。
第 21 步
回到第 1 步,否则 您将处理业力
。
第 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!
#
故障 排除
如果您在使用此容器时遇到问题,请务必查看常见 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。






















