happydomain/happydomain

Sponsored OSS

By happydomain

Updated about 20 hours ago

All your domains. One interface.

Image
Networking
Security
Monitoring & observability
2

10K+

happydomain/happydomain repository overview

happyDomain

happyDomain is a free web application that centralizes the management of your domain names from different registrars and hosts.

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

Features:

  • An ultra fast web interface without compromise
  • Multiple domains management
  • Support for 44+ DNS providers (including dynamic DNS, RFC 2136) thanks to DNSControl
  • Support for the most recents resource records thanks to CoreDNS's library
  • Zone editor with a diff view to review the changes before propagation
  • Keep an history of published changes
  • Contextual help
  • Multiple user with authentication or one user without authtication
  • Compatible with external authentication (through JWT tokens: Auth0, ...)

happyDomain is functional but still very much a work in progress: it's a carefully crafted proof of concept that evolves thanks to you!

Given the diversity of DNS configurations and user needs, we haven't yet identified all the bugs. If something doesn't work, please don't leave: tell us what's wrong. We're highly responsive and each reported bug helps us improve the tool for everyone.

Whether it works for you or not, we need your feedback! What do you think of our approach to simplifying domain name management? Your impressions at this stage help us guide the project according to your actual expectations.

Using Docker

We are a Docker sponsored OSS project! Thus you can easily try and/or deploy our app using Docker/podman/kubernetes/...

You can use docker compose to launch happyDomain:

git clone https://framagit.org/happyDomain/happyDomain.git
cd happyDomain
docker compose up

Or directly with docker run:

docker run -e HAPPYDOMAIN_NO_AUTH=1 -p 8081:8081 happydomain/happydomain

This command will launch happyDomain in a few seconds, for evaluation purposes (no authentication, volatile storage, ...). With your browser, just go to http://localhost:8081 and enjoy!

In order to deploy happyDomain, check the Docker image documentation.

Supported tags and architectures

All tags are build for amd64, arm64 and arm/v7 and are based on alpine.

Currently, available tags are:

  • latest: this is a the most up to date version, corresponding to the master branch.

Configuration

On launch, happyDomain reads configuration from environment variablesprefixed with HAPPYDOMAIN_. For example:

HAPPYDOMAIN_STORAGE_ENGINE=leveldb
HAPPYDOMAIN_LEVELDB_PATH=/var/lib/happydomain/db/

In the documentation, configuration keys are written in kebab-case (e.g., storage-engine). To use them as environment variables, simply:

  • Replace dashes (-) with underscores (_),
  • Use uppercase letters,
  • Add the HAPPYDOMAIN_ prefix.
Database configuration

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

The help command ./happydomain -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).

-e HAPPYDOMAIN_LEVELDB_PATH=string
	Path to the LevelDB Database (default "happydomain.db")

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

Going Further

Checkout the documentation.

Admin Interface

happyDomain exposes some administration command through a unix socket. The docker container contains a script to access this admin part: hadmin.

You can use it this way:

docker exec my_container hadmin /api/users
docker exec my_container hadmin /api/users/0123456789/send_validation_email -X POST

This is in fact a wrapper above curl, but you have to start by the URL, and place options after it.

Tag summary

Content type

Image

Digest

sha256:48d22877d

Size

39.8 MB

Last updated

about 20 hours ago

docker pull happydomain/happydomain

This week's pulls

Pulls:

393

Last week