https://github.com/jcthomas4214/docker_network_services
Docker network services. Pihole, WireGuard, and Cloudflared.
https://github.com/jcthomas4214/docker_network_services
cloudflared docker pihole wireguard
Last synced: 4 months ago
JSON representation
Docker network services. Pihole, WireGuard, and Cloudflared.
- Host: GitHub
- URL: https://github.com/jcthomas4214/docker_network_services
- Owner: JCThomas4214
- License: mit
- Created: 2019-03-16T16:05:33.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-08-23T18:18:06.000Z (over 5 years ago)
- Last Synced: 2025-06-23T09:48:19.930Z (8 months ago)
- Topics: cloudflared, docker, pihole, wireguard
- Language: Python
- Homepage:
- Size: 9.77 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Pihole, WireGuard, and Cloudflared network services using docker and docker-compose.
# Ingredients
- Linux (w/ wireguard kernel module)
- Python 3.7+ (w/ pip3)
- Docker
- Docker-Compose
# Quick Start Recipe
Make sure to have the WireGuard kernel module installed. This is preinstalled in kernel 5.6+. Visit [here](https://www.wireguard.com/install/) for more info.
1. Clone repo
2. Install python requirements
3. Run initial setup
4. Add peers to WireGuard (use the \*-cli-\*.conf to configure client)
5. Start containers
```sh
git clone https://github.com/JCThomas4214/docker_network_services.git && cd docker_network_services && \
pip3 install -r requirements.txt && \
./setup.py -i && \
./setup.py -a wg0 John_Doe Mary_Sue && \
docker-compose up -d
```
# Full Course Meal
Inital setup and manager for your WireGuard instance
```sh
$ ./setup -h
usage: setup.py [-h] (-i | -u | -a WG_INTERFACE [PEER ...] | -d WG_INTERFACE [PUBLIC_KEY ...] | -l WG_INTERFACE)
Script to setup your containers and manage WireGuard
optional arguments:
-h, --help show this help message and exit
-i, --initialize initialize .env file with pihole and WireGuard settings
-u, --update bring down containers / update containers / bring containers back up
-a WG_INTERFACE [PEER ...], --add-peer WG_INTERFACE [PEER ...]
add WireGuard peer to your instance (outputs [WG_INTERFACE]-cli-[PEER].conf) the WireGuard
container will restart automatically
-d WG_INTERFACE [PUBLIC_KEY ...], --delete-peer WG_INTERFACE [PUBLIC_KEY ...]
delete WireGuard peers with the interface and PublicKeys listed with --list-peers the
WireGuard container will restart automatically
-l WG_INTERFACE, --list-peers WG_INTERFACE
list all WireGuard peers on specified interface
NOTE: start with './setup.py -i' to stage initial settings
```
- Make sure to enable IPv4 Forwarding and it persists on reboot.
- Read the WireGuard [documentation](https://www.wireguard.com/)!
## Initialization
Initialization with `./setup -i` will ask you a series of questions to stage your `.env` file for docker-compose.
- PiHole Web Password
- Password used to login into PiHoles webapp
- Your public IP address
- Your outward facing IP address (ISP). This is for Wireguard config files.
- Host interface name
- The name of the NIC used on your server to host services. Used for PiHole packet trafficing.
- WireGuard interface name
- The name of the WireGuard virtual tun interface that will be created.
- Wireguard interface tunnel IPv4 address
- The gateway IP for the WireGuard virtual tun interface.
- Wireguard interface port
- Port used to traffic VPN on Public IP and virtual tun interface
Once all is said and done the `.env` file should be generated and look like the following.
```sh
WEBPASSWORD=y0urPa55w0rd
PublicIP=111.111.111.111
ServerIP=192.168.0.2
IPv6=False
TZ=America/Chicago
DNS1=127.0.0.1#5053
DNS2=127.0.0.1#5054
DNSMASQ_USER=pihole
DNSMASQ_LISTENING=local
INTERFACE=eth0
WG_PORT=51820
```
## References
- https://www.wireguard.com/
- https://github.com/cmulk/wireguard-docker
- https://github.com/pi-hole/docker-pi-hole
- https://github.com/visibilityspots/dockerfile-cloudflared