72 lines
2.2 KiB
Markdown
72 lines
2.2 KiB
Markdown
|
# 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
|