Portaler Zone 是一款為 Albion Online 打造的社群工具,其目的是共享社群間的地圖資訊。
註:事實上我也不知道這到底是啥,這次單純是因為有個人委託我去幫他建構這個開源專案。因為前前後後遇到的坑有點多,所以這邊做個筆記。說明上主要以自己理解為主,可能會有不正確的地方,還請各位玩家多多包涵。
架構分析
這是個標準的前後端分離專案,雖然所有的程式碼都存放在一個 Repository 底下,但是基本上被切得很乾淨。
值得一提的是,作者幾乎所有內容都是用 Typescript 寫的,這大大降低了在 Debug 時的困難度。
後端
後端一共有三個服務
- API: 用於提供 HTTP API,以 Express 建構
- Bin ETL: 用於解析 Albion Online 的相關資源
- Discord Bot: 用於與 Discord Server 溝通,方便在社群之間分享地圖
無論如何,作者為這三個後端服務都提供了符合開放容器標準(OCI)的 Image(更白話一點的說,Docker Image),基本上這三個服務架設並沒有什麼難度。
順帶一提,這個服務還另外需要 PostgreSQL 與 Redis,在 docker/docker-compose.yml
中有定義相關的資訊。
前端
前端共有兩個服務
比較麻煩的是,這兩個前端專案都沒有提供 Image,必須自行建構。
建置步驟
註:事實上,文件 其實寫得很清楚,基本上我這邊只提在 Raspberry Pi 上面構建時需要注意的事項。