這不是一篇普通的安裝教學,而是一個「碼農爸」為了追求極致,從 Eclipse 開發環境搭建、源碼修改,到最終在 NAS 上實現跨平台打包部署的血淚實戰。
🛠 一、 開發環境的拓荒:Eclipse 與 Gradle
一切的起點,是想在 Mac 上建立一個可以修改 Halo 源碼的環境。
基礎搭建:安裝 Java 21 與 Eclipse。我們遇到了專案結構的挑戰,Halo 並非 Maven 專案,而是 Gradle。
關鍵修正:為了解決繁體語系的不完整,我們深入
SignUpData.java調整邏輯,並手動補齊了zh-TW.json與messages_zh_TW.properties。編譯挑戰:學會使用
./gradlew clean build -x test跳過冗長的測試,直接取得核心的.jar執行檔。
🐳 二、 容器化的進擊:Docker Desktop 與 Buildx
當程式改好了,如何讓它跑在 Synology DS716+ 上?
架構陷阱:我的 Mac 是 Intel CPU,雖然與 NAS 架構一致,但為了保險與未來的遷移性,我們學會了使用
docker buildx。Dockerfile 實戰:透過多階段建置(Multi-stage build),將 Gradle 產出的 JAR 檔包裝成專屬的 Image
my-halo:v1。映像檔搬運:利用
docker save導出.tar,再透過scp傳送到 NAS,用docker load完成匯入。
💥 三、 重生之路:徹底清空與初始化
部署過程中,我們遇到了最棘手的問題:密碼失效與資料庫鎖死。
暴力美學:在只有一篇測試文章的情況下,我果斷選擇「砍掉重練」。
清理指令:
Bash
sudo docker compose down sudo rm -rf db logs indices # 徹底清除舊資料的靈魂重新出發:手動建立
mkdir db並賦予777權限,看著8090埠跳出「初始化歡迎畫面」的那一刻,一切辛苦都值得了。
⚙️ 四、 最後的調校:URL 與主題設定
重生後的前台空白,是最後的魔王。
網址校正:發現
HALO_EXTERNAL_URL設定錯誤,導致 CSS 抓不到。我們直接修改compose.yaml強制指定http://192.168.1.253:8090/。主題初始化:解決了
Theme setting was not found的警告。透過手動儲存一次主題設定,成功讓資料庫與硬碟檔案同步。
💡 結語:碼農的精神
這段過程教會我一件事:部署不只是執行指令,而是理解程式、環境與資料之間的關係。 當我現在看到「哎又不落課」首頁美美的畫面,那種親手編譯出來的成就感,是直接安裝官方版本無法比擬的。