Running Virtual Instances
=========================

It may be advantageous to run multiple separate PowerDNS installations
on a single host, for example to make sure that different customers
cannot affect each others zones. PowerDNS fully supports running
multiple instances on one host.

To generate additional PowerDNS instances, create a ``pdns-NAME.conf``
in your configuration directory (usually ``/etc/powerdns``), where
``NAME`` is the name of your virtual configuration.

Following one of the following instructions, PowerDNS will read its
configuration from the ``pdns-NAME.conf`` instead of ``pdns.conf``.

Starting virtual instances with Sysv init-scripts
-------------------------------------------------

Symlink the init.d script ``pdns`` to ``pdns-NAME``, where ``NAME`` is
the name of your virtual configuration.

.. warning::
  ``NAME`` must not contain a '-' as this will confuse the script.

Internally, the init script calls the binary with the
:ref:`setting-config-name` option set to ``name``,
setting in motion the loading of separate configuration files.

When you launch a virtual instance of PowerDNS, the pid-file is saved
inside :ref:`setting-socket-dir` as ``pdns-name.pid``.

.. warning::
  Be aware however that the init.d ``force-stop`` will kill all PowerDNS instances!

Starting virtual instances with systemd
---------------------------------------

With systemd it is as simple as calling the correct service instance.
Assuming your instance is called ``myinstance`` and
``pdns-myinstance.conf`` exists in the configuration directory, the
following command will start the service:

.. code-block:: shell

    systemctl start pdns@myinstance.service

Similarly you can enable it at boot:

.. code-block:: shell

    systemctl enable pdns@myinstance.service