SynologyDDNSCloudflareMultidomain is a free, open source document management & e-signatures project written in PHP and released under MIT. It has 538 GitHub stars, 80 forks and 16 open issues, and was last pushed 6 months ago. On this registry it ranks #17 of 18 tracked projects in Document Management & E-Signatures, with 5 head-to-head comparisons available.

What is SynologyDDNSCloudflareMultidomain?

SynologyDDNSCloudflareMultidomain is a PHP-based dynamic DNS provider agent that adds Cloudflare support to the Dynamic DNS section of Synology DSM and SRM, built for Synology NAS and router owners who keep their own domains on Cloudflare and need those records to follow a changing IP address.

What it is

SynologyDDNSCloudflareMultidomain is an open-source service provider plugin for the Dynamic DNS feature found in Synology DSM and SRM under Network Center. It is written in PHP, released under the MIT licence, and installs a Cloudflare entry into a list of DDNS providers that Synology ships and maintains itself. The agent talks to Cloudflare API v4 and updates the DNS records that belong to the account and zones it is given. The repository also points to a newer native rewrite in Kotlin, KTSynologyDDNSCloudflareMultidomain, from the same author.

The concrete problem it solves is that Synology devices do not offer a working Cloudflare option out of the box, and the provider entry can disappear again after a DSM or SRM update — the README documents this as a known issue. Without the agent, an administrator with a dynamic address has to log in to Cloudflare and edit A and AAAA records by hand every time the connection changes. The project replaces that manual step, and extends it past the usual single-host case: it handles single domains, multidomains, subdomains and regional domains such as dev.my.domain.com.au, with hostname lengths up to 256 characters.

Key capabilities

  • Adds Cloudflare as a selectable provider inside Synology DSM and SRM Network Center > Dynamic DNS.
  • Supports single domains, multidomains, subdomains and regional domains, using the README example dev.my.domain.com.au.
  • Autodetects and updates both IPv4 and IPv6 addresses, writing A and AAAA records in a dual-stack setup.
  • Allows hostnames up to 256 characters, beyond the shorter limits of the stock provider list.
  • Uses Cloudflare API v4 with optimized requests, and works with a scoped API token rather than the Global API key.
  • Requires only three token permissions: Zone > Zone.Settings > Read, Zone > Zone > Read, and Zone > DNS > Edit.
  • Installs through an automated script run over SSH or through Task Scheduler, and ships a debug script for troubleshooting.

Who uses it and how

  • Home and small-office NAS owners on a dynamic residential or business line, who need A and AAAA records on Cloudflare kept current automatically.
  • Administrators running several zones or nested subdomains from one device, since multidomain and subdomain handling is the point of the project.
  • SRM router users, who install it from a Busybox SSH environment where vi is the only available text editor.
  • Users who keep Cloudflare proxying enabled on their records, which the README notes is optional but hides the origin IP.
  • Accounts that run into the documented Cloudflare API free domains limitation, which the troubleshooting section addresses directly.

Getting started

Installation is done by running the automated installation script over SSH on the Synology device, or through the Task Scheduler method documented in the README. Full instructions, including the required Cloudflare credentials and DNS record setup, are on the documentation site at https://mrikirill.github.io/SynologyDDNSCloudflareMultidomain/.

How it compares

No set of paid products is named in the available facts, and no directly comparable DDNS agent is named either, so this project stands alone in this registry. Its only stated alternative is the author's own Kotlin rewrite, which offers the same Cloudflare-for-Synology purpose in a different runtime.

When to use it — and when not to

This is a focused agent, not a hosted service: a self-hoster supplies the Synology device, root SSH access, a Cloudflare API token with the three stated permissions, and DNS records created in advance, and must repeat the installation if a DSM or SRM update drops the provider entry. Anyone without a Synology NAS or router, or without administrative access to one, should not pick it, and anyone already committed to the Kotlin version should start there instead. The README is practical but has a substantial troubleshooting section and 16 open issues, so expect to consult the documentation site before a first working setup.

project readme (upstream, from github) — read inline

Synology Dynamic DNS with Cloudflare for both multidomains and subdomains

PHP Unit Tests

Documentation website: https://mrikirill.github.io/SynologyDDNSCloudflareMultidomain/

Sponsor

📢 Check out the new native version of this agent, written in Kotlin -> KTSynologyDDNSCloudflareMultidomain

Table of contents

Features

  • Synology Integration: Adds Cloudflare support to Synology DSM and SRM Network Center > Dynamic DNS (DDNS).
  • Comprehensive Domain Support: Supports single domains, multidomains, subdomains, and regional domains (e.g., dev.my.domain.com.au).
  • Dual Stack: Autodetects and updates both IPv4 and IPv6 addresses.
  • Easy Installation: Automated installation script via SSH or Task Scheduler.
  • Modern API: Based on Cloudflare API v4 with optimized requests.
  • Extended Capabilities: Supports up to 256 characters for hostnames.

Before you begin

Before starting the installation process, make sure you have (and know) the following information, or have completed these steps:

  1. Cloudflare credentials:

    a. Know your Cloudflare account username (or register for an account if you're new to Cloudflare); and

    b. Have your API key - no need to use your Global API key! (More info: API keys).

    image

    c. Create a API key with following (3) permissions:

    Zone > Zone.Settings > Read
    Zone > Zone > Read
    Zone > DNS > Edit

    The affected zone resources have to be (at least):

    Include > All zones from an account > ``

  2. DNS settings:

    Ensure the DNS A record(s) for the domain/zone(s) you wish to update with this script have been created (More information: Managing DNS records).

    Case for if IPv6 is available (check via https://api6.ipify.org), you can create an AAAA record for the domain/zone(s) you wish to update with this script.

    Your DNS records should appear (or already be setup as follows) in Cloudflare:

    (Note: Having Proxied turned on for your A records isn't necessary, but it will prevent those snooping around from easily finding out your current IP address)

    image

  3. SSH access to your Synology device:

If you haven't setup this access, see the following Synology Knowledge Base article: How can I sign in to DSM/SRM with root privilege via SSH?

  1. SRM users: Knowledge of vi:

vi is the only text editor available within the Busybox environment available at the SSH command line on devices running SRM.

For assistance with vi commands, see: Basic vi commands

How to install

Method 1: via Task Scheduler (Recommended - No SSH required)

  1. Open Control Panel > Task Scheduler.
  2. Click Create > Scheduled Task > User-defined script.
  3. In the General tab:
    • Task: Install Cloudflare DDNS
    • User: root (Important!)
    • Uncheck "Enabled" (we only need to run this once).
  4. In the Task Settings tab:
    • Run command:
      wget https://raw.githubusercontent.com/mrikirill/SynologyDDNSCloudflareMultidomain/master/install.sh -O /tmp/install.sh && bash /tmp/install.sh
      
  5. Click OK.
  6. Select the newly created task and click Run.
  7. Once the task has finished (you can check via Action > View Result), you can delete the task.

Method 2: via SSH

  1. SSH with root privileges on your supported device:

    a. For DSM Users:

    Navigate to Control Panel > Terminal & SNMP > Enable SSH service

    b. For SRM users:

    Navigate to Control Panel > Services > System Services > Terminal > Enable SSH service

    image

  2. Connect via SSH: Connect to your supported device via SSH and execute command

  • 🆕 For DSM Users

    wget https://raw.githubusercontent.com/mrikirill/SynologyDDNSCloudflareMultidomain/master/install.sh -O install.sh && sudo bash install.sh
    
  • 🆕 For SRM Users Note: Ensure you are connected as root in your SSH session

    wget https://raw.githubusercontent.com/mrikirill/SynologyDDNSCloudflareMultidomain/master/install.sh -O install.sh && sudo bash install.sh
    

    Note: For SRM users, you must connect to your device as root. No other username will allow these commands to run. Don't forget to deactivate SSH (step 1) if you don't need it. Leaving it active can be a security risk.

Configure DDNS (Required for both methods)

Update your DDNS settings:

 a. *For DSM Users:* Navigate to __Control Panel > External Access > DDNS__ then add new DDNS

 b. *For SRM users:* Navigate to __Network Centre > Internet > QuickConnect & DDNS > DDNS__ and press the Add button:

Add/Update the DDNS settings screen as follows:

* Service provider: Select Cloudflare
* 🆕Hostname: this field is not used anymore, you can put any value here
* Username:

For a single domain: mydomain.com For multiple domains: subdomain.mydomain.com|vpn.mydomain.com 🆕(ensure each domain is separated: |)🆕

    __Note: there is a 256-character limit on Hostname input__
* Password: Your created Cloudflare API Key

![image](https://github.com/mrikirill/SynologyDDNSCloudflareMultidomain/blob/master/docs/example3.png)

Finally, press the test connection button to confirm all information is correctly entered, before pressing Ok to save and confirm your details.
  1. You're done! Optional, if you're happy with this script you could buy me ☕ or 🍺 here -> Sponsor

Troubleshooting and known issues

Cloudflare API free domains limitation

Cloudflare API doesn't support domains with a .cf, .ga, .gq, .ml, or .tk TLD (top-level domain)

For more details read here: https://github.com/mrikirill/SynologyDDNSCloudflareMultidomain/issues/28 and https://community.cloudflare.com/t/unable-to-update-ddns-using-api-for-some-tlds/167228/61

Response example:

{
  "result": null,
  "success": false,
  "errors": [
    {
      "code": 1038,
      "message": "You cannot use this API for domains with a .cf, .ga, .gq, .ml, or .tk TLD (top-level domain). To configure the DNS settings for this domain, use the Cloudflare Dashboard."
    }
  ],
  "messages": []
}

Connection test failed or error returned

This will manifest as either 1020 error; or the update attempt not showing in your Cloudflare Audit logs.

That generally means you may not have entered something correctly in the DDNS screen for your domain(s).

Revisit Before you begin to ensure you have all the right information, then go back to Step 4 in How to install to make sure everything is correctly entered.

Handy hint: You can also check your Cloudflare Audit logs to see what - if anything - has made it there with your API key (More information: Understanding Cloudflare Audit Logs). Updates using the API will appear in the Audit logs as a Rec Set action.

Cloudflare no longer listed as a DDNS provider after DSM or SRM updates

After system updates to either Synology DSM or

readme truncated — read the full docs on github

Frequently asked questions

Is SynologyDDNSCloudflareMultidomain free to use?

SynologyDDNSCloudflareMultidomain is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does SynologyDDNSCloudflareMultidomain do?

Synology DDNS Cloudflare service provider with multidomains and subdomains

What is SynologyDDNSCloudflareMultidomain written in?

SynologyDDNSCloudflareMultidomain is primarily written in PHP. Its source is publicly available at https://github.com/mrikirill/SynologyDDNSCloudflareMultidomain, and it has 538 GitHub stars.