Domani connects your domain to whatever you want to host on it, all with no account needed
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Brian Picciano 506037dcd0 Moved service tasks internally, main crashes on shutdown though 1 year ago
.github/workflows init 1 year ago
src Moved service tasks internally, main crashes on shutdown though 1 year ago
.env.dev Got acme working, syncing for http_domain works 1 year ago
.gitignore Build release as a static binary 1 year ago
Cargo.lock Add real logging 1 year ago
Cargo.toml Add real logging 1 year ago
README.md Update readme and index 1 year ago
TODO implement error::unexpected, use it everywhere 1 year ago
default.nix init 1 year ago
flake.lock Switch to using nightly 1 year ago
flake.nix Implemented acme store, started on manager 1 year ago
rust-toolchain.toml Build release as a static binary 1 year ago
shell.nix init 1 year ago

README.md

Domiply

Domiply is a self-hosted rust service which connects a DNS hostname to a data backend (e.g. a git repository), all with no account needed. The user only inputs their domain name, their desired backend, and then adds two entries to their DNS server.

Demo which may or may not be live

Build

Domiply uses nix flakes for building and setting up the development environment.

In order to create a release binary:

nix build

A statically compiled binary will be placed in the result directory.

Configuration

Domiply is configured via command-line arguments or environment variables:

      --http-domain <HTTP_DOMAIN>
          [env: DOMIPLY_HTTP_DOMAIN=]

      --http-listen-addr <HTTP_LISTEN_ADDR>
          [env: DOMIPLY_HTTP_LISTEN_ADDR=] [default: [::]:3030]

      --https-listen-addr <HTTPS_LISTEN_ADDR>
          E.g. '[::]:443', if given then SSL certs will automatically be retrieved for all domains using LetsEncrypt [env: DOMIPLY_HTTPS_LISTEN_ADDR=]

      --passphrase <PASSPHRASE>
          [env: DOMIPLY_PASSPHRASE=]

      --origin-store-git-dir-path <ORIGIN_STORE_GIT_DIR_PATH>
          [env: DOMIPLY_ORIGIN_STORE_GIT_DIR_PATH=]

      --domain-checker-target-a <DOMAIN_CHECKER_TARGET_A>
          [env: DOMIPLY_DOMAIN_CHECKER_TARGET_A=]

      --domain-checker-resolver-addr <DOMAIN_CHECKER_RESOLVER_ADDR>
          [env: DOMIPLY_DOMAIN_CHECKER_RESOLVER_ADDR=] [default: 1.1.1.1:53]

      --domain-config-store-dir-path <DOMAIN_CONFIG_STORE_DIR_PATH>
          [env: DOMIPLY_DOMAIN_CONFIG_STORE_DIR_PATH=]

      --domain-acme-store-dir-path <DOMAIN_ACME_STORE_DIR_PATH>
          [env: DOMIPLY_DOMAIN_ACME_STORE_DIR_PATH=]

      --domain-acme-contact-email <DOMAIN_ACME_CONTACT_EMAIL>
          [env: DOMIPLY_DOMAIN_ACME_CONTACT_EMAIL=]

  -h, --help
          Print help

  -V, --version
          Print version

HTTPS Support

Domiply will automatically handle setting up HTTPS via LetsEncrypt for both the domiply frontend site and all domains which it has been configured to serve.

By default HTTPS is not enabled, but can be easily enabled by setting the following arguments:

--https-listen-addr='[::]:443'
--domain-acme-contact-email='foo@example.com'
--domain-acme-store-dir-path='/some/secure/directory'

The contact email can be anything, it doesn't have to be real. The store directory will have all SSL private keys written to it, and so should be secured as best as possible.

Development

Domiply uses nix flakes for building and setting up the development environment. In order to open a shell with all necessary tooling (expected rust toolchain versions, etc...) simply do:

nix develop

Within the shell which opens you can do cargo run to start a local instance.

Roadmap

Check out the src/service/http_tpl/index.html file for the current roadmap.