WG-Easy
WG-Easy is a simple and user-friendly WireGuard VPN server with a web interface for easy management.
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 → Advanced → Base64 import and paste the content below:
ewogICJjb21wb3NlIjogInZvbHVtZXM6XG4gIGV0Y193aXJlZ3VhcmQ6XG5cbnNlcnZpY2VzOlxuICB3Zy1lYXN5OlxuICAgIGltYWdlOiBnaGNyLmlvL3dnLWVhc3kvd2ctZWFzeToxNVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIFdHX0hPU1Q9JHtXSVJFR1VBUkRfSE9TVH1cbiAgICAgIC0gUEFTU1dPUkQ9JHtXSVJFR1VBUkRfUEFTU1dPUkR9XG4gICAgICAtIFdHX1BPUlQ9NTE4MjBcbiAgICAgIC0gUE9SVD01MTgyMVxuICAgICAgLSBXR19NVFU9MTI4MFxuICAgICAgLSBXR19ERUZBVUxUX0ROUz0xLjEuMS4xLDguOC44LjhcbiAgICAgIC0gV0dfQUxMT1dFRF9JUFM9MC4wLjAuMC8wXG4gICAgICAtIFdHX1BPU1RfVVA9aXB0YWJsZXMgLXQgbmF0IC1BIFBPU1RST1VUSU5HIC1zIDEwLjguMC4wLzI0IC1vIGV0aDAgLWogTUFTUVVFUkFERTsgaXB0YWJsZXMgLUEgRk9SV0FSRCAtaSB3ZzAgLWogQUNDRVBUOyBpcHRhYmxlcyAtQSBGT1JXQVJEIC1vIHdnMCAtaiBBQ0NFUFQ7XG4gICAgICAtIFdHX1BPU1RfRE9XTj1pcHRhYmxlcyAtdCBuYXQgLUQgUE9TVFJPVVRJTkcgLXMgMTAuOC4wLjAvMjQgLW8gZXRoMCAtaiBNQVNRVUVSQURFOyBpcHRhYmxlcyAtRCBGT1JXQVJEIC1pIHdnMCAtaiBBQ0NFUFQ7IGlwdGFibGVzIC1EIEZPUldBUkQgLW8gd2cwIC1qIEFDQ0VQVDtcbiAgICB2b2x1bWVzOlxuICAgICAgLSBldGNfd2lyZWd1YXJkOi9ldGMvd2lyZWd1YXJkXG4gICAgICAtIC9saWIvbW9kdWxlczovbGliL21vZHVsZXM6cm9cbiAgICBwb3J0czpcbiAgICAgIC0gXCI1MTgyMDo1MTgyMC91ZHBcIlxuICAgICAgLSBcIjUxODIxOjUxODIxL3RjcFwiXG4gICAgY2FwX2FkZDpcbiAgICAgIC0gTkVUX0FETUlOXG4gICAgICAtIFNZU19NT0RVTEVcbiAgICAgIC0gTkVUX1JBV1xuICAgIHN5c2N0bHM6XG4gICAgICAtIG5ldC5pcHY0LmlwX2ZvcndhcmQ9MVxuICAgICAgLSBuZXQuaXB2NC5jb25mLmFsbC5zcmNfdmFsaWRfbWFyaz0xXG4gICAgICAtIG5ldC5pcHY2LmNvbmYuYWxsLmRpc2FibGVfaXB2Nj0wXG4gICAgICAtIG5ldC5pcHY2LmNvbmYuYWxsLmZvcndhcmRpbmc9MVxuICAgICAgLSBuZXQuaXB2Ni5jb25mLmRlZmF1bHQuZm9yd2FyZGluZz0xXG4iLAogICJjb25maWciOiAiW3ZhcmlhYmxlc11cbm1haW5fZG9tYWluID0gXCIke2RvbWFpbn1cIlxud2dfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcblxuW2NvbmZpZ11cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcIndnLWVhc3lcIlxucG9ydCA9IDUxODIxXG5ob3N0ID0gXCIke21haW5fZG9tYWlufVwiXG5cbltjb25maWcuZW52XVxuV0lSRUdVQVJEX0hPU1QgPSBcIiR7bWFpbl9kb21haW59XCJcbldJUkVHVUFSRF9QQVNTV09SRCA9IFwiJHt3Z19wYXNzd29yZH1cIlxuIgp9Links
Tags
vpn, wireguard, networking
Version: 15