dnsmanager/README.md
2024-12-11 20:17:13 +01:00

72 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.
Youll 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