Plesk as a Primary DNS with InternetX/AutoDNS

Unleash the Power of Your Own DNS

Running your own primary Domain Name System (DNS) server can feel like taking the reins of your digital presence. It offers granular control and a deeper understanding of how the internet connects users to your services. When you pair a powerful control panel like Plesk with a robust DNS provider like InternetX/AutoDNS, you get a professional-grade setup that ensures reliability and performance. This guide will walk you through the essential steps to configure Plesk as your primary DNS server while using AutoDNS as a secondary, or „Hidden Primary,“ service.


Part 1: Laying the Groundwork in Plesk

Before you can hand off your DNS zones to AutoDNS, you need to get your Plesk server in order. This involves telling Plesk which nameservers are authoritative for your domains.

1. Fine-Tuning Your DNS Template

First, log into your Plesk server and navigate to the global DNS settings. This is where you’ll set up a template that will apply to all new domains you create.

  • Location: Tools & Settings => DNS Settings => DNS Template

Here, you’ll need to adjust the NS (Nameserver) records. You will be adding the nameservers provided by InternetX/AutoDNS. These act as the secondary servers that will mirror your primary Plesk DNS.

  • <domain>. NS b.ns14.net.
  • <domain>. NS c.ns14.net.
  • <domain>. NS d.ns14.net.

Crucially, don’t forget to include the nameserver for your own Plesk instance. This is your primary server!

  • <domain>. NS my-awesome-ns.xyz.

Important: You must use the fully qualified domain name (FQDN) of your server, not its IP address, for the NS record.

2. Setting the Primary Nameserver and SOA Record

Still within the DNS template, you need to explicitly define your Plesk server as the primary source of truth for your DNS zones.

  • Under the „Zone Settings Template“ tab, set the „Primary Nameserver“ to your server’s hostname: my-awesome-ns.xyz.

You may also want to review the SOA (Start of Authority) record settings. The SOA record contains important administrative information about the zone, such as the serial number and refresh timers. Some registrars require a specific format for the SOA serial number, which you can often adjust here.

3. Authorizing the Zone Transfer

A zone transfer (specifically, an AXFR) is the process by which your secondary nameservers (AutoDNS) will copy the DNS records from your primary server (Plesk). For this to happen securely, you must explicitly grant them permission.

  • Navigate to the „Transfer Restrictions Template“.
  • Add the IP addresses for the AutoDNS nameservers you added earlier. These are currently:
    • 217.160.113.32 (b.ns14.net)
    • 195.34.161.195 (c.ns14.net)
    • 74.208.164.110 (d.ns14.net)

Critical Step: InternetX/AutoDNS uses a central server to perform the actual zone transfers. You must also add its IP address to the allow list:

  • 62.116.132.5

Without this final IP, the connection will be refused, and your setup will fail.


Part 2: Configuring AutoDNS

With Plesk now ready to serve, it’s time to head over to your AutoDNS account and tell it where to pull its information from.

1. Setting Up Your Domain’s DNS Zones

In your AutoDNS dashboard, navigate to the „DNS Zones“ for the domain you’re configuring.

2. Engaging „Hidden Primary“ Mode

Select the „Nameserver“ tab. Here, you’ll change the mode to „Hidden Primary.“ This is a powerful feature that tells AutoDNS that while its nameservers will be the ones publicly listed for your domain, the actual „master“ records are held secretly on another server—your Plesk server.

Now, list the nameservers exactly as you did in the Plesk template, but with one key difference: replace a.ns14.net with your own Plesk server’s hostname (my-awesome-ns.xyz in our example).

3. Initiating the First Zone Transfer

As soon as you save these settings, AutoDNS will attempt to perform a zone transfer from your Plesk server. If it succeeds, congratulations! If not, the most common culprit is a firewall.

  • Firewall Check: Ensure that your firewall (on the Plesk server and at your hosting provider level) allows incoming TCP connections on port 53 from the AutoDNS transfer IP (62.116.132.5). While standard DNS lookups use UDP port 53, zone transfers require the more reliable TCP protocol.

You can run a quick check from any command line to see if your nameserver is responding correctly:
dig @my-awesome-ns.xyz your-domain.xyz -t NS

This command asks your Plesk server directly for the NS records of your domain. It should return the list of AutoDNS servers and your own.

4. Verifying the Records

Once the transfer is successful, refresh the page in AutoDNS. You can now switch to the „AXFR“ tab. This will display a complete copy of the DNS records it just pulled from your Plesk server. Carefully compare these entries with what you have in Plesk to ensure everything matches perfectly.


Final Step: Going Live

Once you’ve confirmed that Plesk and AutoDNS are in sync, you have one last task. You need to officially tell the domain registry about your new nameserver setup.

In AutoDNS, go to the domain’s main configuration page (not the DNS Zones section) and find the „Nameserver“ tab. Enter the exact same set of nameservers you just configured in the Hidden Primary settings.

Save your changes. This updates the domain at the registry level. And with that, you’re done!

Troubleshooting Common Errors

If you encounter an error like „ERROR: 118 Inconsistent set of NS RRs (IP, NS host names)“, it’s a clear signal that there’s a mismatch. The error means that the nameservers you are trying to assign to the domain at the registry do not match the NS records found within the DNS zone itself.

To fix this, meticulously check that the NS records in your Plesk DNS template are identical to the nameservers you’ve set in AutoDNS’s Hidden Primary configuration. Any small typo can cause this error. After making corrections, you may need to re-initiate the zone transfer and try saving the domain’s nameservers again.

Using centos 6 (with Plesk) after end of life (EOL)

If you are in need to install some software on a (very old) system, these may helps:
First of all use an archive version of plesk packaged:

plesk installer --source autoinstall-archives.plesk.com

Furthermore use need to update the source of your system packaged. This is a very good blog post about that: https://gcore.de/en/help/linux/centos6-new-repo-url-after-eol.php Thanks!

Just to be clear: Update as soon as possible to a modern system!

Windows 11 AutoStart Apps delays very long after boot

If you have the problem that after a restart you have to wait 1 or 2 minutes before the systems starts the AutoStart Apps/Programs, you may have success with this method.

Add/modify your registery with these values

Most likely, you have to create these keys, since they do not exist by default.

„WaitForIdleState“ seems to be the reason for the issue. Somehow, the system will wait for an idle state before continuing to start the Apps. Depending on your system configuration, it can take a while until this happens 🙂

Increasing UI size in Adobe After Effects

  • Open a project
  • Press Ctrl+F12 to open the Console Panel
  • Switch to the Debug Database View
  • Type „Font“ in the search field to find „AdobeCleanFontSize
  • Change the value
  • Restart the App

Second Method

  • In the search box on the taskbar, type the name of the program or app you want to troubleshoot.
  • Select Open file location.
  • Select Properties, and then select the Compatibility tab.
  • Adjusting the settings Compatibility tab
    • Override High DPI Scaling Behavior
    • Select „System“ from the drop-down list

Plesk with Strapi 4 Node.js

To use Strapi on a Plesk server you will need an app startup file. This is one which is working for me: [server.js]

// @see https://docs.strapi.io/developer-docs/latest/development/typescript.html#start-strapi-programmatically
const strapi = require('@strapi/strapi');
const app = strapi({ 
	distDir: './dist',
	autoReload: false,
	serveAdminPanel: true,
}).start();

The „distDir“ parameter is needed when using TypeScript.

If you want, you can try to enable the „autoReload“ feature. However for me it did not worked correctly since there does not seem a parent process to process the reload event.

Increase Font Size of Folder and Message List in Thunderbird

After getting an new 4k monitor you may wounder how to adjust the font setting of Thunderbird. May the font is a little bit to small. So you will go and search for the right setting. But there isn’t one in the UI. You need to use the configuration editor. (about:config). So open Options, scoll down to the end and open the „Config Editor“.
Now you can adjust this setting:

layout.css.devPixelsPerPx

Per default it is set to -1. Which means „use the system settings“.
But if you do not want to adjust the system settings for some reasons you can override it.
A value of 1.5 will scale the display by 150%. A value of 2.0 by 200%.
Find the setting you like 🙂

Typo3 Site configuration – .html Extension for Routes

Since Typo3 Version 9 you don’t longer need an extention to rewrite urls. All you need is a site configuration. The basic setup can be done with the UI. But at least for me an important setting isn’t set as default. The routes are servered withouth the .html extention.

How ever it’s very easy to extend this setting via a the config.yaml file. You’ll find this file at typo3conf/site/<name>. Just append these settings and you are fine:

...
routeEnhancers:
  PageTypeSuffix:
    type: PageType
    default: '.html'
    index: 'index'
    map:
      '.html': 0

Visual Studio, Xamarin and Debug an APP

While developing an iOS-App with Visual Studio and Xamarin you may get this message:

Visual Studio cannot start the application automatically because
it was signed with a Distribution provisioning profile. Please start it
by tapping the application icon on the device

Boom! And you are not able to debug you App. But hold on … there is a fix.

First of all ensure that have you selected the correct Singing Identity in you iOS project setting iOS Bundle Signing. It should be Developer (Automatic) and Provisioning Profile should be Automatic as well.

Then check you Certificates and Provisioning Profiles in you Apple Developer Console. Ensure that you have a correct Identifier App ID! And the most important thing … Ensure there is a Development Provisioning Profile which includes the App ID. You can use a wild card or explict one.

Then download the profile, import it to you Mac OS and clean you build. Now it should work!

Typo3 Add a Google Breadcrumb Rich Card

If you like to improve the search experience of you website you may want to add a rich card. One of these rich cards are the breadcrumbs. First, you need to decide which format you like: microdata or JSON-LD.

These snippets will generate a microdata that you can also use as your standard breadcrumb:

lib.richcard_breadcrumb {
 special = rootline
 special.range = 1 | 7
 wrap = <ol itemscope itemtype="http://schema.org/BreadcrumbList"> | </ol>

 1 = TMENU
 1 {
   NO.ATagParams = itemprop="item"
   NO.allWrap =<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">|</li>
   NO.stdWrap.wrap = <span itemprop="name">|</span>
   NO.after.cObject = COA
   NO.after.cObject {
    5 = TEXT
    5.dataWrap = <meta itemprop="position" content="{register:count_MENUOBJ}|" />
   }
 }
}

If you do not want to show a breadcrumb or like the JSON-LD more just use this code:

lib.richcard_breadcrumb = HMENU
lib.richcard_breadcrumb {
 special = rootline
 special.range = 1 | 7 
 wrap = { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": | ] }
 1 = TMENU
 1 { 
  NO.allWrap = [ || ,| 
  NO.doNotLinkIt = 1
  NO.stdWrap.wrap = { "@type": "ListItem", "item": { | }
  NO.stdWrap.cObject = COA
  NO.stdWrap.cObject {
   10 = TEXT
   10 {
    stdWrap.typolink.parameter.field = uid
    stdWrap.typolink.forceAbsoluteUrl = 1
    stdWrap.typolink.returnLast = url
    htmlSpecialChars = 1
    wrap = "@id": "|",
   }
   20 = TEXT
   20 {
    field = title
    wrap = "name": "|"
   } 
  } 
  NO.after.cObject = COA
  NO.after.cObject {
   5 = TEXT
   5.dataWrap = ,"position": {register:count_MENUOBJ} | }
  }
 } 
}