# 

Welcome to the documentation site of [atomdns](https://codeberg.org/miekg/dns/src/branch/main/cmd/atomdns), a
flexible and fast DNS name server. It is written in [Go](http://go.dev). atomdns links [handlers](/handlers)
together which then make up your DNS server.

> atomdns is powered by chaining handlers.

atomdns can serve data over DNS, DOT (DNS over TLS), DOH (DNS over HTTPS), and DOU (DNS over Unix [domain sockets]),
with manual or automatic certificate management.

> This site is a "wiki", click the pencil icon top right to make edits via Git and codeberg.org.

This DNS data for this site is (of course) served by atomdns (see [the
configuration](/starting/configuration#atomdns.miek.nl)) and the website is created with
[hugo](https://gohugo.io) and served via [caddy](https://caddyserver.com). This entire stack runs on Go, and C
for the Linux kernel.

The focus for atomdns is running on your servers, serving your DNS data the way you want to. This the entire
configuration for serving [miek.nl](https://miek.nl) and thus [atomdns.miek.nl](https://atomdns.miek.nl) (with
some added comments).

```Caddyfile {linenos=true, title="Conffile of atomdns.miek.nl"}
{
    # The global handler block defines process wide properties for atomdns.
    log {
        debug
    }
    root /etc/atomdns
    health
    metrics
    dns {
        addr [::]:53
    }
}

# Here we define a reusable block.
(observe) {
    metrics
}

# And another one for later use.
(nlnetlabs) {
    transfer {
            to 185.49.140.62 2a04:b900::8:0:0:62 {
            source 2a10:3781:2dc2:3::53
        }
    }
}

# The definition for the miek.nl zone.
miek.nl {
    ecs            # check for edns0 client subnet.
    log            # log incoming queries.
    import observe # import allows using those predefined blocks from above.
    sign zones/miek.nl {           # sign the miek.nl zone.
        ttl 60
        key keys/Kmiek.nl.+008+33694 keys/Kmiek.nl.+013+05607
    }
    dbfile zones/miek.nl.signed {  # serve the signed miek.nl zone.
        import nlnetlabs
    }
}
```

See [the configuration section](/starting/configuration) for a complete rundown of the configuration.

We always appreciate your feedback and improvements. You can submit an issue or pull request on the
[codeberg](https://codeberg.org/miekg/atomdns.miek.nl) repository for this website. atomdns can be [found at
codeberg.org/miekg/dns](https://codeberg.org/miekg/dns). This site details the latest version of atomdns.

A lof of things are documented directly in atomdns's [git repository](https://codeberg.org/miekg/dns), to
avoid repeating things here (and keeping up to date), links to the authoritative source are preferred.

{{% children sort="weight" depth=2 %}}
