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
- First, Git will be installed so you can copy my repository.
- Docker — latest version.
- Docker Compose — latest version.
- WG-Easy — interactive password entry mode for the web interface.
- AdGuard Home — interactive user and password creation mode (can leave defaults).
- Unbound — everything stock.
- apache2-utils — needed to generate hash passwords.
- ssh.sh — script to change the SSH port.
- ufw.sh — script to install the UFW firewall.
- 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
- Closing external access to the WG-Easy panel manually
- Manual install of UFW-Docker
- How to change the WireGuard connection port from the standard 51820
Description of DWG tools in /tools/
- dwg/agh.sh at main · DigneZzZ/dwg · GitHub — script to change the password in AGH.
- dwg/docker.sh at main · DigneZzZ/dwg · GitHub — script for selective installation of only Docker.
- dwg/nano.sh at main · DigneZzZ/dwg · GitHub — script to install the nano editor.
- dwg/ssh.sh at main · DigneZzZ/dwg · GitHub — script to change SSH ports.
- dwg/swap.sh at main · DigneZzZ/dwg · GitHub — script to add swap file with optimal calculation based on your system characteristics.
- dwg/ufw-docker.sh at main · DigneZzZ/dwg · GitHub — installing UFW-Docker with closing external access to ports (can be installed only if UFW is already in place).
- dwg/ufw.sh at main · DigneZzZ/dwg · GitHub — installing UFW Firewall.
- dwg/wg-ru.sh at main · DigneZzZ/dwg · GitHub — Russian localization and modernization of the WG-Easy user page.
The article was first published on 09.12.2022 on openode.xyz; migrated and updated on 04.08.2026.


