Huawei UniVPN Client Docker Container with VNC/SOCKS Access
10K+
This project provides a Docker container for the Huawei UniVPN GUI client (version 10781.18.1.0512, released on May 12th, 2025), accessible via VNC or a web browser (noVNC). It also includes a SOCKS5 proxy (Dante) and an HTTP proxy (Tinyproxy) to route traffic from host applications through the container's VPN connection. The UniVPN application is configured to start automatically within the VNC session.
Disclaimer: This project is unofficial and not affiliated with or endorsed by Huawei. The Huawei UniVPN client software itself is proprietary to Huawei. While the client binary is included in this repository's ./bin directory for build convenience, you are responsible for complying with Huawei's terms of service and licensing agreements regarding its use. This container is provided for technical convenience, isolation, and remote access purposes only. The maintainers of this repository do not grant you any license to use the Huawei software.
| Field | Value |
|---|---|
| Release | 10781.18.1.0512 |
| Binary Location | Included in repository: ./bin/univpn-linux-64-10781.18.1.0512.zip |
| Base OS | Ubuntu 22.04 LTS |
| Access Method | VNC (Port 5901), Web Browser via noVNC (Port 6901) |
| Proxy | SOCKS5 (Dante) on Port 1080, HTTP (Tinyproxy) on Port 8888 |
1080 allowing host applications to use the container's VPN connection (respects container's routing table - split tunnel by default).8888 which chains to the SOCKS5 proxy, allowing host applications to use the container's VPN connection.NET_ADMIN) and TUN device access (/dev/net/tun) required by many VPN clients.docker-compose or docker compose).tun kernel module loaded on the host (sudo modprobe tun). Ensure /dev/net/tun exists.Clone the Repository:
git clone https://github.com/zx900930/docker-univpn.git
cd docker-univpn
Create .env File:
In the docker-univpn directory, create a file named .env to store your configuration secrets. Add the following lines, replacing the example values with your desired VNC password and the required MAC address:
# .env file
VNC_PASSWORD=YourStrongVncPassword123
SPOOF_MAC=00:1A:2B:3C:4D:5E
VNC_PASSWORD: Password to access the VNC/noVNC session. Choose a strong password.SPOOF_MAC: The specific MAC address required by your VPN server. Format: XX:XX:XX:XX:XX:XX.Start the Container:
docker-compose up -d
This will pull the image (if needed), create, and start the container in the background.
Connect to the GUI: You have two options:
localhost:5901 (or replace localhost with your Docker host's IP if connecting remotely).VNC_PASSWORD you set in the .env file when prompted.http://localhost:6901/vnc.html (or replace localhost with your Docker host's IP).VNC_PASSWORD you set in the .env file when prompted.Use the Proxies (Optional):
localhost (or 127.0.0.1)1080localhost (or 127.0.0.1)8888/usr/local/UniVPN/UniVPN) is launched automatically when the VNC session starts.cnem_vnic interface (created by UniVPN) before starting its service..env file (see Step 2 above).docker-compose.yml file if needed.docker-compose.yml to map a host directory to the client's configuration directory within the container (location depends on the client).
# Example volume mount in docker-compose.yml:
# volumes:
# - ./univpn_client_config:/home/vpnuser/UniVPN
docker-compose logs univpndocker ps), check port mappings in docker-compose.yml, verify firewall rules on the host.NET_ADMIN and /dev/net/tun access are correctly configured in docker-compose.yml.SPOOF_MAC in .env is correct.privileged: true in docker-compose.yml, but understand the security implications.docker exec -it <container_name> cat /var/log/sockd.log or supervisor logs /var/log/supervisor/danted_*.log.docker exec -it <container_name> cat /var/log/tinyproxy.log or supervisor logs /var/log/supervisor/tinyproxy_*.log.While using Docker Compose is recommended, you can build the image manually:
# Make sure you have the correct VNC password for the build arg
docker build --build-arg VNC_PASSWORD=YourSecurePassword123 . -t my-univpn-vnc:latest
You would then need a complex docker run command equivalent to the docker-compose.yml settings.
Contributions are welcome! Please feel free to submit issues and pull requests.
The Dockerfile and scripts in this repository are provided under the MIT License .
Important: This license applies only to the files created for this project (Dockerfile, scripts, documentation). It does not apply to the Huawei UniVPN client software located in the ./bin directory, which is governed by its own license agreement provided by Huawei. Your use of the included Huawei software is subject to your acceptance of Huawei's terms.
Content type
Image
Digest
sha256:6acd6ec21…
Size
326.2 MB
Last updated
about 1 month ago
docker pull triatk/univpn