WireGuard Easy(wg-easy)でVPN環境を構築してみました。
Dockerであることと設定に必要な項目が少ないことから構築で迷うことはありません。
細かな制御をしたい場合は設定ファイルを直接編集するようなことが必要かもしれません。

wg-easy/wg-easy

The easiest way to run WireGuard VPN + Web-based Admin UI.

環境

  • Raspberry Pi 4B
  • Ubuntu 24.10 (arm64)
  • wireguard 1.0.20210914
  • docker 2.0.4
  • Portainer Community Edition 2.27.3 LTS
  • WireGuard Easy (wg-easy) v14.0.0
  • v6プラス回線

構築

v6プラス回線の調査

  1. 公開IPv4アドレスと公開IPv6アドレスを確認
    https://test-ipv6.com/
  2. 公開IPv6アドレスから公開可能なポート番号を確認
    http://ipv4.web.fc2.com/map-e.html
  3. 公開ポート番号を決定
    例えば60000/udp

    wireguardの使用プロトコルはudpです。

  4. wireguardを構築するサーバのローカルIPアドレスを確認
    ip a
    例えば192.168.11.24
  5. ルータでポートフォワード設定
    インターネットからの60000/udpアクセスを192.168.11.24の60000/udpに転送

    同じポート番号にする必要があります。

Docker

  1. インストール
    https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
    $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
  2. ユーザの設定
    sudo usermod -aG docker $USER
    exit

Portainer

  1. デプロイ
    https://docs.portainer.io/start/install-ce/server/docker/linux#deployment
    docker run -d \
    -p 8000:8000 \
    -p 9443:9443 \
    --name portainer \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer-ce:lts
  2. ログイン
    https://<ローカルIP アドレス>:9443

wg-easy

  1. オプションとデフォルト値の確認
    https://github.com/wg-easy/wg-easy/tree/production#user-content-options
  2. デプロイ
    docker run -d \
    --name=wg-easy \
    -e WG_HOST=<公開IPv4アドレス> \
    -e PORT=51821 \
    -e WG_PORT=<公開ポート番号> \
    -v ~/.wg-easy:/etc/wireguard \
    -p <公開ポート番号>:<公開ポート番号>/udp \
    -p 51821:51821/tcp \
    --cap-add=NET_ADMIN \
    --cap-add=SYS_MODULE \
    --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
    --sysctl="net.ipv4.ip_forward=1" \
    --restart unless-stopped \
    ghcr.io/wg-easy/wg-easy

    成功するとPortainer画面でコンテナの稼働状況を確認できる

  3. アクセス確認
    https://<ローカルIP アドレス>:51821

クライアントの追加

  1. wg-easyの画面で+ New

    10.8.0.0/24のアドレスが割り振られる

クライアント端末の設定

Androidの場合

  1. wireguardアプリをインストール
  2. wireguardアプリで+を押下
  3. QRコードをスキャンを選択
  4. wg-easy画面でQRコードアイコンをクリック後、画像をスキャン