跳轉至

WireGuard Easy

概述

WireGuard Easy(簡稱 wg-easy)係一套以網頁介面為基礎嘅 WireGuard 管理面板,由開發者 WeeJeWel 維護。佢將原本需要手動編輯複雜設定檔同執行 wg 命令嘅流程,簡化為一個易用嘅 Web UI。管理者可以透過瀏覽器建立用戶端、產生 QR Code、開關已連接嘅裝置,亦可以直接查看實時流量與握手狀態。wg-easy 本身以 Docker 容器方式提供,鏡像為 weejewel/wg-easy,適合部署於自建伺服器、Oracle Cloud、Vultr 等雲平台,同時亦係搭配 docker 環境快速建立 VPN 嘅首選方案。

架構

wg-easy 喺運作時依賴兩大核心元件:Linux 核心內建嘅 WireGuard 模組,以及一個 Node.js 編寫嘅管理服務。容器內部包含 wg 工具、iptablesqrencode 等相依套件,透過 --cap-add=NET_ADMIN 攞到網絡管理權限,再配合 volume 持久化 WireGuard 嘅設定檔。預設佢會使用 host network 模式,或者將以下連接埠暴露到主機:

  • UDP 51820:WireGuard 對外連線嘅隧道連接埠。
  • TCP 51821:Web 管理介面。可以透過 PORT 環境變數改成其他連接埠。

WG_HOST 環境變數就係伺服器對外嘅 IP 或域名,所有用戶端嘅設定檔會以此為 Endpoint。wg-easy 亦支援設定 Web 介面登入密碼,只需提供 PASSWORD 環境變數即可。如果係喺 oracle-cloud 等平台部署,需要記住喺 Security List / 網絡防火牆開放對應嘅 UDP 與 TCP 連接埠。

部署

要快速起一個 wg-easy 實例,典型嘅 docker run 指令如下:

docker run -d \
  --name=wg-easy \
  --cap-add=NET_ADMIN \
  --sysctl net.ipv4.ip_forward=1 \
  --sysctl net.ipv4.conf.all.src_valid_mark=1 \
  -e WG_HOST=vpn.example.com \
  -e PASSWORD='your-admin-password' \
  -v ~/.wg-easy:/etc/wireguard \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --restart=unless-stopped \
  weejewel/wg-easy

如果偏好使用 docker-compose,可撰寫類似服務段,並用 environment 定義 WG_HOSTPASSWORDPORTWG_DEFAULT_DNS 等選項。建議將設定檔目錄掛載到主機,例如 /etc/wireguard,確保重啟容器後用戶端資料仍然存在。由於容器需要修改 iptables 做 NAT,亦要保留 NET_ADMIN capability。

配置

啟動後,瀏覽器進入 http://伺服器IP:51821 即可見到管理介面。第一次登入需要輸入上方設定嘅 PASSWORD。介面會顯示目前 WireGuard 隧道嘅狀態,包括總流量、上下行速率,以及各用戶端嘅最近握手時間。建立新用戶端好簡單:輸入一個名稱(例如 Alice-MacBook),撳「Create」就會自動產生一對金鑰、一個可下載嘅 .conf 設定檔同一個 QR Code。用戶端可以用 WireGuard 官方 App 掃描 QR Code 匯入,或者直接貼上設定檔內容。

進階配置可以透過環境變數控制,例如:

  • WG_DEFAULT_DNS:設定用戶端預設 DNS,預設為 1.1.1.1
  • WG_MTU:調整隧道 MTU,對某些網絡環境有助減少封包分片。
  • WG_PORT:WireGuard UDP 埠號,預設 51820
  • WG_PERSISTENT_KEEPALIVE:設定保活間隔,解決 NAT 後連接唔穩定嘅問題。

所有用戶端資料都儲存喺 /etc/wireguard/wg0.conf 內。如果希望備份,直接複製呢個檔案就足夠。

維運與監控

日常維運可以用 docker logs -f wg-easy 查看容器輸出,排查用戶端連接異常。如果想直接檢查 WireGuard 狀態,可以進入容器執行:

docker exec -it wg-easy wg show

呢個命令會列出所有對端(peers)嘅公鑰、allowed IPs、傳輸流量同最近握手時間。若發現某個用戶端一直冇握手,可以喺管理介面將佢暫停或刪除。

需要留意嘅係,wg-easy 容器本身唔提供日誌輪替,長期運行可能產生大量存取記錄。建議喺 Docker daemon 配置 log rotation,或者定期重啟容器。版本升級方面,由於 wg-easy 更新速度唔算慢,升級前先備份整份 /etc/wireguard 目錄,然後拉取最新鏡像重新建立容器,舊有嘅用戶端設定會保留。

常見問題

Q1:客戶端可以連接,但冇辦法上網?
多數係因為伺服器未開啟 IPv4 forwarding,或者 iptables 規則未正確載入。請確認 docker run 有加入 --sysctl net.ipv4.ip_forward=1,同時喺雲廠商安全群組開放 UDP 51820。另外要留意,wg-easy 預設會透過 iptables 做 SNAT,如果主機本身有其他防火牆管理工具(例如 UFW),可能與容器內規則衝突。

Q2:Web 介面開唔到?
檢查 TCP 51821 有冇被防火牆封鎖。若網站有用 cloudflare-tunnel 做內網穿透,記得將 cloudflared 指向 http://localhost:51821,同時避免將 Web 介面直接暴露到公網。強烈建議喺管理面板前面加一層身份驗證,例如 Authelia 或者 Cloudflare Access。

Q3:用戶端連線後速度好慢?
WireGuard 本身效能頗高,速度樽頸通常喺伺服器網絡頻寬或 CPU。另外可試下設置 WG_MTU=1400,並確認伺服器嘅 UDP 封包冇被 ISP 限制。如果透過 oracle-cloud 嘅 Always Free 實例部署,要留意其公共流量預算。

Q4:唔小心忘記咗管理密碼?
喺 Docker 執行階段更改 PASSWORD 環境變數後重新建立容器即可。若使用 Docker Compose,直接編輯 YAML 後執行 docker compose up -d

相關鏈接

來源

自動生成(2026-08-19 容器覆蓋率補完第二批)