diff --git a/webadmin/EN/dynamicdns_template.html b/webadmin/EN/dynamicdns_template.html
index 87795fac0cfc9be0b62e85c27be2427766ab7804..fb11db40596e6677ec6381825c06b26e7440161b 100644
--- a/webadmin/EN/dynamicdns_template.html
+++ b/webadmin/EN/dynamicdns_template.html
@@ -173,6 +173,7 @@
           <label translate="yes">Authentication Token</label>: <input type="text" name="ddnscode" value="DDNS_CODE"><br><br>
           <br>
           <input type="submit" name="submitddnscancel" translate="yes" value="Cancel">
+          <input type="submit" name="submitddnshelp" translate="yes" value="Help">
           <input type="submit" name="submitddns" translate="yes" value="Continue">
         </form>
 
diff --git a/webadmin/EN/help_dynamicdns.html b/webadmin/EN/help_dynamicdns.html
new file mode 100644
index 0000000000000000000000000000000000000000..fb714d8c1be7d5112dcbefcc8e318da460e145da
--- /dev/null
+++ b/webadmin/EN/help_dynamicdns.html
@@ -0,0 +1,152 @@
+<!DOCTYPE html>
+<html lang="en">
+  <meta charset="utf-8">
+  <style>
+    body {
+        margin: 0;
+        font-family: Arial;
+        background-color: white;
+        color: black;
+    }
+
+    * {
+        box-sizing: border-box;
+    }
+
+    a, u {
+        text-decoration: none;
+        color: #72a7cf;
+        font-weight: bold;
+    }
+
+    a:visited{
+        color: #72a7cf;
+        font-weight: bold;
+    }
+
+    #headerpic {
+        width: 60%;
+        height: auto;
+        margin-right : auto;
+        margin-left : auto;
+        min-width : 220px;
+    }
+
+    .header {
+        text-align: center;
+        padding: 32px;
+    }
+
+    .headertext {
+        text-align: center;
+        font-size: 120%;
+        font-weight: bold;
+    }
+
+    .subheadertext {
+        margin-left : 10%;
+        text-align: left;
+        font-size: 110%;
+        font-weight: bold;
+    }
+
+    .subheaderports {
+        margin-left : 10%;
+        text-align: left;
+        font-size: 110%;
+        font-weight: bold;
+    }
+
+    .helptext {
+        width: 80%;
+        text-align: left;
+        font-size: 100%;
+        margin-left : 10%;
+    }
+
+    .codetext {
+        font-family: Courier;
+        width: 80%;
+        text-align: left;
+        font-size: 100%;
+        margin-left : 10%;
+    }
+
+    .portstext {
+        width: 80%;
+        text-align: left;
+        font-size: 100%;
+        margin-left : 10%;
+    }
+
+    .row {
+        display: -ms-flexbox;
+        display: flex;
+        -ms-flex-wrap: wrap;
+        flex-wrap: wrap;
+        padding: 0 4px;
+    }
+
+    .column {
+        -ms-flex: 25%;
+        flex: 15%;
+        max-width: 25%;
+        padding: 0 4px;
+    }
+
+    .column img {
+        margin-top: 8px;
+        vertical-align: middle;
+    }
+
+    @media screen and (max-width: 800px) {
+        .column {
+            -ms-flex: 50%;
+            flex: 50%;
+            max-width: 50%;
+        }
+    }
+
+    @media screen and (max-width: 200px) {
+        .column {
+            -ms-flex: 100%;
+            flex: 100%;
+            max-width: 100%;
+        }
+    }
+  </style>
+  <body>
+
+    <div class="header">
+      <a href="dynamicdns.html"><img id="headerpic" class="img-responsive" src="images/logo.png" alt="Freedombone"></a>
+    </div>
+
+    <p class="headertext" translate="yes">Dynamic DNS</p>
+
+    <p class="subheadertext" translate="yes">Authentication Token</p>
+
+    <p class="helptext" translate="yes">This is only needed if you're using FreeDNS. Otherwise you can leave it blank.</p>
+
+    <p class="subheadertext" translate="yes">FreeDNS</p>
+
+    <p class="helptext" translate="yes">On the site where you obtained your domain name set up some custom nameservers as follows:</p>
+
+    <p class="codetext" translate="no">
+      NS1.AFRAID.ORG<br>
+      NS2.AFRAID.ORG<br>
+      NS3.AFRAID.ORG<br>
+      NS4.AFRAID.ORG
+    <p>
+
+    <p class="helptext" translate="yes">On the FreeDNS site go to the "Dynamic DNS" section and make sure that "link updates of the same IP together" is set to ON.</p>
+
+    <p class="helptext" translate="yes">For your main domain name select "quick cron example" and then your authentication token is the random string on the last line between the ? and = characters.</p>
+
+    <p class="helptext" translate="yes">Your current IP address is shown at the top of the Dynamic DNS screen of the Freedombone user interface. You can use the "Mass Mod" feature at the top of the "Subdomains" part of the FreeDNS site to set all of your subdomains to that IP address.</p>
+
+    <p class="helptext" translate="yes">Select the MX entry for your main domain and change the destination to 10:mydomainname rather than 10:mail.mydomainname.</p>
+
+    <p class="helptext" translate="yes">Enter your FreeDNS login details and the authentication token on the Dynamic DNS screen of the Freedombone user interface.</p>
+
+  </body>
+</html>
diff --git a/webadmin/dynamicdns.php b/webadmin/dynamicdns.php
index 1ccb7b8c2937d42ed9abe0f54cb7e8f70507ffd3..4e2061c22206757cab9495638b900753fda11625 100755
--- a/webadmin/dynamicdns.php
+++ b/webadmin/dynamicdns.php
@@ -4,6 +4,10 @@
 
 $output_filename = "settings.html";
 
+if (isset($_POST['submitddnshelp'])) {
+    $output_filename = "help_dynamicdns.html";
+}
+
 if (isset($_POST['submitddns'])) {
     $ddns = htmlspecialchars($_POST['dynamicdns']);
     $ddns_username = htmlspecialchars($_POST['ddns_username']);