══════════════════════════════════════════════════════════════
    作 品 介 紹
    名 稱 ： penink·vpn ・ Android VPN App
    類 型 ： Android 應用程式（Kotlin / Jetpack Compose）
    線 上 ： https://penink-vpn.pages.dev
    技 術 ： Kotlin / Jetpack Compose / Room / WebSocket(TLS)
    部 署 ： Cloudflare Pages 下載站 ＋ Docker 伺服器（Colima）
══════════════════════════════════════════════════════════════


一、這是什麼
──────────────────────────────────────────────────────────────
一款 Android VPN App，透過「WebSocket(TLS) 隧道」安全連回
自己家裡的網路。手機安裝 App 後，填入伺服器節點資訊，
按一下大圓按鈕就能一鍵連線，人不在家也能跟在家一樣
存取家中的裝置與服務。

  核心特色
  ＊ 純自建隧道：不走第三方 VPN 服務，通道與伺服器完全自管
  ＊ 一鍵連線：主畫面大圓按鈕，首次允許「VPN 連線」後即通
  ＊ 節點管理：新增／保存多組伺服器節點（位址、連接埠、密鑰）
  ＊ TLS 加密：連線全程加密，密鑰為敏感資料、不外傳
  ＊ 伺服器一鍵復活：Mac 開機自動拉起 Docker 容器＋隧道


二、製作過程
──────────────────────────────────────────────────────────────
開發一個「自己家的 VPN」：Android 端用 Kotlin 與 Jetpack
Compose 寫 App 介面（含 Room 保存節點設定）；伺服器端把
Node.js WebSocket(TLS) 伺服器跑在 Docker 容器（Colima
Linux VM）裡，再用 Cloudflare Tunnel 反向代理曝光、由
開機自動化接管，Mac 重開機後一切自動復活。

  技術筆記
  ＊ Android App 完整開源（Android 8.0+，需允許安裝未知來源）
  ＊ WebSocket(TLS) 443 埠，避免被牆／被攔
  ＊ deploy.sh 一條指令：建 APK → 上傳網站 → 部署 → 推 GitHub
  ＊ enable-ci.sh 可選用 GitHub Actions 自動建置 CI


三、使用教學
──────────────────────────────────────────────────────────────
① 下載 App
   從 https://penink-vpn.pages.dev 下載 penink-vpn-v3.apk，
   傳到手機安裝（Android 8.0+，需允許「安裝未知來源」）。

② 設定節點
   開啟 App → 節點管理 → 新增節點，填入名稱、位址(Host)、
   連接埠（通常 443）、密鑰，並啟用 TLS。

③ 一鍵連線
   回主畫面按下大圓按鈕 → 允許「VPN 連線」系統視窗 →
   顯示「已連線」即完成。


四、注意事項
──────────────────────────────────────────────────────────────
  ＊ 位址與密鑰需向伺服器管理員索取，屬敏感資料
  ＊ 密鑰請勿轉傳給不相干的人
  ＊ 除家內自用外，使用時請遵守當地法規


五、保存資訊
──────────────────────────────────────────────────────────────
本資料夾即專案原始碼（android/ App 專案、release/ APK、
deploy.sh 部署腳本），可直接在本機建置：

  ./deploy.sh      建置 APK → 上傳網站 → 部署 → 推 GitHub
  ./enable-ci.sh   啟用 GitHub Actions 自動建置 CI

下載網站：  https://penink-vpn.pages.dev
原始碼：    https://github.com/penink-WH/penink-vpn