DWG UI: Docker build of WireGuard + AdGuard Home + WG-Easy — install VPN with a single script

:warning: Archived article. DWG builds and accompanying scripts have not been updated for a long time and require a serious update. The material is saved for historical purposes.

DWG UI — this is a ready Docker build for deploying your own VPN server: WireGuard with a convenient web interface WG-Easy, AdGuard Home ad blocker, and a cached DNS server Unbound. In this article I will explain what is included in the build and show how to install it on a clean server with a single command.

Discussion of DWG » | DWG-CLI » | DWG-UI » | DWG-DARK » | DWG [multi] »


The information is for informational purposes. Please do not violate the laws of your country.

What’s included in the build

The DWG-UI build includes:

  • Web interface for managing WireGuard clients — WG-Easy.
  • Container with Unbound — provides your own caching DNS server with privacy-focused options.
  • Container with AdGuard Home (a more modern alternative to Pi-hole) — used to block ads and analytic trackers, as well as to edit the list of DNS servers that Unbound queries. Has a very useful parallel DNS query feature not present in Pi-hole.
  • Container with WireGuard — used to run the server-side WireGuard VPN.

Main repositories with updates on GitHub

GitHub - DigneZzZ/dwg: dwg-universal

GitHub - DigneZzZ/dwg-ui: Combination Wireguard + Adguard Home + Unbound (DoH include)

Requirements and server choice

Requirement: a clean empty server.

First of all, we need to rent a good fast server. Take the one that best fits your speed, and get a 15% bonus on top-ups (if you top up within the first 24 hours after registration): https://aeza.net/?ref=377137

You can measure speeds here: Aéza (aeza.net)

Supported operating systems (where it has been tested): Ubuntu 20.04, 22.04, 23.10; Debian 11, 12; CentOS 8, 9.

Installation

The script installs everything automatically. All explanations about how the script works are inside it, in the comments.

Installation command:

apt update && apt install curl sudo git -y && curl -Of https://raw.githubusercontent.com/DigneZzZ/dwg-ui/main/setup.sh && chmod +x setup.sh && ./setup.sh

What will be installed

  1. First, Git will be installed so you can copy my repository.
  2. Docker — latest version.
  3. Docker Compose — latest version.
  4. WG-Easy — interactive password entry mode for the web interface.
  5. AdGuard Home — interactive user and password creation mode (can leave defaults).
  6. Unbound — everything stock.
  7. apache2-utils — needed to generate hash passwords.
  8. ssh.sh — script to change the SSH port.
  9. ufw.sh — script to install the UFW firewall.
  10. The script will remind you to install ufw-docker and will close external access! WARNING! Run only after you have created a client for yourself in WireGuard!

Web interfaces

Screenshots of the web interfaces:

Web interface addresses:

WG-Easy web-ui:
yo.ur.ip.xx:51821 # replace yo.ur.ip.xx with your server IP, enter the password you set during installation

Access to web-ui from WG network:
http://10.2.0.3:51821

AdGuard HOME:
http://10.2.0.100/
Login: admin
Password: admin

# Script to change AGH password
bash <(wget -qO- https://raw.githubusercontent.com/DigneZzZ/dwg/main/change.sh)

Useful links

Description of DWG tools in /tools/


The article was first published on 09.12.2022 on openode.xyz; migrated and updated on 04.08.2026.