back to home

IAmStoxe / wirehole

WireHole is a combination of WireGuard, Pi-hole, and Unbound in a docker-compose project with the intent of enabling users to quickly and easily create a personally managed full or split-tunnel WireGuard VPN with ad blocking capabilities thanks to Pi-hole, and DNS caching, additional privacy options, and upstream providers via Unbound.

4,955 stars
344 forks
59 issues

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing IAmStoxe/wirehole in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/IAmStoxe/wirehole)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

What is this? WireHole is a docker-compose project that combines WireGuard, PiHole, and Unbound to create a full or split-tunnel VPN that is easy to deploy and manage. This setup allows for a VPN with ad-blocking via PiHole and enhanced DNS privacy and caching through Unbound. Author 👤 **Devin Stokes** • Twitter: @DevinStokes • GitHub: @IAmStoxe 🤝 Contributing Contributions, issues, and feature requests are welcome! Feel free to check the issues page. Show your support Give a ⭐ if this project helped you! --- Supported Architectures The image supports multiple architectures such as , , and . The image automatically selects the correct image for your architecture. **The architectures supported by this image are:** | Architecture | Tag | | ------------ | -------------- | | x86-64 | amd64-latest | | arm64 | arm64v8-latest | | armhf | arm32v7-latest | --- Quickstart To begin using WireHole, clone the repository and start the containers: Remember to set secure passwords for , , and in your file. --- Environment Configuration Details The file contains a series of environment variables that are essential for configuring the WireHole services within the Docker containers. Here is a detailed explanation of each variable: General Settings • : Sets the timezone for all services. It is important for logging and time-based operations. Example: . User / Group Identifiers • and : These ensure that the services have the correct permissions to access and modify files on the host system. They should match the user ID and group ID of the host user. Network Settings • : The static IP address assigned to Unbound, ensuring it is reachable by Pi-hole. • : The static IP address assigned to Pi-hole, allowing it to serve DNS requests for the network. • : The port on which the WireGuard server will listen for connections. • : The DNS server that WireGuard clients will use, which is typically set to the Pi-hole's address. WireGuard Settings • : Specifies the number of peer/client configurations to generate for WireGuard. WireGuard-UI Settings • : A secret key used to encrypt session data for WireGuard-UI. This should be set to a secure, random value. • and : Credentials for accessing the WireGuard-UI interface. • : When set to , WireGuard-UI will manage the starting of the WireGuard service. • : When set to , WireGuard-UI will manage the restarting of the WireGuard service. Pi-hole Settings • : The password for accessing the Pi-hole web interface. It should be set to a secure value to prevent unauthorized access. • : The IP address of the Unbound server used by Pi-hole to resolve DNS queries. Remember to replace any default or placeholder values with secure, unique values before deploying your services. --- Recommended Configuration / Split Tunnel For a split-tunnel VPN, configure your WireGuard client to , which will route only the web panel and DNS traffic through the VPN. --- Accessing the Web Panel (WireGuard-UI) Manage your WireGuard VPN through the WireGuard-UI at: Log in with the and you have set in your file. Features of WireGuard-UI • Client Management: Add, remove, and manage clients. • Authentication: Secure login with a username and password. • Configurations: Update global server settings and manage client configurations. --- Access PiHole Connect to WireGuard and access the Pi-hole admin panel at . The login password is the one set as in your file. --- Dynamic DNS (DDNS) Configure DDNS by setting in your file to your DDNS URL. --- Configuring / Parameters Explain all the environment variables from your file here. (Refer to the previous section where we provided a table of explanations for each variable.) --- Additional Settings and Considerations Discuss any additional settings such as Docker secrets, umask settings, user/group identifiers, adding clients, modifying DNS providers, and networking considerations. Make sure to update any instructions to match the current setup. --- Support and Updates Provide information on how to access the shell while the container is running, view logs, update containers, and handle frequently asked questions. Ensure all the commands and steps are updated to reflect the current versions and practices. --- Acknowledgements Credit to LinuxServer.io for their maintenance of the Wireguard image and other contributions to the project.