Lab

實驗室

這裡是實際跑在我自己機器上的實驗與服務,不是規劃書。有些對外可以直接開,有些只有我自己連得上;狀態一律照現況寫,還沒上線的就寫還沒上線。

系統關聯圖

這張圖是從網域設定反推出來的:每一個對外的主機名都先經過 Cloudflare,才落到我機器上的某一個服務,沒有任何服務直接對外開埠。實線代表現在就在運行的路徑,虛線代表已經決定要做、但還沒開通的路徑。

系統關聯圖 從訪客到原始碼的五層系統關聯圖,共 17 個節點、17 條連線。每一個公開主機名都先經過 Cloudflare,再落到我自己機器上的一個服務;實線是已在運行的路徑,虛線是尚未開通的路徑。 訪客Cloudflare公開網域本機服務原始碼 訪客 Cloudflare Tunnel · Access · DNS boyanspace.com 正式站 www.boyanspace.com 301 → 主網域 staging.boyanspace.com Access 保護 finance.boyanspace.com 尚未對外 scan.boyanspace.com 尚未開通 map.boyanspace.com 尚未開通 api.boyanspace.com 保留 status.boyanspace.com 保留 作品集靜態站 測試版 Personalized WorldMonitor kepler.gl 分析工具 repo 掃描器 gitleaks + trivy boyanspace-portfolio private WorldMonitor fork 尚未建立

圖比手機螢幕寬,可以在框線內左右滑動。

Legend

  • 實線:已在運行
  • 灰色虛線:規劃中
  • 琥珀色虛線:尚未開通
  • 實線外框:運行中
  • 虛線外框:規劃中,尚未建立
  • 琥珀色虛線外框:尚未對外,前置條件未完成
  • 點線外框:保留名稱,這一階段不做

以下是同一張圖的文字版本,依層級列出每個節點的狀態與它連出去的目標。

  • 第 1 層:訪客
    • 訪客,狀態:運行中。連到 Cloudflare(已在運行)。
  • 第 2 層:Cloudflare
    • Cloudflare(Tunnel · Access · DNS),狀態:運行中。連到 boyanspace.com(已在運行)、www.boyanspace.com(規劃中)、staging.boyanspace.com(規劃中)、finance.boyanspace.com(尚未開通)、scan.boyanspace.com(尚未開通)、map.boyanspace.com(尚未開通)、api.boyanspace.com(規劃中)、status.boyanspace.com(規劃中)。
  • 第 3 層:公開網域
    • boyanspace.com(正式站),狀態:運行中。連到作品集靜態站(已在運行)。
    • www.boyanspace.com(301 → 主網域),狀態:規劃中,尚未建立。沒有連出去的線。
    • staging.boyanspace.com(Access 保護),狀態:規劃中,尚未建立。連到測試版(規劃中)。
    • finance.boyanspace.com(尚未對外),狀態:尚未對外,前置條件未完成。連到 Personalized WorldMonitor(尚未開通)。
    • scan.boyanspace.com(尚未開通),狀態:尚未對外,前置條件未完成。連到 repo 掃描器(尚未開通)。
    • map.boyanspace.com(尚未開通),狀態:尚未對外,前置條件未完成。連到 kepler.gl(尚未開通)。
    • api.boyanspace.com(保留),狀態:保留名稱,這一階段不做。沒有連出去的線。
    • status.boyanspace.com(保留),狀態:保留名稱,這一階段不做。沒有連出去的線。
  • 第 4 層:本機服務
    • 作品集靜態站,狀態:運行中。連到 boyanspace-portfolio(已在運行)。
    • 測試版,狀態:規劃中,尚未建立。連到 boyanspace-portfolio(已在運行)。
    • Personalized WorldMonitor,狀態:尚未對外,前置條件未完成。連到 WorldMonitor fork(規劃中)。
    • kepler.gl(分析工具),狀態:尚未對外,前置條件未完成。沒有連出去的線。
    • repo 掃描器(gitleaks + trivy),狀態:尚未對外,前置條件未完成。沒有連出去的線。
  • 第 5 層:原始碼
    • boyanspace-portfolio(private),狀態:運行中。沒有連出去的線。
    • WorldMonitor fork(尚未建立),狀態:規劃中,尚未建立。沒有連出去的線。

運行中的服務

每個服務都登記在專案的服務清單裡,這裡顯示的是可以公開的部分。

  • Boyan Space(正式站)

    LIVE

    個人數位空間,Astro 靜態站

    Access
    任何人可存取
    Tech
    • Astro
    • TypeScript
    • Nginx
    • Docker
    • Cloudflare Tunnel

    這個網站本身。建置產物是純靜態檔案,由本機的 Nginx 容器提供,經 Cloudflare Tunnel 對外,沒有任何服務直接對外監聽。原始碼 repo 目前是私有的,所以這裡沒有連結。

  • Boyan Space(測試站)

    IN DEVELOPMENT

    作品集正式上線前的驗證環境

    Access
    需登入授權(Cloudflare Access)
    Tech
    • Astro
    • Nginx
    • Docker
    • Cloudflare Access

    還沒架好。本機容器可以用部署腳本起來,但 staging.boyanspace.com 這個子網域、tunnel 與 Cloudflare Access 都還沒建立,所以目前沒有對外網址。開通後只允許我自己的帳號登入,並且一律 noindex。

  • repo 掃描器

    LOCAL ONLY

    掃 git repo 的洩漏密鑰、依賴漏洞與 SBOM

    Access
    本機限定,未對外
    Tech
    • gitleaks
    • trivy
    • Node

    給一個 repo 網址,它會查 git 歷史裡的密鑰(含已經被後續 commit 刪掉的)、依賴套件的已知漏洞,並產出一份 SBOM。報告裡的密鑰一律遮蔽,只留規則名稱與位置。掃描器本身有回歸測試:餵它已知有問題的樣本,斷言它真的會叫——一個從沒發現過問題的掃描器,跟一個壞掉的掃描器,輸出長得一樣。目前只在本機。

  • kepler.gl(自架)

    LOCAL ONLY

    地理空間資料的視覺化探索工具

    Access
    本機限定,未對外
    Tech
    • kepler.gl
    • deck.gl
    • MapLibre
    • Docker

    上游是 MIT 授權的開源專案,我用它官方的 Dockerfile 釘在特定 commit 自己 build,不用來路不明的第三方 image。底圖走 CARTO,不需要任何 Mapbox 金鑰。資料全部留在瀏覽器裡,我的機器不保存任何上傳的檔案。目前只在本機,對外的授權存取入口還沒開通。

  • Personalized WorldMonitor

    LOCAL ONLY

    個人化全球金融、新聞與市場監控介面

    Access
    本機限定,未對外
    Tech
    • TypeScript
    • Vite

    跑在我自己的機器上,由 systemd 監管,開機會自動起來。它是公開專案 koala73/worldmonitor 的 fork(AGPL-3.0-only),個人化修改還沒推上任何 remote,而且目前的 production build 會關掉那些修改。對外的授權存取入口正在設定中,設好之後只有我自己能登入,不是公開展示。

Registry

新增服務的規則

任何新服務上線前,都必須先在專案倉庫的服務清單裡登記:原始碼位置、對外主機名、存取模式、健康檢查、日誌查看方式,以及回滾步驟。欄位空著要寫明原因,不能省略。沒有登記完成就不上線 —— 這條規則的目的是讓半年後的我還知道每個東西怎麼救。