# dnsmanagerd `dnsmanagerd` is a DNS management micro-service enabling users to ask for a domain and handle their own DNS zones. This software is based on [libipc][libipc] and uses [authd][authd] for authentication, authorization and user profile management. `dnsmanagerd` stores data such as domains (and their owners), zone resource records and various *tokens*. No SQL, the entire database is stored in plain files, thanks to [the DODB database library][dodb]. The [netlibre service][netlibre] is the first to use `dnsmanagerd` in a real-life deployment. See [the netlibre's webclient][webclient]. ## Build `dnsmanagerd` is written in Crystal. You’ll need the following tools to build it: `crystal`, `shards` and `make`. ``` make make install ``` ## Run ``` $ dnsmanagerd --help ``` For a more extensive documentation, please read the manual for both [dnsmanagerd][dnsmanagerdmanual] and [dnsmanagerctl][dnsmanagerctlmanual]. See the [configuration example][configuration-example] to avoid long command-line parameters. Also, some usage examples are available in the makefiles. ## Administration ```sh # Add a domain for a user. dnsmanagerctl provide-domain login domain ``` For a comprehensive list of available commands, please read the [dnsmanagerctl manual][dnsmanagerctlmanual]. This command-line-interface application is mainly used for administrative purposes, users should access `dnsmanagerd` through another client instead. See [the netlibre's webclient][webclient]. ### Backup and migration ```sh # Database backup. tar cfz db.tar.gz ./db-dnsmanagerd # Database migration. tar xfz db.tar.gz ``` Wasn't that hard, isn't it? ## Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate. [libipc]: https://git.baguette.netlib.re/Baguette/libipc [authd]: https://git.baguette.netlib.re/Baguette/authd [netlibre]: https://www.netlib.re [configuration-example]: ./configuration-example.yml [dnsmanagerdmanual]: ./man/dnsmanagerd.1 [dnsmanagerctlmanual]: ./man/dnsmanagerctl.1 [dodb]: https://git.baguette.netlib.re/Baguette/dodb.cr [webclient]: https://git.baguette.netlib.re/Baguette/dnsmanager-webclient