penink·vpn
一款基於 Kotlin 與 Jetpack Compose 的 Android 自研 VPN 應用。透過 WebSocket TLS 隧道安全連接家庭網路,支援多節點管理與一鍵連線。伺服器端採用 Docker 容器與 Cloudflare Tunnel 部署,實現開機自動復活,適合個人家庭網路存取需求。
penink-vpn.pages.dev作 品 介 紹
名 稱 : 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