有時會收到一些朋友詢問關於論壇的問題。
伸手牌的朋友,會問論壇是用什麼軟體安裝的?
有做功課的(公佈欄有使用教學),會問如何安裝 Discourse 論壇軟體?
趁五一勞動節,寫個中文說明給大家參考。
1. Discourse 簡介
1-1. 什麼是 Discourse?
Discourse 是開放原始碼的論壇軟體。
Discourse 結合了現代社交媒體的功能:用戶個人資料頁面、私訊功能和活動提醒等。同時兼具傳統論壇的功能:主題討論、貼文回覆、私密信箱和公告等。
以下是 Discourse 的一些特色:
-
以行動裝置為中心:Discourse 的介面設計考慮了行動裝置的使用體驗,讓用戶可以方便地在手機和平板電腦上使用論壇。
-
信任度分級系統:Discourse 的信任系統,能依用戶的使用情形,自動調整權限和等級,以確保只有值得信任的用戶才能夠進行某些操作。
-
客製化:Discourse 的外觀和功能,使用者可以自由調整,例如:外觀主題、顏色、字型、圖片等。
-
社交媒體功能:Discourse 具備多種社交媒體功能,例如標籤、私訊和活動提醒,方便用戶追蹤感興趣的話題和互動。
-
統計分析功能:Discourse 內建統計分析工具,讓論壇管理者可以瞭解用戶的行為和討論趨勢,並且根據這些數據進行適當的調整。
1-2. 應用場景
除了作為論壇軟體之外,Discourse 還可以用在許多場景,例如:
-
內部溝通:Discourse 可以用作企業內部溝通的工具,例如員工可以在論壇上分享想法、提出問題、討論工作流程等。
-
社群建設:Discourse 可以用來建立社群,例如開源項目的社群或是對某一特定領域感興趣的人群。使用 Discourse 可以幫助社群建立一個完整的討論平台,從而更好地促進交流和知識分享。
-
產品支援:許多公司使用 Discourse 作為產品支援軟體,讓客戶可以在論壇上提問、回答問題,從而快速解決問題。這種方法也可以幫助公司建立一個知識庫,讓其他人可以輕鬆找到相關問題的解決方案。
-
學習平台:一些教育機構或教育平台使用 Discourse 作為學習平台,學生可以在論壇上進行討論、提問和回答問題,從而更好地理解和學習課程內容。
-
協作工具: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 Plans 和 Digital 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。
-
執行 puttygen,點擊中間右側的 Generate 按鈕。
-
在視窗中間上方灰色空白區移動滑鼠,puttygen 會根據滑鼠軌跡產生
SSH-2 RSA key
值(預設,可依需求設定)。移動滑鼠期間,你會看到進度條,滿了就繼續下一步。 -
在
Key comment
輸入給自己看的說明,預設是 rsa-key-yyyymmnn。 -
在
Key passphrase
和Confirm passphrase
輸入你之後要在雲端伺服器使用的密碼,然後分別下載公鑰私鑰 Save public key 和 Save 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 登入雲端伺服器
-
左側選單
Session
:右側Host Name (or IP address)
輸入你剛剛安裝 Linux 的 IP(因為此時你的論壇網址可能還沒設定完成) -
左側選單
Connection
>SSH
>Auth
:右側點擊 Browse…選擇你剛剛下載的 private key(id_rsa.ppk,檔名是你剛剛下載時命名的,id_rsa 是預設值)
-
點擊下方 Open 即可連上 Linux 伺服器。
-
進入伺服器後,
login as:
填root
、Passphrase for key "rsa-key"
填入你之前步驟 4-1Key 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
上述指令說明(純參考,直接複製指令即可。不了解並不影響安裝):
結合使用
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
依序輸入以下指令:
sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers
上述指令說明:
切換為管理員身份(SHELL environment)
複製 Discourse Docker Image 到你雲端伺服器的這個路徑 /var/discourse
切換路徑到 /var/discourse
設定 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 tohttp://discourse.example.com
(port 80) also fails. -
域名已指向伺服器(成功):
Checking your domain name . . .
Connection todiscourse.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]:
你真正寄 email 的帳號。
-
SMTP password? [pa$$word]:
-
notification email address? [noreply@example.com]:
使用者看到的 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. 提供登入安全性
-
如果不是使用前面所提的 SSH 密鑰 putty 登入伺服器,請務必強制執行 強複雜度 root 密碼。
安裝 PAM 的 cracklib,提供額外的密碼檢查能力:
apt install libpam-cracklib
-
建議設定
fail2ban
,阻擋密碼輸入錯誤超過 3 次的 IP 位址 10 分鐘。- Ubuntu :
apt install fail2ban
- CentOS/RHEL :
sudo dnf install fail2ban
- Ubuntu :
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 論壇軟體 - 問答篇。