# 安裝 Discourse 論壇軟體 - 說明篇

**URL:** https://vip.studycamp.tw/t/%E5%AE%89%E8%A3%9D-discourse-%E8%AB%96%E5%A3%87%E8%BB%9F%E9%AB%94-%E8%AA%AA%E6%98%8E%E7%AF%87/6020
**Category:** Discourse 論壇軟體的安裝及使用
**Created:** [2023年五月2日 12:00 UTC](https://vip.studycamp.tw/t/%E5%AE%89%E8%A3%9D-discourse-%E8%AB%96%E5%A3%87%E8%BB%9F%E9%AB%94-%E8%AA%AA%E6%98%8E%E7%AF%87/6020 "2023-05-02T12:00:50Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![sky](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/sky/32/8098_2.png) [@sky](https://vip.studycamp.tw/u/sky)
#### Post date: [2023年五月2日 12:00 UTC](https://vip.studycamp.tw/t/%E5%AE%89%E8%A3%9D-discourse-%E8%AB%96%E5%A3%87%E8%BB%9F%E9%AB%94-%E8%AA%AA%E6%98%8E%E7%AF%87/6020/1 "2023-05-02T12:00:51Z")

</div>

有時會收到一些朋友詢問關於論壇的問題。

伸手牌的朋友，會問論壇是用什麼軟體安裝的？

有做功課的（公佈欄有使用教學），會問如何安裝 Discourse 論壇軟體？

趁五一勞動節，寫個中文說明給大家參考。

* * *

# 1. Discourse 簡介

## 1-1. 什麼是 Discourse？

Discourse 是開放原始碼的論壇軟體。

Discourse 結合了現代社交媒體的功能：用戶個人資料頁面、私訊功能和活動提醒等。同時兼具傳統論壇的功能：主題討論、貼文回覆、私密信箱和公告等。

以下是 Discourse 的一些特色：

1. 以行動裝置為中心：Discourse 的介面設計考慮了行動裝置的使用體驗，讓用戶可以方便地在手機和平板電腦上使用論壇。

2. 信任度分級系統：Discourse 的信任系統，能依用戶的使用情形，自動調整權限和等級，以確保只有值得信任的用戶才能夠進行某些操作。

3. 客製化：Discourse 的外觀和功能，使用者可以自由調整，例如：外觀主題、顏色、字型、圖片等。

4. 社交媒體功能：Discourse 具備多種社交媒體功能，例如標籤、私訊和活動提醒，方便用戶追蹤感興趣的話題和互動。

5. 統計分析功能：Discourse 內建統計分析工具，讓論壇管理者可以瞭解用戶的行為和討論趨勢，並且根據這些數據進行適當的調整。

## 1-2. 應用場景

除了作為論壇軟體之外，Discourse 還可以用在許多場景，例如：

1. 內部溝通：Discourse 可以用作企業內部溝通的工具，例如員工可以在論壇上分享想法、提出問題、討論工作流程等。

2. 社群建設：Discourse 可以用來建立社群，例如開源項目的社群或是對某一特定領域感興趣的人群。使用 Discourse 可以幫助社群建立一個完整的討論平台，從而更好地促進交流和知識分享。

3. 產品支援：許多公司使用 Discourse 作為產品支援軟體，讓客戶可以在論壇上提問、回答問題，從而快速解決問題。這種方法也可以幫助公司建立一個知識庫，讓其他人可以輕鬆找到相關問題的解決方案。

4. 學習平台：一些教育機構或教育平台使用 Discourse 作為學習平台，學生可以在論壇上進行討論、提問和回答問題，從而更好地理解和學習課程內容。

5. 協作工具：Discourse 可以用作協作工具，例如團隊可以在論壇上討論專案進展、問題解決方案、資源分享等。

**我個人認為，Discourse 非常適合稍具規模的公司，作為內部的溝通平台，提供教育訓練、訊息布達、跨部門交流、員工建議、投票等功能。**

## 1-3. 哪些公司使用 Discourse？

傳統採購或技術人員，在推薦老闆使用新技術（Discourse 於 2014年8月26日首次發表，[**WIKI 連結**](https://en.wikipedia.org/wiki/Discourse_(software))）時，常會被問到：有哪些公司在用？

我直接幫你整理好了，

| 公司 | 網站 | 論壇網址 |
| --- | --- | --- |
| OpenAI | [https://openai.com/](https://openai.com/) | [https://community.openai.com/](https://community.openai.com/) |
| GitLab | [https://about.gitlab.com/](https://about.gitlab.com/) | [https://forum.gitlab.com/](https://forum.gitlab.com/) |
| Docker | [https://www.docker.com/](https://www.docker.com/) | [https://forums.docker.com/](https://forums.docker.com/) |
| Mozilla | [https://www.mozilla.org/](https://www.mozilla.org/) | [https://discourse.mozilla.org/](https://discourse.mozilla.org/) |
| Ubuntu | [https://ubuntu.com/](https://ubuntu.com/) | [https://discourse.ubuntu.com/](https://discourse.ubuntu.com/) |
| Codecademy | [https://www.codecademy.com/](https://www.codecademy.com/) | [https://discuss.codecademy.com/](https://discuss.codecademy.com/) |
| Envato | [https://envato.com/](https://envato.com/) | [https://forums.envato.com/](https://forums.envato.com/) |
| Udacity | [https://www.udacity.com/](https://www.udacity.com/) | [https://discussions.udacity.com/](https://discussions.udacity.com/) |
| Unreal Engine | [https://www.unrealengine.com/](https://www.unrealengine.com/) | [https://forums.unrealengine.com/](https://forums.unrealengine.com/) |
| Figma | [https://www.figma.com/](https://www.figma.com/) | [https://forum.figma.com/](https://forum.figma.com/) |
| Zoom | [https://zoom.us/](https://zoom.us/) | [https://devforum.zoom.us/](https://devforum.zoom.us/) |
| Ruby on Rails | [https://rubyonrails.org/](https://rubyonrails.org/) | [https://discuss.rubyonrails.org/](https://discuss.rubyonrails.org/) |

以上只是小部分節錄，你可以點擊下方網址看更多：

> **[Discourse customers](https://www.discourse.org/customers)**
>
> We love working with our customers to host, build, and customize amazing communities.

* * *

# 2. 哪種架站方式適合你

## 2-1. 委任 Discourse

雖然本文的主要目的，是在教你安裝 Discourse，但 **其實比安裝更麻煩的是維護** 。

**對稍具規模的公司，我建議直接使用 Discourse 提供的託管服務（Business）。**

| 項目 | Basic | Standard | Business | Enterprise |
| --- | --- | --- | --- | --- |
| **月費（美金）** | 50 | 100 | 300 | [Contact](https://discourse.org/pricing#form) |
| Members | 100 | Unlimited | Unlimited | Unlimited |
| Admins & Moderators | 5 | 5 | 15 | Unlimited |
| Monthly Page Views | 50k | 100k | 500k | 3M+ |
| Storage | 10GB | 20GB | 100GB | 200GB+ |
| Monthly Emails | 50k | 100k | 300k | 1.5M+ |
| plugins | [Basic](https://discourse.org/plugins) | [Standard](https://discourse.org/plugins#standard) | [Business](https://discourse.org/plugins#business) | [Enterprise](https://discourse.org/plugins#enterprise) |
| Real-time chat | ✓ | ✓ | ✓ | ✓ |
| Secure web access | ✓ | ✓ | ✓ | ✓ |
| Mobile app | ✓ | ✓ | ✓ | ✓ |
| Email support | ✓ | ✓ | ✓ | ✓ |
| Global CDN | ✓ | ✓ | ✓ | ✓ |
| Complete feature set | ✓ | ✓ | ✓ | ✓ |
| Public access | - | ✓ | ✓ | ✓ |
| Custom themes and components | - | ✓ | ✓ | ✓ |
| Custom domain | - | ✓ | ✓ | ✓ |
| DiscourseConnect (SSO) | - | ✓ | ✓ | ✓ |
| Social login | - | ✓ | ✓ | ✓ |
| Sign in with Apple | - | ✓ | ✓ | ✓ |
| Amazon, LinkedIn, and Microsoft authentication | - | - | ✓ | ✓ |
| OpenID Connect | - | - | ✓ | ✓ |
| Custom OAuth2 | - | - | ✓ | ✓ |
| Learning Management System Integration | - | - | ✓ | ✓ |
| Migration | - | - | ✓ | ✓ |
| Priority email support | - | - | ✓ | ✓ |
| SAML | - | - | - | ✓ |
| Custom migration | - | - | - | ✓ |

> 提醒：
> 
> - 服務僅包含架站及維護。其餘設定、管理等，你還是要自己搞定。
> 
> - 以英文溝通。

更多託管服務參考資訊：

> **[Discourse pricing](https://discourse.org/pricing)**
>
> Official Discourse hosting plans for communities of every size.

## 2-2. 自行架設

Discourse 官方建議的安裝要求不高：

- 64-bit Linux OS
- 2 GB RAM

以 Linode 和 Digital Ocean 為例，**[Linode Shared CPU Plans](https://www.linode.com/pricing/)** 和 **[Digital Ocean Basic Droplets](https://www.digitalocean.com/pricing/droplets)** 的配備和價格幾乎一樣。

| Plan | $/Mo | $Backups | RAM | vCPUs | Storage | Transfer | Network In/Out |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Linode 2 GB | $12 | $2.5 | 2 GB | 1 | 50 GB | 2 TB | 40/2 Gbps |
| Digital Ocean 2 GiB | $12 | 1.071% | 2 GiB | 1 | 50 GiB | 2,000 GiB | N/A |

**提醒：強烈建議加購《備份》** ，小錢幫你省下未來可能的大麻煩。

對於有技術背景的個人或團隊，這是最便宜的方式，每個月不到15元美金搞定（ **未計入你的時間人力成本** ）。

本文第三部分開始，會有安裝的詳細介紹。

## 2-3. 委託我司安裝

基本上，按照下方介紹，一步一步進行，你應該可以自己搞定（可能 email 會稍微卡關）。

由於 email 會寄給所有論壇成員，為防止垃圾郵件，要求較嚴格是合理的，需支援 [**SPF and DKIM records**](https://www.google.com/search?q=what+is+spf+dkim)。

如果你懶得自己架設、或是對架站技術陌生，可以找我們公司協助。

> 補充：
> 
> - 服務費：僅包含安裝。請確認你提供的 email 符合前述規定。
> 
> - 交付後一個月內免費更新維護。
> 
> - 開發票。

* * *

# 3. 安裝前預備動作

## 3-1. 網域名稱

安裝過程中，需要輸入論壇的網址，所以網域的 DNS Records 要預先設定好（設定完到生效，官方說法是需要一兩天，不過通常很快）。

申請域名不是本文重點，請大家自行 google。但如果域名服務商，能提供符合前述規定的 email 服務，會省下你不少時間。

Discourse 創辦人之一 **Jeff Atwood** ，強烈建議不要用主域名（ `example.com` or  
`www.example.com`）做為論壇網址（請參考 [**下方連結**](https://meta.discourse.org/t/can-you-use-www-for-the-install-subdomain/20496/2)）。

類似這種有次域名的，會是比較好的選擇： `discourse.example.com` or `forum.example.com`。

> **[Can you use "www" for the install subdomain?](https://meta.discourse.org/t/can-you-use-www-for-the-install-subdomain/20496/2)**
>
> Yes, Discourse can work as example.com www.example.com However, I don’t recommend this unless you are 100% ABSOLUTELY sure you will never, ever, ever run anything else on that domain name.

## 3-2. email 設定

- 請事前準備好，安裝時需要。

- 請勿使用 Gmail, Outlook, Yahoo 等免費 email。

- 前面提過，email 需支援 [**SPF and DKIM records**](https://www.google.com/search?q=what+is+spf+dkim)。

* * *

# 4. 安裝 Discourse

## 4-1. 準備 SSH keys

首先下載 SSH Keys 的工具：[**putty.exe 和 puttygen.exe 官方下載連結**](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)

- puttygen.exe: 產生 SSH Keys 用。

- putty.exe: 連上雲端伺服器（Linux）用。

接著用剛剛下載的 puttygen.exe 產生公鑰私鑰 public/private key pair。

1. 執行 puttygen，點擊中間右側的 Generate 按鈕。

2. 在視窗中間上方灰色空白區移動滑鼠，puttygen 會根據滑鼠軌跡產生 `SSH-2 RSA key` 值（預設，可依需求設定）。移動滑鼠期間，你會看到進度條，滿了就繼續下一步。

3. 在 `Key comment` 輸入給自己看的說明，預設是 rsa-key-yyyymmnn。

4. 在 `Key passphrase` 和 `Confirm passphrase` 輸入你之後要在雲端伺服器使用的密碼，然後分別下載公鑰私鑰 Save public key 和 Save private key（你 puttygen 程式的按鈕，不是這裡的按鈕）。

## 4-2. 安裝雲端伺服器（Linux）

- 64-bit Linux OS：例如 **LTS release of Ubuntu Server** 。

- 建議 2 GB RAM

- 為了之後使用 SSH keys 存取雲端伺服器，安裝時將 SSH Public Key 資料填入。

如果你是選擇雲端商現成安裝好的伺服器，記得更新其內容。

```auto
apt update
apt upgrade

```

## 4-3. 以 SSH 登入雲端伺服器

1. 左側選單 `Session`：右側 `Host Name (or IP address)` 輸入你剛剛安裝 Linux 的 IP（因為此時你的論壇網址可能還沒設定完成）

2. 左側選單 `Connection` \> `SSH` \> `Auth`：右側點擊 Browse…

3. 點擊下方 Open 即可連上 Linux 伺服器。

4. 進入伺服器後，`login as:` 填 `root`、`Passphrase for key "rsa-key"` 填入你之前步驟 4-1 `Key passphrase` 的密碼。

## 4-4. 安裝 Docker

Discourse 會自動處理 Docker 相關事宜，不過你必須先安裝好 Docker，這樣開始安裝時才能全自動化。

> 如果你沒事先安裝好 Docker，在下一步（4-5）會有這個錯誤訊息： **Failed to find docker or `docker.io` on your PATH.**

```auto
wget -qO- https://get.docker.com/ | sh

```

> **上述指令說明（純參考，直接複製指令即可。不了解並不影響安裝）：**
> 
> 結合使用 `wget` 和 `sh` 兩個指令的命令管道（pipeline），從指定的 URL 下載 shell 腳本並執行。
> 
> - `wget`: 從網絡上下載文件的指令。它通過指定的 URL 下載文件或內容。
> 
> - `-q`: `wget` 的參數之一，表示靜默模式（quiet mode）。在這種模式下，`wget` 不會輸出任何冗長的信息，只顯示重要的錯誤和下載進度。
> 
> - `-O-`: `wget` 的另一個參數，大寫字母 “O” 連接短橫線 “-”。它指定下載的內容輸出到標準輸出（stdout）而不是寫入到文件中。這裡的短橫線表示標準輸出。
> 
> - `url`: （`https://get.docker.com/`）要下載的文件的網址或位置。
> 
> - `|`: 這是一個管道操作符，將前一個指令的輸出傳遞給後一個指令作為輸入。在這裡，它將 `wget` 的輸出通過管道傳遞給後面的 `sh` 指令。
> 
> - `sh`: 這是 shell 解析器的命令，用於執行 shell 腳本或命令。通過管道從 `wget` 接收到的內容將被傳遞給 `sh` 執行。

## 4-5. 複製 Discourse Docker Image

依序輸入以下指令：

```auto
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers

```

> 上述指令說明：
> 
> 1. 切換為管理員身份（SHELL environment）
> 
> 2. 複製 Discourse Docker Image 到你雲端伺服器的這個路徑 /var/discourse
> 
> 3. 切換路徑到 /var/discourse
> 
> 4. 設定 containers 權限屬性，擁有者可以「讀、寫、執行」，非擁有者沒有任何權限（連讀取都不行）。

## 4-6. 安裝 Discourse

```auto
./discourse-setup

```

接著依序填寫以下設定。

- Hostname for your Discourse? [`discourse.example.com`]:

- Email address for admin account(s)? [me@example.com,you@example.com]:

- SMTP server address? [`smtp.example.com`]:

- SMTP port? [587]:

- SMTP user name? [user@example.com]:

- SMTP password? [pa$$word]:

- notification email address? [noreply@example.com]:

- Optional email address for Let’s Encrypt warnings? (ENTER to skip) [me@example.com]:

- Optional Maxmind License key (ENTER to continue without MAXMIND GeoLite2 - geolocation database) [1234567890123456]:

## 4-7. 安裝完成之維護

**4-7-1. 自動安全更新**

強烈建議開啟 **伺服器的自動安全更新** 。

- 在 Ubuntu 中使用 `dpkg-reconfigure -plow unattended-upgrades` 命令。

- 在 CentOS/RHEL 中，使用 [**yum-cron**](https://www.redhat.com/sysadmin/using-yum-cron) 包。

**4-7-2. 提供登入安全性**

1. 如果不是使用前面所提的 SSH 密鑰 putty 登入伺服器，請務必強制執行 **強複雜度 root 密碼** 。

2. 建議設定 `fail2ban` ，阻擋密碼輸入錯誤超過 3 次的 IP 位址 10 分鐘。

**4-7-3. 設定防火牆**

- **Ubuntu** ：  
設定方式：[**開啟 ufw**](https://meta.discourse.org/t/configure-a-firewall-for-discourse/20584)

- **CentOS/RHEL** ：  
設定方式：[**firewalld**](https://blog.gtwang.org/linux/centos-7-firewalld-command-setup-tutorial/)

## 4-8. 第一次執行 Discourse

**4-8-1. 狂賀安裝成功！**

在瀏覽器輸入前面 4.6 設定的網址 `discourse.example.com` ，就會看到安裝成功的歡迎畫面。

[![](https://camo.githubusercontent.com/5744efa37d5ed85decaf931b9e6287f2d487f656db6ac3f484fa5d55555b7019/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d636f6e67726174732e706e67)](https://camo.githubusercontent.com/5744efa37d5ed85decaf931b9e6287f2d487f656db6ac3f484fa5d55555b7019/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d636f6e67726174732e706e67)

**4-8-2. 註冊管理員帳號**

輸入 4.6 設定的 email，註冊管理員帳戶（admin account）。

[![](https://camo.githubusercontent.com/e92d0b8878a1dbcb9567312a3e8cf8f2204f748b3630961b8c02009313632cb5/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d72656769737465722e706e67)](https://camo.githubusercontent.com/e92d0b8878a1dbcb9567312a3e8cf8f2204f748b3630961b8c02009313632cb5/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d72656769737465722e706e67)

[![](https://camo.githubusercontent.com/8f0f4c424519fa97140560785ae2c737cde544ef522446c2e078080515adbca8/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d61637469766174652e706e67)](https://camo.githubusercontent.com/8f0f4c424519fa97140560785ae2c737cde544ef522446c2e078080515adbca8/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d61637469766174652e706e67)

如果你無法註冊管理員帳戶，請查看伺服器的 log 日誌 `/var/discourse/shared/standalone/log/rails/production.log` ，以及參考 Discourse 官方 [**電子郵件故障排除清單**](https://meta.discourse.org/t/troubleshooting-email-on-a-new-discourse-install/16326)。

**4-8-3. Discourse 基本設定**

註冊管理員帳戶後，將啟動設定嚮導，指導你完成 Discourse 的基本設定（總共 13 個步驟）。

[![](https://camo.githubusercontent.com/4c17f07d9eead7637e698e6730d442ee423e0237cd99b033a747a34edaa48663/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d77697a6172642d737465702d312e706e67)](https://camo.githubusercontent.com/4c17f07d9eead7637e698e6730d442ee423e0237cd99b033a747a34edaa48663/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d77697a6172642d737465702d312e706e67)

**4-8-4. 相關論壇管理參考資料**

完成前述設定後，你會看到 **工作人員（Staff）主題** 和 **READ ME FIRST：Admin Quick Start Guide** 。包含進一步設定等相關資訊。

[![](https://camo.githubusercontent.com/c6d23ec64eb8c7000b2896334c2d5ede50a69c0b372839ef23493d3b2d9f7529/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d686f6d65706167652e706e67)](https://camo.githubusercontent.com/c6d23ec64eb8c7000b2896334c2d5ede50a69c0b372839ef23493d3b2d9f7529/68747470733a2f2f7777772e646973636f757273652e6f72672f696d616765732f696e7374616c6c2f31372f646973636f757273652d686f6d65706167652e706e67)

到這裡就大功告成了喔！

未來如果有 Discourse 管理的問題，請到 [**Discourse 管理大補帖**](https://vip.studycamp.tw/c/discourse-installation-and-use/discourse-installation-and-administration/124) 參與討論。

祝大家在各自社群的合作下，論壇發展順利大成功。

* * *

# 問答

> 本文未開放回覆，有關安裝的問答，請移駕另外一篇文章：**[安裝 Discourse 論壇軟體 - 問答篇](https://vip.studycamp.tw/t/topic/6150)**。

* * *

# 參考資料

> <https://github.com/discourse/discourse/blob/main/docs/INSTALL-cloud.md>
