Finally a simple interface for domain names https://happydomain.org/
Go to file
nemunaire c8dbc8f932
continuous-integration/drone/push Build is passing Details
Fix typo
2022-04-04 10:30:46 +02:00
actions Fix typo 2022-04-04 10:30:46 +02:00
admin This is happyDomain now 2022-01-18 10:16:32 +01:00
api This is happyDomain now 2022-01-18 10:16:32 +01:00
config This is happyDomain now 2022-01-18 10:16:32 +01:00
forms This is happyDomain now 2022-01-18 10:16:32 +01:00
generators This is happyDomain now 2022-01-18 10:16:32 +01:00
internal/app This is happyDomain now 2022-01-18 10:16:32 +01:00
model Fix bad HMAC handling 2022-02-19 15:21:08 +01:00
providers This is happyDomain now 2022-01-18 10:16:32 +01:00
services This is happyDomain now 2022-01-18 10:16:32 +01:00
storage Handle LevelDB recovery 2022-01-22 10:24:00 +01:00
ui ui: Upgrade node modules 2022-03-30 20:10:29 +02:00
utils This is happyDomain now 2022-01-18 10:16:32 +01:00
.dockerignore This is happyDomain now 2022-01-18 10:16:32 +01:00
.drone-manifest-local.yml CI/CD: Publish Docker images to local registry 2022-03-15 21:30:17 +01:00
.drone-manifest.yml CD: Deploy on Docker Hub into happydomain organisation 2022-03-22 01:59:49 +01:00
.drone.yml CD: Deploy on Docker Hub into happydomain organisation 2022-03-22 01:59:49 +01:00
.gitignore This is happyDomain now 2022-01-18 10:16:32 +01:00
Dockerfile CI: Compile with go 1.18 2022-03-20 03:10:45 +01:00
Dockerfile-builded This is happyDomain now 2022-01-18 10:16:32 +01:00
LICENSE Rename project happyDomain 2021-12-31 15:52:15 +01:00
README.md This is happyDomain now 2022-01-18 10:16:32 +01:00
generate.go This is happyDomain now 2022-01-18 10:16:32 +01:00
go.mod chore(deps): update golang.org/x/crypto digest to ae2d966 2022-04-02 06:38:26 +00:00
go.sum chore(deps): update golang.org/x/crypto digest to ae2d966 2022-04-02 06:38:26 +00:00
hadmin.sh This is happyDomain now 2022-01-18 10:16:32 +01:00
main.go This is happyDomain now 2022-01-18 10:16:32 +01:00
renovate.json renovate: Automerge goldmark 2022-02-18 21:27:19 +01:00

README.md

happyDomain

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 happyDomain 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.happydomain.org/happydomain/ui
go generate git.happydomain.org/happydomain
  1. Finaly, build the Go code:
go build -v

This last command will create a binary happydomain 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:

./happydomain

After some initializations, it should show you:

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

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

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 ./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).

-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.

Persistant configuration

The binary will automatically look for some existing configuration files:

  • ./happydomain.conf in the current directory;
  • $XDG_CONFIG_HOME/happydomain/happydomain.conf;
  • /etc/happydomain.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:

./happydomain /etc/happydomain/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/happydomain/db/

Environment variables

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

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

HAPPYDOMAIN_STORAGE_ENGINE=leveldb
HAPPYDOMAIN_LEVELDB_PATH=/var/lib/happydomain/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 happydomain with the following arguments:

./happydomain -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.