GoAway - DNS Sinkhole
A lightweight DNS sinkhole for blocking unwanted domains, inspired by Pi-hole.
🌟 Features
- DNS-level domain blocking
- Web-based admin dashboard
- Cross-platform support
- Docker support
- Customizable blocking rules
- Real-time statistics
- Low resource footprint
- And much more...
📋 Requirements
- For binary installation: Linux, macOS, or Windows
- For Docker installation: Docker and Docker Compose
- Supported architectures: amd64, arm64, and 386
📦 Installation
Option 1: Docker Installation (Recommended)
Run GoAway in a containerized environment:
docker run pommee/goaway:latest
# Best is to use the compose file in this repository
docker compose up -d
Use compose for more customization, example can be found here
Option 2: Quick Install
Install using the installation script:
# Latest version available
curl https://raw.githubusercontent.com/pommee/goaway/main/installer.sh | sh /dev/stdin
# Specific version
curl https://raw.githubusercontent.com/pommee/goaway/main/installer.sh | sh /dev/stdin 0.40.4
The installer will:
- Detect your operating system and architecture
- Download the appropriate binary
- Install it to
~/.local/bin - Set up necessary permissions
If the installer fails, you can manually download binaries from the releases page.
Option 3: Build from source
Last option is to build from source:
# Build the frontend client that will be embedded into the binary
make build
# Build GoAway binary
go build -o goaway
# Start
./goaway
🚀 Getting Started
Basic Usage
Start the DNS and web server with default settings:
goaway
You'll see a startup message confirming the services are running:
Configuration Options
goaway --help
GoAway is a DNS sinkhole with a web interface
Usage:
goaway [flags]
Flags:
--auth Disable authentication for admin dashboard (default true)
--dns-port int Port for the DNS server (default 53)
-h, --help help for goaway
--log-level int 0 = DEBUG | 1 = INFO | 2 = WARNING | 3 = ERROR (default 1)
--logging Toggle logging (default true)
--statistics-retention int Days to keep statistics (default 1)
--webserver-port int Port for the web server (default 8080)
Custom Configuration
The default settings are defined in settings.json. You can customize it by modifying the values as needed.
⚠️ Platform Support
| Platform | Architecture | Support Level |
|---|---|---|
| Linux | amd64 | Full |
| Linux | arm64 | Full |
| Linux | 386 | Full |
| macOS | amd64 | Beta |
| macOS | arm64 | Beta |
| Windows | amd64 | Beta |
| Windows | 386 | Beta |
Note
: Primary testing is conducted on Linux (amd64). While the aim is to support all listed platforms, functionality on macOS and Windows may vary.
Dev
The dashboard and servers are started separately, reason being hot-reloads and not having to embed the client into the binary.
make dev-website
make dev-server
💫 Contributing
You can start a new discussion here if features are wanted. Please report any issues encountered here.
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
This project is heavily inspired by Pi-hole. Thanks to all people involved for their work.

