diff --git a/README.md b/README.md new file mode 100644 index 0000000..0a93c54 --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +# 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