Self-contained WireGuard management service with a web UI and GraphQL API written in pure Go.
- Ability to import existing wireguard configurations
- Web UI - https://github.com/desislavsd/wireguard-manager
- Multiple wireguard interfaces
- Simple multi-user authentication support
- Portable - No external dependencies (one single binary)
- Configures wireguard by directly communicating with kernel module
- Flexible deployment - binary and oci container
Compile from source or download a release from Releases page
# Copy default .env.dist as .env
cp .env.dist .env
# Generate random jwt secret
sed -i "s|WG_UI_JWT_SECRET=Any_secret_base64_value_here|WG_UI_JWT_SECRET=$(head -c 128 </dev/urandom | base64 -w 0 -)|g" .env
# Start wg-ui
env $(cat .env | xargs) ./wg-ui
sudo dpkg -i wg-ui_*_linux_amd64.deb
sudo dpkg -i wg-ui_*_linux_arm64.deb
sudo pacman -U --noconfirm wg-ui_*_linux_amd64.pkg.tar.zst
sudo pacman -U --noconfirm wg-ui_*_linux_arm64.pkg.tar.zst
# Download the docker-compose file
wget https://raw.githubusercontent.com/UnAfraid/wg-ui/master/docker-compose.yaml
# Download the default .env file
wget -O .env https://raw.githubusercontent.com/UnAfraid/wg-ui/master/.env.dist
# Generate random jwt secret
sed -i "s|WG_UI_JWT_SECRET=Any_secret_base64_value_here|WG_UI_JWT_SECRET=$(head -c 128 </dev/urandom | base64 -w 0 -)|g" .env
# Modify .env
nano .env
# Start the container
docker-compose up -d