Dokploy

WG-Easy

WG-Easy is a simple and user-friendly WireGuard VPN server with a web interface for easy management.

WG-Easy logo

Configuration

volumes:
  etc_wireguard:

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy:15
    restart: unless-stopped
    environment:
      - WG_HOST=${WIREGUARD_HOST}
      - PASSWORD=${WIREGUARD_PASSWORD}
      - WG_PORT=51820
      - PORT=51821
      - WG_MTU=1280
      - WG_DEFAULT_DNS=1.1.1.1,8.8.8.8
      - WG_ALLOWED_IPS=0.0.0.0/0
      - WG_POST_UP=iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;
      - WG_POST_DOWN=iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT;
    volumes:
      - etc_wireguard:/etc/wireguard
      - /lib/modules:/lib/modules:ro
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
      - NET_RAW
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv6.conf.all.forwarding=1
      - net.ipv6.conf.default.forwarding=1
[variables]
main_domain = "${domain}"
wg_password = "${password:32}"

[config]
[[config.domains]]
serviceName = "wg-easy"
port = 51821
host = "${main_domain}"

[config.env]
WIREGUARD_HOST = "${main_domain}"
WIREGUARD_PASSWORD = "${wg_password}"

Base64

To import this template in Dokploy: create a Compose service → AdvancedBase64 import and paste the content below:

ewogICJjb21wb3NlIjogInZvbHVtZXM6XG4gIGV0Y193aXJlZ3VhcmQ6XG5cbnNlcnZpY2VzOlxuICB3Zy1lYXN5OlxuICAgIGltYWdlOiBnaGNyLmlvL3dnLWVhc3kvd2ctZWFzeToxNVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFdHX0hPU1Q9JHtXSVJFR1VBUkRfSE9TVH1cbiAgICAgIC0gUEFTU1dPUkQ9JHtXSVJFR1VBUkRfUEFTU1dPUkR9XG4gICAgICAtIFdHX1BPUlQ9NTE4MjBcbiAgICAgIC0gUE9SVD01MTgyMVxuICAgICAgLSBXR19NVFU9MTI4MFxuICAgICAgLSBXR19ERUZBVUxUX0ROUz0xLjEuMS4xLDguOC44LjhcbiAgICAgIC0gV0dfQUxMT1dFRF9JUFM9MC4wLjAuMC8wXG4gICAgICAtIFdHX1BPU1RfVVA9aXB0YWJsZXMgLXQgbmF0IC1BIFBPU1RST1VUSU5HIC1zIDEwLjguMC4wLzI0IC1vIGV0aDAgLWogTUFTUVVFUkFERTsgaXB0YWJsZXMgLUEgRk9SV0FSRCAtaSB3ZzAgLWogQUNDRVBUOyBpcHRhYmxlcyAtQSBGT1JXQVJEIC1vIHdnMCAtaiBBQ0NFUFQ7XG4gICAgICAtIFdHX1BPU1RfRE9XTj1pcHRhYmxlcyAtdCBuYXQgLUQgUE9TVFJPVVRJTkcgLXMgMTAuOC4wLjAvMjQgLW8gZXRoMCAtaiBNQVNRVUVSQURFOyBpcHRhYmxlcyAtRCBGT1JXQVJEIC1pIHdnMCAtaiBBQ0NFUFQ7IGlwdGFibGVzIC1EIEZPUldBUkQgLW8gd2cwIC1qIEFDQ0VQVDtcbiAgICB2b2x1bWVzOlxuICAgICAgLSBldGNfd2lyZWd1YXJkOi9ldGMvd2lyZWd1YXJkXG4gICAgICAtIC9saWIvbW9kdWxlczovbGliL21vZHVsZXM6cm9cbiAgICBwb3J0czpcbiAgICAgIC0gXCI1MTgyMDo1MTgyMC91ZHBcIlxuICAgICAgLSBcIjUxODIxOjUxODIxL3RjcFwiXG4gICAgY2FwX2FkZDpcbiAgICAgIC0gTkVUX0FETUlOXG4gICAgICAtIFNZU19NT0RVTEVcbiAgICAgIC0gTkVUX1JBV1xuICAgIHN5c2N0bHM6XG4gICAgICAtIG5ldC5pcHY0LmlwX2ZvcndhcmQ9MVxuICAgICAgLSBuZXQuaXB2NC5jb25mLmFsbC5zcmNfdmFsaWRfbWFyaz0xXG4gICAgICAtIG5ldC5pcHY2LmNvbmYuYWxsLmRpc2FibGVfaXB2Nj0wXG4gICAgICAtIG5ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MVxuICAgICAgLSBuZXQuaXB2Ni5jb25mLmRlZmF1bHQuZm9yd2FyZGluZz0xXG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxud2dfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcblxuW2NvbmZpZ11cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcIndnLWVhc3lcIlxucG9ydCA9IDUxODIxXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiXG5cbltjb25maWcuZW52XVxuV0lSRUdVQVJEX0hPU1QgPSBcIiR7bWFpbl9kb21haW59XCJcbldJUkVHVUFSRF9QQVNTV09SRCA9IFwiJHt3Z19wYXNzd29yZH1cIlxuIgp9

Tags

vpn, wireguard, networking


Version: 15

On this page