Skip to content

xbgmsharp/yapdnsui

Repository files navigation

yapdnsui

Yet Another PowerDNS web interface

The ultimate goal is to produce a slick web interface to PowerDNS that will let you fully operate your PowerDNS instance via the official PowerDNS API.

The application should let you do add/delete/update domains and records as well as graph statistics and list/update configuration items LIVE from one or multiple PowerDNS instance via the PowerDNS API.

In addition, the application should let you manage DNSSEC zones and zone metadata.

It is not just another PowerDNS UI, it is the first to use the PowerDNS API, therefor to be backend-agnostic and DNSSEC aware.

Currently, you can list the configuration and see live statistics in a graph and list all the domains and records for demonstration purpose.

You can checkout the web interface using the live demo running on OpenShift cloud.

You are welcome to contribute.

![yapdnsui_livestats] (https://github.com/xbgmsharp/yapdnsui/raw/master/misc/screenshot_livestats.png)

![yapdnsui_config] (https://github.com/xbgmsharp/yapdnsui/raw/master/misc/screenshot_config.png)

![yapdnsui_domains] (https://github.com/xbgmsharp/yapdnsui/raw/master/misc/screenshot_domains.png)

![yapdnsui_records] (https://github.com/xbgmsharp/pdnsui/raw/master/misc/screenshot_records.png)

yapdnsui Prereqs

You need NodeJS v0.10.x+ for this application to work.

It might work with lower requirements but I didn't test.

PowerDNS Prereqs

Yes, you need a PowerDNS server.

It can be either an Authoritative or a Recursor to try this application out.

You need to enable the PowerDNS API on your PowerDNS instances.

For an Authoritative instance, configure as follows:

# Allow webserver
webserver=yes
# IP Address of web server to listen on
webserver-address=127.0.0.1
# Port of web server to listen on
webserver-port=8081
# Web server access is only allowed from these subnets
webserver-allow-from=0.0.0.0/0,::/0
# Enable JSON and API
experimental-json-interface=yes
experimental-api-key=changeme

In addition, you might want to configure the default domain value:

# default-soa-mail      mail address to insert in the SOA record if none set in the backend
default-soa-mail=
# default-soa-name      name to insert in the SOA record if none set in the backend
default-soa-name=a.misconfigured.powerdns.server
# default-ttl   Seconds a result is valid if not set otherwise
default-ttl=3600
# soa-expire-default	Default SOA expire
soa-expire-default=604800
# soa-refresh-default	Default SOA refresh
soa-refresh-default=10800
# soa-retry-default	Default SOA retry
soa-retry-default=3600
  • Restart
$ /etc/init.d/pdns restart
  • Test
$ curl -v -H 'X-API-Key: changeme' http://localhost:8081/

Installing

  • Clone the repository
git clone https://github.com/xbgmsharp/yapdnsui
cd yapdnsui
  • Install dependencies
$ npm install
$ bower install
  • Start the application
$ npm start

Or manually, you can define an IP and the PORT by using environment variables.

$ HOST=127.0.0.1 PORT=8080 DEBUG=yapdnsui node bin/www

Note : yaPDNSui use a sqlite database to store PowerDNS instances details. You can access the PowerDNS server manage interface using the menu on the right.

Test using Docker

You can try yaPDNSui using Docker. Please refer to Docker.md

Secure yapdnsui

For security reasons, you may want to run a webserver (like Apache or Nginx) in front of your PowerDNS webserver as a reverse proxy using SSL. As a best pratice, it is recommended to apply use SSL for the traffic between the end-user and the application.

You can read this HOWTO Monitoring.md for further details.

For security reasons, you probably want to use the same webserver for authentication purpose.

You can read this mod_auth_ldap - Apache HTTP Server

You might want to use a SSL connection and authenticate your co-workers using the internal LDAP or database server of your company intranet.

Contributing to yapdnsui

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
  • Fork the project
  • Use a specific branch for your changes (one bonus point if it's prefixed with 'feature/')
  • write tests, doc, commit and push until you are happy with your contribution
  • Send a pull request
  • Please try not to mess with the package, version, or history

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program comes without any warranty.

Credits