DNS-based parental controls, ad blocking, and web filtering for your home network.
3.5K
DNS-based parental controls, ad blocking, and web filtering for your home network.
Source: github.com/jbarwick/Gatesentry
Built from a fork of fifthsegment/Gatesentry with enhanced containerization, automatic device discovery, configurable root path for reverse proxy deployments, and RFC 2136 DDNS support.
v2 is a major architecture overhaul — global filter lists have been replaced by a per-user, rule-based filtering system with priority ordering and Allow/Block actions.
/domainlistsGS_MAX_SCAN_SIZE_MB)docker rundocker run -d \
--name gatesentry \
--network host \
--restart unless-stopped \
-v gatesentry-data:/usr/local/gatesentry/gatesentry \
-e TZ=America/New_York \
jbarwick/gatesentry:latest
services:
gatesentry:
image: jbarwick/gatesentry:latest
container_name: gatesentry
restart: unless-stopped
network_mode: host
volumes:
- gatesentry-data:/usr/local/gatesentry/gatesentry
environment:
- TZ=America/New_York
volumes:
gatesentry-data:
docker compose up -d
Then open http://<host-ip> in a browser. Default login: admin / admin.
| Variable | Default | Description |
|---|---|---|
TZ | UTC | Timezone for time-based access rules (e.g., America/New_York) |
GS_ADMIN_PORT | 80 | Port for the web admin UI |
GS_BASE_PATH | /gatesentry | URL base path prefix (set to / for root-level access) |
GS_DEBUG_LOGGING | false | Enable verbose debug logging |
GS_MAX_SCAN_SIZE_MB | 10 | Max content size to scan (MB) |
GS_TRANSPARENT_PROXY | true | Enable/disable transparent proxy |
GS_TRANSPARENT_PROXY_PORT | auto | Custom port for transparent proxy listener |
| Port | Protocol | Service |
|---|---|---|
| 53 | UDP + TCP | DNS server (core service) |
| 80 | TCP | Web admin UI |
| 10413 | TCP | HTTP(S) filtering proxy |
| 5353 | UDP | mDNS/Bonjour listener (device discovery) |
| Path | Description |
|---|---|
/usr/local/gatesentry/gatesentry | Persistent data — settings DB, device inventory, certificates, logs |
Back up this volume to preserve your configuration.
network_mode: host?GateSentry needs host networking to see real client IP addresses. Without it, all devices appear as the Docker bridge IP and per-device filtering/discovery won't work.
| Feature | Needs host networking? |
|---|---|
| DNS filtering | Recommended |
| See real client IPs | Yes |
| Per-device controls | Yes |
| mDNS/Bonjour discovery | Yes |
| Passive device discovery | Yes |
Docker Desktop (macOS/Windows): Host networking maps to the LinuxKit VM, not your real LAN. Use bridged mode with explicit port mappings for local testing only.
Set GS_BASE_PATH and GS_ADMIN_PORT to run behind a reverse proxy:
environment:
- GS_ADMIN_PORT=8080
- GS_BASE_PATH=/gatesentry # default — serves at /gatesentry/
Nginx example:
location /gatesentry/ {
proxy_pass http://127.0.0.1:8080/gatesentry/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
To serve at root instead: GS_BASE_PATH=/.
Point your router's DHCP DNS setting to GateSentry's IP. Devices will start using GateSentry after their next DHCP lease renewal.
For routers that support RFC 2136 (pfSense, ISC DHCP, Kea), configure DDNS updates with TSIG authentication so GateSentry automatically learns device hostnames. See the full deployment guide for router-specific setup instructions.
Content type
Image
Digest
sha256:c2aaf151e…
Size
12.9 MB
Last updated
7 months ago
docker pull jbarwick/gatesentry