A cross-platform network-wide ad/site blocker with a simple web control panel.
nogo
blocks access to various sites (ads, tracking, porn, gambling, etc) by
acting as a DNS proxy server with host blacklist support.
It requires minimal setup, and includes a simple web control panel for managing the host blacklist.
I wanted an open source ad blocker solution that was more universal than a browser plugin, and:
nogo
).Simply download a binary release
for your platform. Or, if you already have Go v1.8 or later installed you can
run: go get github.com/seedifferently/nogo
Note:
nogo
binds to the DNS port 53 by default, it must be given access to
"privileged" ports (e.g. via setcap
or sudo
).-help
switch for information on additional runtime options
(such as disabling or password protecting the web control panel).For those who would rather clone the repo and build from source:
Install Go (requires v1.8 or later).
Clone the repo, then cd
into it.
Install the dependencies by running make deps
. Or if you don't have make
:
go get github.com/miekg/dns
go get github.com/boltdb/bolt
go get github.com/pressly/chi
Build the app by running make
. Or if you don't have make
: go build
Run the app: sudo ./nogo
nogo
doesn't ship with a built-in blacklist, so it won't block any hosts until
you add them.
There are currently two methods for adding hosts to the blacklist:
Navigate to the web control panel (default: http://localhost:8080/
) and add
a host using the form.
Download a popular hosts list file (e.g. pick one from the list at
https://github.com/StevenBlack/hosts), and execute nogo
with the -import
switch on its first run.
Your computer/mobile device/etc is probably set up by default to utilize a DNS
server which allows connections to any host. Unless you update your DNS
configuration to point to nogo
(and only to nogo
), nothing will change.
For those of you who may be unfamiliar with how to update your DNS configuration, check out Google's guide for their DNS service here: https://developers.google.com/speed/public-dns/docs/using
You can follow their instructions, but don't forget to substitute their DNS
service IP addresses with the sole IP address of the machine running nogo
.
My name is Seth and I've been talking to machines in various languages since the early 90s. If you find this useful and want to say thanks, feel free to tweet me. If you'd prefer to give back in some way, you could buy me a beer, share some Satoshi, or pass my resume on to someone you know who is tackling interesting problems using technology.
Copyright (c) 2017 Seth Davis