安裝 Discourse 論壇軟體 - 說明篇

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

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

有做功課的(公佈欄有使用教學),會問如何安裝 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 連結)時,常會被問到:有哪些公司在用?

我直接幫你整理好了,

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


2. 哪種架站方式適合你

2-1. 委任 Discourse

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

對稍具規模的公司,我建議直接使用 Discourse 提供的託管服務(Business)。

項目 Basic Standard Business Enterprise
月費(美金) 50 100 300 Contact
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 Standard Business 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 - - -

提醒:

  • 服務僅包含架站及維護。其餘設定、管理等,你還是要自己搞定。

  • 以英文溝通。

更多託管服務參考資訊:

2-2. 自行架設

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

  • 64-bit Linux OS
  • 2 GB RAM

以 Linode 和 Digital Ocean 為例,Linode Shared CPU PlansDigital Ocean Basic 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

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

補充:

  • 服務費:僅包含安裝。請確認你提供的 email 符合前述規定。

  • 交付後一個月內免費更新維護。

  • 開發票。


3. 安裝前預備動作

3-1. 網域名稱

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

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

Discourse 創辦人之一 Jeff Atwood,強烈建議不要用主域名( example.com or
www.example.com)做為論壇網址(請參考 下方連結)。

類似這種有次域名的,會是比較好的選擇: discourse.example.com or forum.example.com

3-2. email 設定

  • 請事前準備好,安裝時需要。

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

  • 前面提過,email 需支援 SPF and DKIM records


4. 安裝 Discourse

4-1. 準備 SSH keys

首先下載 SSH Keys 的工具:putty.exe 和 puttygen.exe 官方下載連結

  • 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 passphraseConfirm passphrase 輸入你之後要在雲端伺服器使用的密碼,然後分別下載公鑰私鑰 Save public keySave private key(你 puttygen 程式的按鈕,不是這裡的按鈕)。

4-2. 安裝雲端伺服器(Linux)

  • 64-bit Linux OS:例如 LTS release of Ubuntu Server

    我是安裝 Ubuntu 22.04 LTS

  • 建議 2 GB RAM

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

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

apt update
apt upgrade

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

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

  2. 左側選單 Connection > SSH > Auth:右側點擊 Browse…

    選擇你剛剛下載的 private key(id_rsa.ppk,檔名是你剛剛下載時命名的,id_rsa 是預設值)

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

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

    提醒:如果你要複製/貼上,這裡不能用 ctrl + v ,而是按滑鼠右鍵貼上。

4-4. 安裝 Docker

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

如果你沒事先安裝好 Docker,在下一步(4-5)會有這個錯誤訊息:Failed to find docker or docker.io on your PATH.

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

上述指令說明(純參考,直接複製指令即可。不了解並不影響安裝):

結合使用 wgetsh 兩個指令的命令管道(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

依序輸入以下指令:

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

./discourse-setup

接著依序填寫以下設定。

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

    • 如果 域名未指向伺服器 的話(失敗,請參考步驟 3-1):

      Checking your domain name . . .
      WARNING: Port 443 of computer does not appear to be accessible using hostname: discourse.example.com
      WARNING: Connection to http://discourse.example.com (port 80) also fails.

    • 域名已指向伺服器成功):

      Checking your domain name . . .
      Connection to discourse.example.com succeeded.

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

    超過一個管理員帳號時,以半形逗號間隔各 email。

  • SMTP server address? [smtp.example.com]:

  • SMTP port? [587]:

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

    :arrow_upper_left: 你真正寄 email 的帳號。

  • SMTP password? [pa$$word]:

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

    :arrow_upper_left: 使用者看到的 email 帳號,預設是 noreply,使用者直接回覆會找不到該帳號(除非你真的有這個帳號)。

  • 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 包。

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

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

    安裝 PAM 的 cracklib,提供額外的密碼檢查能力:

    apt install libpam-cracklib
    
  2. 建議設定 fail2ban ,阻擋密碼輸入錯誤超過 3 次的 IP 位址 10 分鐘。

    • Ubuntu
      apt install fail2ban
      
    • CentOS/RHEL
      sudo dnf install fail2ban
      

4-7-3. 設定防火牆

4-8. 第一次執行 Discourse

4-8-1. 狂賀安裝成功!

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

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

輸入 4.6 設定的 email,註冊管理員帳戶(admin account)。

如果你無法註冊管理員帳戶,請查看伺服器的 log 日誌 /var/discourse/shared/standalone/log/rails/production.log ,以及參考 Discourse 官方 電子郵件故障排除清單

4-8-3. Discourse 基本設定

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

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

完成前述設定後,你會看到 工作人員(Staff)主題READ ME FIRST:Admin Quick Start Guide 。包含進一步設定等相關資訊。

到這裡就大功告成了喔!

未來如果有 Discourse 管理的問題,請到 Discourse 管理大補帖 參與討論。

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


問答

本文未開放回覆,有關安裝的問答,請移駕另外一篇文章:安裝 Discourse 論壇軟體 - 問答篇


參考資料

2個讚