/acme-dns-rust

🔑 Acme DNS implementation written in Rust (WIP)

Primary LanguageRustMIT LicenseMIT

Build codecov crates.io Cache Size

Acme DNS Rust

WIP!

This is an implementation based on the awesome Go Project Acme DNS written by @joohoi. It aims to be API compatible with the original implementation.

Configuration

By default a configuration file is expected in the working directory with the name config.toml .

Example config:

[general]
dns = "0.0.0.0:8053"
db = "postgresql://postgres:mysecretpassword@localhost/postgres"
acme = "https://acme-staging-v02.api.letsencrypt.org/directory"
name = "acme.example.com"

[records."acme.example.com"]
A = [100, "1.1.1.1", "2.2.2.2"]
TXT = [100, "First", "Record"]

[records."acme2.example.com"]
TXT = [100, "Hallo", "World"]
CNAME = [100, "lb.cloudflare.com"]

[api]
http = "0.0.0.0:8080"
# Adding a true after the addr activates proxy protocol for a listener
https = ["0.0.0.0:8081", true]
#Every listener is optional this line could be removed completely
prom = "0.0.0.0:8081"

It is possible to pass a diferent path as the first argument to the executable.

./acme-dns-rust different_name.toml

Records configuration

Acme DNS supports serving static DNS Records.

Currently supported records are:

  • TXT
  • A
  • CNAME

CName records get resolved by the default OS DNS configuration. For obvious reasons CNAME records don't support multiple values, unlike TXT and A records.