Finally a simple, modern and open source interface for domain name.

happyDNS

Finally a simple, modern and open source interface for domain name.

It consists of a HTTP REST API written in Golang (primarily based on https://github.com/miekg/dns) with a nice web interface written in Vue.js. It runs as a single stateless Linux binary, backed by a database (currently: LevelDB, more to come soon).

Features

TODO

Building

Dependencies

In order to build the happyDNS project, you'll need the following dependencies:

  • go at least version 1.16
  • nodejs tested with version 14.4.0
  • yarn tested with version 1.22.4

Instructions

  1. First, you'll need to prepare the frontend, by installing the node modules dependencies:
yarn --cwd ui install
  1. Then, generates assets files used by Go code:
go generate git.happydns.org/happydns/ui
go generate git.happydns.org/happydns
  1. Finaly, build the Go code:
go build -v

This last command will create a binary happydns you can use standalone.

Install at home

The binary comes with sane default options to start with. You can simply launch the following command in your terminal:

./happydns

After some initializations, it should show you:

Admin listening on ./happydns.sock
Ready, listening on :8081

Go to http://localhost:8081/ to start using happyDNS.

Database configuration

By default, the LevelDB storage engine is used. You can change the storage engine using the option -storage-engine other-engine.

The help command ./happydns -help can show you the available engines. By example:

-storage-engine value
	Select the storage engine between [leveldb mysql] (default leveldb)

LevelDB

LevelDB is a small embedded key-value store (as SQLite it doesn't require an additional daemon to work).

-leveldb-path string
	Path to the LevelDB Database (default "happydns.db")

By default, a new directory is created near the binary, called happydns.db. This directory contains the database used by the program. You can change it to a more meaningful/persistant path.

Persistant configuration

The binary will automatically look for some existing configuration files:

  • ./happydns.conf in the current directory;
  • $XDG_CONFIG_HOME/happydns/happydns.conf;
  • /etc/happydns.conf.

Only the first file found will be used.

It is also possible to specify a custom path by adding it as argument to the command line:

./happydns /etc/happydns/config

Config file format

Comments line has to begin with #, it is not possible to have comments at the end of a line, by appending # followed by a comment.

Place on each line the name of the config option and the expected value, separated by =. For example:

storage-engine=leveldb
leveldb-path=/var/lib/happydns/db/

Environment variables

It'll also look for special environment variables, beginning with HAPPYDNS_.

You can achieve the same as the previous example, with the following environment variables:

HAPPYDNS_STORAGE_ENGINE=leveldb
HAPPYDNS_LEVELDB_PATH=/var/lib/happydns/db/

You just have to replace dash by underscore.

Development environment

If you want to contribute to the frontend, instead of regenerating the frontend assets each time you made a modification (with go generate), you can use the development tools:

In one terminal, run happydns with the following arguments:

./happydns -dev http://127.0.0.1:8080

In another terminal, run the node part:

yarn --cwd ui run serve

With this setup, static assets integrated inside the go binary will not be used, instead it'll forward all requests for static assets to the node server, that do dynamic reload, etc.

Similar Resources

Email-searcher - Given a domain name and real name, attempt to find an existing email for that user.

email-searcher Given a domain name and real name, attempt to find an existing email for that user. Using Run it with both the domain and name flags, l

Jan 2, 2022

A tool to solve DNS pollution of GitHub website. Query the real IP address of domain names such as github.com, and refresh the domain name setting of the system hosts file.

githubDNS Target A tool to solve DNS pollution of GitHub website. Query the real IP address of domain names such as github.com, and refresh the domain

Oct 14, 2021

GRONG is a DNS (Domain Name System) authoritative name server.It is more a research project than a production-ready program.

GRONG (Gross and ROugh Nameserver written in Go) is a DNS (Domain Name System) authoritative name server. It is intended as a research project and is

Oct 17, 2020

Audit your egress connections and finally populate this OUTPUT chain !

egress-auditor Audit your egress connections and finally populate this OUTPUT chain ! Summary egress-auditor will monitor new outbound connections and

Aug 9, 2022

Finally, secure HTTP!

shttp Have you ever thought: Golly gee, HTTP is great and all, but wouldn't it be even better if it were a little less insecure? Well do I have good n

Feb 8, 2022

Takes a full name and splits it into individual name parts

gonameparts gonameparts splits a human name into individual parts. This is useful when dealing with external data sources that provide names as a sing

Sep 27, 2022

gdn is a Go module to get domain name from SSL certificates given an IP address

Get Domain Name gdn is a Go module to get domain name from SSL certificates given an IP address Installation Instructions From Source gdn requires go1

Nov 9, 2022

Go package provides a fast lookup of country, region, city, latitude, longitude, ZIP code, time zone, ISP, domain name,

IP2Location Go Package This Go package provides a fast lookup of country, region, city, latitude, longitude, ZIP code, time zone, ISP, domain name, co

Jan 8, 2023

Dotcel - Domain name application built on top of celestia

dotcel dotcel is a blockchain built using Cosmos SDK and Tendermint and created

Feb 7, 2022

TLDs finder: check domain name availability across all valid top-level domains

TLD:er TLDs finder — check domain name availability across all valid top-level d

Oct 31, 2022

A CLI tool to get Certificate Transparency logs of a domain name.

A CLI tool to get Certificate Transparency logs of a domain name.

crt crt is a CLI tool to get Certificate Transparency logs of a domain name. It can also enumerate subdomains. Installation If you have Go installed:

Dec 17, 2022

đŸŽ¯ ENS (.eth domain) batch domain resolver

ENS batch domain resolver (.eth domain) A simple program to check a batch of ENS domains availability. Configure Configs store in config.yaml file nex

Mar 15, 2022

SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. đŸ”Ĩ đŸ–Ĩ. 👉 Open source Application Performance Monitoring (APM) & Observability tool

SigNoz helps developers monitor their applications & troubleshoot problems, an open-source alternative to DataDog, NewRelic, etc. đŸ”Ĩ đŸ–Ĩ.   👉  Open source Application Performance Monitoring (APM) & Observability tool

Monitor your applications and troubleshoot problems in your deployed applications, an open-source alternative to DataDog, New Relic, etc. Documentatio

Sep 24, 2021

An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product âŖ English | įŽ€äŊ“中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

Oct 19, 2021

Project Flogo is an open source ecosystem of opinionated event-driven capabilities to simplify building efficient & modern serverless functions, microservices & edge apps.

Project Flogo is an open source ecosystem of opinionated  event-driven capabilities to simplify building efficient & modern serverless functions, microservices & edge apps.

Project Flogo is an Open Source ecosystem for event-driven apps Ecosystem | Core | Flows | Streams | Flogo Rules | Go Developers | When to use Flogo |

Dec 31, 2022

💧 Visual Data Preparation (VDP) is an open-source tool to seamlessly integrate Vision AI with the modern data stack

💧 Visual Data Preparation (VDP) is an open-source tool to seamlessly integrate Vision AI with the modern data stack

Website | Community | Blog Get Early Access Visual Data Preparation (VDP) is an open-source tool to streamline the end-to-end visual data processing p

Jan 5, 2023

Ananas is an experimental project for kubernetes CSI (Container Storage Interface) by using azure disk. Likewise, Ananas is the name of my cute british shorthair.

ananas Ananas is an experimental project for kubernetes CSI (Container Storage Interface) by using azure disk. Likewise, Ananas is the name of my cute

Aug 4, 2021

KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes.

KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes.

What is Kintohub? KintoHub is an open source build and deployment platform designed with a developer-friendly interface for Kubernetes. Build your cod

Jun 7, 2022

Package command provide simple API to create modern command-line interface

Package command Package command provide simple API to create modern command-line interface, mainly for lightweight usage, inspired by cobra Usage pack

Jan 16, 2022
GRONG is a DNS (Domain Name System) authoritative name server.It is more a research project than a production-ready program.

GRONG (Gross and ROugh Nameserver written in Go) is a DNS (Domain Name System) authoritative name server. It is intended as a research project and is

Oct 17, 2020
Simple application written in Go that combines two wordlists and a list of TLDs to form domain names and check if they are already registered.

Domainerator Domainerator was my first Go application. It combines two wordlists (prefixes and suffixes) and a list of TLDs to form domain names and c

Sep 16, 2022
A minimalist-configuration reverse DNS name server

autoreverse autoreverse is a specialized authoritative DNS server whose goal is to make it as easy as possible to auto-answer reverse queries without

Feb 14, 2022
Free and open source, powerful network-wide ads & trackers blocking DNS server
Free and open source, powerful network-wide ads & trackers blocking DNS server

Privacy protection center for you and your devices Free and open source, powerful network-wide ads & trackers blocking DNS server. AdGuard.com | Wiki

Nov 20, 2021
Dynamically update DNS records with your interface's public IPs

Dynamically update DNS records with your interface's public IPs

Jul 2, 2022
A BitMessage headless client and library

bitz A BitMessage headless client and library. The initial focus is to implement the BitMessage protocol and provide a library that others can use. Sp

Nov 26, 2020
The /etc/hosts parsing and resolver library for golang

Hostsfile The /etc/hosts parsing and resolver library for golang Hostsfile is a go (golang) package for parsing hosts files and performing reverse IP

May 11, 2022
Fast and lightweight DNS proxy as ad-blocker for local network with many features

Blocky Blocky is a DNS proxy and ad-blocker for the local network written in Go with following features: Features Blocking - Blocking of DNS queries w

Jan 1, 2023
Create cluster to run ingress controller and set the dns resolver
Create cluster to run ingress controller and set the dns resolver

kubebuilder-crd-dep-svc-ing create cluster to run ingress controller and set the dns resolver $ kind create cluster --config clust.yaml $ sudo

Nov 15, 2021
DNS server using miekg/dns offering dynamic subdomains, time-over-dns, and standard zone file support.

dns-go DNS server using miekg/dns offering dynamic subdomains, time-over-dns, and standard zone file support. dynamic subdomains web.myapp.192.168.1.1

Dec 14, 2021