## Prerequisites: - ☁ If using a cloud provider: - You need to allow ingress to port `51820` ##### Optional Fully Automated Deployment on Oracle Cloud: - https://medium.com/@devinjaystokes/automating-the-deployment-of-your-forever-free-pihole-and-wireguard-server-dce581f71b7 --- ### Quickstart To get started all you need to do is clone the repository and spin up the containers. ```bash git clone https://github.com/IAmStoxe/wirehole.git cd wirehole docker-compose up ``` ### Full Setup ```bash #!/bin/bash # Prereqs and docker sudo apt-get update && sudo apt-get install -yqq \ curl \ git \ apt-transport-https \ ca-certificates \ gnupg-agent \ software-properties-common # Install Docker repository and keys curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" && sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io -yqq # docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose && sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # wirehole git clone https://github.com/IAmStoxe/wirehole.git && cd wirehole && docker-compose up ``` Within the output of the terminal will be QR codes you can (if you choose) to setup it WireGuard on your phone. ```bash wireguard | **** Internal subnet is set to 10.6.0.0 **** wireguard | **** Peer DNS servers will be set to 10.2.0.100 **** wireguard | **** No found wg0.conf found (maybe an initial install), generating 1 server and 1 peer/client confs **** wireguard | PEER 1 QR code: wireguard | █████████████████████████████████████████████████████████████████ wireguard | █████████████████████████████████████████████████████████████████ wireguard | ████ ▄▄▄▄▄ █▀▀▀▄ ▀▀▀▀▄█ ██ ▄▀ ██ ██▄▀█ █▄▄█▀ ▄ ██ ▄▄▄▄▄ ████ wireguard | ████ █ █ █▀▄█▀█▄█▄██▀▄ ▀▀██▀▄█ ▀▄█ ▀ █▀▄█▄ ▄▄▄ ██ █ █ ████ wireguard | ████ █▄▄▄█ █▀█ ▀▀▄ ▄██ █▄▄▄█ ████ wireguard | ████▄▄▄▄▄▄▄█ ▀ ▀ █ █▄█▄▀ █▄▄▄▄▄▄▄████ wireguard | ████ ▄▄ █▄▄▄ ▄▀█▀▀▄ ▀█ ▀█ ▄ █▀▀▄▄██▄▄▀▀█▄ ██▀▀ █ █▄█ ▀████ wireguard | █████ ▄█ ▄ ▀▀█▄▄ █▀ ▀ ▀ ▄ ▄ ▀▄▀▀█ ██ ▀██▀ ▀ ▀▀ ▀ ▀▄ ████ wireguard | ████▀▀██ ▄▄▄ ██▀▄▄██▀ ██▀▄ ▀▀ █▄█ ▄ ▄█▄██ ▀▄▄█ █▀▀█ ▄▀████ wireguard | ████ ▄█▀█▀▄▄ ▄███ ▄█ ▀▀▀▀█ ▄█ ▀▀▀▀▀▄ █ █ ███▄ █ ▄▄▄▄▀▀▀ █████ wireguard | ████▀▄ ▀▀ ▄▄ ▄▄ █▀██ ▀▀▀▀▀ ▄ █▀▀██ ██▀ ▀█▄█▄█ ▄▄▀ ▀████ wireguard | ████ ▀█ ▄▄ █ ▀▀██████ wireguard | ███████ ▄▄█ █ ▄█▀█▀▀▄████ wireguard | ████ ▄ █▄▄▀ ▄ ▀▄ █ ▄██▀▀█▀ █▄▄█▀▄█▀█▄ █ ▀▄█ ▄█ ▀ █ █████ wireguard | ████▄██▀█▄▄ ▀ ▄▀ ▀▄ ▄█ ▀▄ █▀ ▀██▀▄███████ wireguard | ████ ▀█ ▄▄▄ ██▀███▄█▄█ █▄█▀ ▀ ▄▄▄ ▀▀ ▀▄ ▀▀█ █ █ ▄▄▄ ▄▀████ wireguard | ████▄██ █▄█ █ ▀▀ ▀████ wireguard | █████▀█▄▄▄▄▄ █▄ ▀▄ ██ ██▀ ▄ █▄ ▄▄▄▀ ▀▄▀█ █▀ █▄ ▄ ▄▄▄ ▄ ▀▄█████ wireguard | █████▀▄▀ ▄▄█▄▀ ██▄▄▄ █▀ ██ ██ █▄ ██▄ ▄▀█▄██▀▄█ █▀████ wireguard | ████▄ ▀ ▄ ▀ ▀▀▀▀▀▀█▀██▀ █ █▀█▀███ ▀▄█ █▄ █ ▀▀█▀██▀ ▄█████ wireguard | ████ ▀ ▄ ██▄ ▀▀▀▄▀█ ▀▀▄ ▄ ▄ █▀▀▄█ ▄█▄▀█▄█▀ ▄▀█▄▀ ▀▀▀ ▀▀ ▀████ wireguard | ███████ ▄█▄ ▀█▄▄ ▀█ █▀ █▀▄ ▄ ▀▄█▄▄█▀▄█▄▄▄▄█▀ ▀█ █▀ ▄ ██▀▄█████ wireguard | ████▀█ █▀ ▄ █ ▄▀█████ wireguard | ████▀▄ ▄▄█▄▄ ▄ ▄██▄ ▀ █ ▀ ▄▄█▀▀ ▄ ▀▀▄█▀▄██▀▀ ▄ ▄▄▄▄▀▀▄▀▀▀ ████ wireguard | ████ ▀▄▄▀▀▄▀▀▀▄ ▄ █▄▄▀ ██▀▄▀ █▄██▀▀▄█▄▄█ ████▄ ▀█▄█▀▄▀ ▀▄ ▀ █████ wireguard | ████ ▀ ▀▀▄▄ ▄ █▄ ▄ ██ ▄▀█▄▄ ▄ ▄ █▄▀ ▄▄▀██▄▀▀██▀▀▄▄ ▄ ██ ▄▀████ wireguard | ██████████▄█▀▀█ ▄█ █▄▄ ▀▄▀█▀▀ ▄▄▄ ▀█▀█ ▄▀█▀█▀▀ ██▄▀ ▄▄▄ ▄██▄████ wireguard | ████ ▄▄▄▄▄ █▄▄▄█▀▄█▀██ ▄ ▀█ ▀ █▄█ ▀▀█▄ ██▄█ ▀▄ ▀█▄▄ █▄█ █████ wireguard | ████ █ █ █ ▄▄ ▄█ ▄▄█ █▀ ▄ ▄ █ ▄█▄▄█ █▀ ▄████ ▄▄ ▀▀▄▄████ wireguard | ████ █▄▄▄█ █ ▀ ▄▄█ ▄ ▀▀▄██▄▀█▀█ █▀█▀▀▀▄ ▄ █▀▀▄▀ ▄▀███▀██▀██████ wireguard | ████▄▄▄▄▄▄▄█▄██▄▄█▄▄▄▄▄██▄█▄▄▄█▄█▄█▄▄▄▄█▄▄▄█████▄▄█▄█▄▄████▄█████ wireguard | █████████████████████████████████████████████████████████████████ wireguard | █████████████████████████████████████████████████████████████████ wireguard | [cont-init.d] 30-config: exited 0. wireguard | [cont-init.d] 99-custom-scripts: executing... wireguard | [custom-init] no custom files found exiting... wireguard | [cont-init.d] 99-custom-scripts: exited 0. wireguard | [cont-init.d] done. wireguard | [services.d] starting services ``` ## Recommended configuration / Split tunnel: Modify your wireguard client `AllowedIps` to `10.2.0.0/24` to only tunnel the web panel and DNS traffic. ## Access PiHole While connected to WireGuard, navigate to http://10.2.0.100/admin *The password (unless you set it in `docker-compose.yml`) is blank.* ![](https://i.imgur.com/hlHL6VA.png) --- ## Configuring for Dynamic DNS (DDNS) If you're using a dynamic DNS provider, you can edit `docker-compose.yml` under "wireguard". Here is an excerpt from the file. You need to uncomment `#- SERVERURL` so it reads `- SERVERURL` without the `#` and then change `my.ddns.net` to your DDNS URL. ```yaml wireguard: # ... environment: # ... - SERVERURL=my.ddns.net #optional - For use with DDNS (Uncomment to use) # ... # ... ``` --- ## Author 👤 **Devin Stokes** * Twitter: [@DevinStokes](https://twitter.com/DevinStokes) * Github: [@IAmStoxe](https://github.com/IAmStoxe) ## 🤝 Contributing Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/IAmStoxe/wirehole/issue). ## Show your support Give a ⭐ if this project helped you! Buy Me A Coffee