Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
VGSources
Blog

How to Set Up Cloudflare DDNS on a Linux VPS

A practical guide to keeping Cloudflare DNS pointed at a changing Linux VPS address, including token permissions, record IDs, IPv4/IPv6 jobs, custom scripts, packaged clients, systemd timers, and troubleshooting.
Length14 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To keep a Cloudflare DNS record pointed at a VPS whose address can change, run a small updater that discovers the VPS address, compares it with the record, and calls Cloudflare only when the value differs. Create a zone-scoped API token with DNS write permission, use an A record for IPv4 or AAAA for IPv6, schedule the updater with systemd, and verify both the API response and public DNS.

What Cloudflare DDNS actually does

Dynamic DNS is an automation loop, not a special DNS record type. The updater performs four jobs:

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Determine the VPS’s current public address.
  2. Find the intended Cloudflare record and read its current content.
  3. Compare the two values and do nothing when they already match.
  4. Overwrite the record through the Cloudflare DNS API when the address has changed.

Cloudflare describes two ways to implement that loop: a script that monitors the address and pushes changes to the API, or ddclient, a third-party Perl client. A packaged client can reduce maintenance, while a custom script gives you precise control over address detection, retries, logging, and record selection.

Decide the record and proxy behavior first

Decision Use Important detail
IPv4 hostname A The record content must be an IPv4 address.
IPv6 hostname AAAA The record content must be an IPv6 address.
Both address families One A and one AAAA Run independent jobs unless your chosen client explicitly supports both families.
DNS-only service proxied: false Clients receive the origin address through DNS.
HTTP service intended to use Cloudflare proxying proxied: true Cloudflare serves as the proxy; confirm that the application and ports support this mode.

The proxied field controls proxy status. It does not select IPv4 or IPv6; address family is determined by whether the record is A or AAAA. Choose deliberately rather than treating proxying as part of IP detection.

#1 Best Overall
Sale
Gaoye Blue Light Blocking Glasses
  • BLUE LIGHT BLOCKING GLASSES: Our blue light glasses for women boast UV400 protection, blocking harmful blue rays from computer screens. With these bluelight glasses women, you can enjoy gaming, reading, or watching TV with no worries of eye strain.
  • EYE RELIEF: Our blue light glasses are engineered to reduce blurry vision or strain caused by prolonged screen time. These womens blue light glasses aid in better sleep by preventing blue light from disrupting your natural sleep cycle, helping you fall asleep faster and enjoy a more restful night's sleep, making them the perfect christmas present.
  • COMFORTABLE: Crafted from durable material, our trendy blue light glasses for woman or blue light glasses men ensure long-lasting comfort. The high-transmittance lenses accessories, gamer gifts for men, help keep your eyes relaxed. Perfect stocking stuffers, gifts for gamers men, christmas gifts for men, halloween costumes.
  • LIGHTWEIGHT: These clear blue light glasses feature a lightweight frame, meaning they’ll stay comfy for long-term wear. Perfect as blue blockers glasses for women or mens blue light glasses, these non-prescription fake glasses for men can be worn throughout the day. The blue light blocking glasses women feature polycarbonate HD lenses, which are anti-reflective and restore true color.
  • WORRY-FREE PURCHASE: If you experience any issues, our support team is ready to assist you quickly. These are the perfect costume glasses for cosplay dressing up.

Prerequisites on the VPS

  • A Cloudflare zone authoritative for the hostname you want to update.
  • Root or sudo access on a Debian- or Ubuntu-family VPS.
  • curl, a JSON parser such as jq, and the ip command from the normal networking tools.
  • A decision about whether the updater should write A, AAAA, or both.
  • A private location for the token, such as a root-owned environment file with mode 600.

A VPS normally has a stable public address, but an address can change after provider maintenance, reprovisioning, or network changes. The updater should therefore be safe to run repeatedly and should write only after a comparison.

Create a narrowly scoped Cloudflare credential

  1. Open the Cloudflare dashboard’s API Tokens area and choose the option to create a custom token.
  2. Grant the token DNS write/edit permission (shown in Cloudflare’s permission model as DNS Write or Zone.DNS edit).
  3. Restrict the token to the single authoritative zone that contains the record. Do not use a global API key or a token covering every zone.
  4. Copy the token once and store it in a root-readable file or a protected service environment. Never place it in shell history, a Git repository, a world-readable configuration file, or ordinary log output.
  5. Record the zone ID. You will also need the DNS record ID, which is obtained after the hostname record exists.

If a token is exposed, revoke or rotate it immediately, issue a replacement with the same narrow scope, and inspect scripts, backups, and logs for copies.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create the hostname record and obtain its ID

Create the record in the selected zone before enabling automation. Use the exact fully qualified domain name (FQDN), not an assumed zone apex. For IPv4 choose A and enter the current IPv4 address; for IPv6 choose AAAA and enter the current IPv6 address. Set the proxy toggle to the mode chosen above.

Cloudflare’s DNS API supports list, create, overwrite (PUT), patch, and delete operations. The updater normally needs list and overwrite. TTL 1 means automatic; ordinary explicit TTL values range from 60 through 86,400 seconds, with a lower minimum available for Enterprise zones.

Resolve the record ID by querying the exact name and type. The result’s first matching object’s id is the value used by subsequent updates. Do not assume that a record ID is interchangeable between an A and an AAAA record.

Option 1: a controlled Bash updater

This approach is useful when you want transparent behavior and independent IPv4 and IPv6 jobs. The example obtains the address from the VPS routing table rather than trusting an arbitrary web service. That works when the address assigned to the route is the public address; if your network uses translation, substitute a trusted public-address method provided by your environment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install the required tools

sudo apt update
sudo apt install --yes curl jq iproute2

Store configuration outside the script

Create a directory and an environment file readable only by root:

Rank #2
Windex Gaming Cleaning Wipes, Pre-Moistened Wipes to Instantly Clean all Gaming Gear and Electronics, Resealable Packaging for a Freshness Lock, 25 count (Pack of 1)
  • WINDEX GAMING WIPES: effortlessly clean all your gaming gear and gaming electronics in one easy step with our new Windex Gaming Wipes
  • AMMONIA FREE: our ammonia-free formula is safe to use on all of your favorite gaming equipment like consoles, headsets, controllers, screens, keyboards, and more
  • PRE-MOISTENED WIPES: each wipe instantly removes dust, dirt, and stubborn smudges and fingerprints leaving a streak-free shine
  • ANTI-STATIC: great for cleaning and wiping down your gaming gear and electronics leaving behind no visible residue
  • COMPACT RESEALABLE PACKAGE: store your pack of Windex Gaming Wipes anywhere in your home for whenever a quick and easy wipedown is needed
sudo install -d -m 0750 /etc/cloudflare-ddns
sudo install -m 0600 /dev/null /etc/cloudflare-ddns/ddns.env
sudoedit /etc/cloudflare-ddns/ddns.env

Put one job’s values in the file. The token is intentionally not embedded in the script:

ZONE_ID="replace-with-zone-id"
FQDN="host.example.com"
RECORD_TYPE="A"
CLOUDFLARE_API_TOKEN="replace-with-zone-scoped-token"
PROXIED="false"
TTL="1"

For an IPv6 job, use RECORD_TYPE="AAAA". Keep the A and AAAA values in separate files or service instances so a failed IPv6 lookup cannot overwrite an IPv4 record.

Create the updater

Save this as /usr/local/sbin/cloudflare-ddns.sh and make it executable:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#!/usr/bin/env bash
set -Eeuo pipefail

CONFIG=/etc/cloudflare-ddns/ddns.env
# shellcheck disable=SC1090
source "$CONFIG"

: "${ZONE_ID:?ZONE_ID is required}"
: "${FQDN:?FQDN is required}"
: "${RECORD_TYPE:?RECORD_TYPE is required}"
: "${CLOUDFLARE_API_TOKEN:?CLOUDFLARE_API_TOKEN is required}"
PROXIED=${PROXIED:-false}
TTL=${TTL:-1}

case "$RECORD_TYPE" in
  A)
    PUBLIC_IP=$(ip -4 route get 1.1.1.1 | awk '{for (i=1; i<=NF; i++) if ($i == "src") {print $(i+1); exit}}')
    ;;
  AAAA)
    PUBLIC_IP=$(ip -6 route get 2606:4700:4700::1111 | awk '{for (i=1; i<=NF; i++) if ($i == "src") {print $(i+1); exit}}')
    ;;
  *) echo "Unsupported RECORD_TYPE: $RECORD_TYPE" >&2; exit 2 ;;
esac

if [[ -z "$PUBLIC_IP" ]]; then
  echo "Could not determine a $RECORD_TYPE address" >&2
  exit 1
fi

API="https://api.cloudflare.com/client/v4"
AUTH=(-H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" -H "Content-Type: application/json")

LIST=$(curl --fail-with-body --silent --show-error --retry 3 
  --get "$API/zones/$ZONE_ID/dns_records" 
  "${AUTH[@]}" 
  --data-urlencode "name=$FQDN" 
  --data-urlencode "type=$RECORD_TYPE")

RECORD_ID=$(jq -r '.result[0].id // empty' <<<"$LIST")
CURRENT=$(jq -r '.result[0].content // empty' <<<"$LIST")

if [[ -z "$RECORD_ID" ]]; then
  echo "No $RECORD_TYPE record found for $FQDN" >&2
  exit 1
fi

if [[ "$CURRENT" == "$PUBLIC_IP" ]]; then
  echo "Unchanged: $FQDN $RECORD_TYPE is $PUBLIC_IP"
  exit 0
fi

PAYLOAD=$(jq -n 
  --arg type "$RECORD_TYPE" 
  --arg name "$FQDN" 
  --arg content "$PUBLIC_IP" 
  --argjson ttl "$TTL" 
  --argjson proxied "$PROXIED" 
  '{type:$type,name:$name,content:$content,ttl:$ttl,proxied:$proxied}')

RESULT=$(curl --fail-with-body --silent --show-error --retry 3 
  -X PUT "$API/zones/$ZONE_ID/dns_records/$RECORD_ID" 
  "${AUTH[@]}" --data "$PAYLOAD")

if [[ "$(jq -r '.success' <<<"$RESULT")" != "true" ]]; then
  echo "Cloudflare reported an unsuccessful update" >&2
  jq -c '.errors' <<<"$RESULT" >&2
  exit 1
fi

echo "Updated: $FQDN $RECORD_TYPE $CURRENT -> $PUBLIC_IP"
sudo install -m 0750 /usr/local/sbin/cloudflare-ddns.sh /usr/local/sbin/cloudflare-ddns.sh

The script lists by exact FQDN and type, compares content, and uses a full overwrite only when needed. The JSON parser handles quoting safely, while curl retries transient transport failures and still causes a nonzero exit for an unsuccessful API response.

Run it manually before scheduling

sudo /usr/local/sbin/cloudflare-ddns.sh

Check that the output says either “Unchanged” or “Updated,” and inspect the returned error object if the command exits nonzero. A successful HTTP exchange is not proof that public DNS has already changed, so perform the DNS verification described below.

Schedule the updater with systemd

A service and timer make execution, permissions, and logs explicit. Create /etc/systemd/system/cloudflare-ddns.service:

[Unit]
Description=Update one Cloudflare DNS record
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/cloudflare-ddns.sh
User=root

Create /etc/systemd/system/cloudflare-ddns.timer:

[Unit]
Description=Run Cloudflare DDNS updater periodically

[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
Persistent=true

[Install]
WantedBy=timers.target

Five minutes is an example interval, not a universal requirement. Choose an interval that fits how quickly the address must converge and the caching behavior of your DNS record. Activate and inspect the timer:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
LISEN Cell Phone Stand Phone Holder for Desk, Office Decor Gadgets for Men
  • Ergonomic & Adjustable Design: Fight "text neck" and improve your posture. Designed for comfort, it offers an adjustable height (7.1in-8.5in) (1.4in adjustable range) and angle (5°-85°) Please note: cell phone stand is only 9 inches tall—the length of a standard pencil
  • Without blocking subtitles Perfect for office desk Tiktok Face Time Zoom video—this is the ultimate kitchen desk essential for phones! Perfect viewing experience while reducing neck back strain, A must-have for gamers streamers desk, and anyone who values both style and support!
  • Sleek & Stable Design fits Otterbox Case: Say goodbye to bent cables, tangles, and tip-overs! LISEN’s stylish adjustable desk phone holder features a built-in charging hole and smart cable management, keeping your phone secure and your workspace clutter-free cool gadgets for men
  • ANTI-SLIP DESIGN free hands: The under 10.00 items easy gadgets back and the bottom of this kitchen essentials for women are fully covered by anti-skid silicone, which LISEN stand up desk decor can provide maximum protection device from any scratches and slides
  • Your Perfect Viewing Companion:If your product arrives damaged or breaks within 365 days, reach out to LISEN for a quick and hassle-free solution. Struggling with assembly, like tightening the screw? We’ve got your back! Your experience matters to us. (Product including: phone Holder stand*1, screw*1, hexagon screwdriver*1, specification*1)
sudo systemctl daemon-reload
sudo systemctl enable --now cloudflare-ddns.timer
systemctl list-timers cloudflare-ddns.timer
sudo systemctl start cloudflare-ddns.service
sudo journalctl -u cloudflare-ddns.service -n 50 --no-pager

Use a second service and timer with a separate configuration file for an AAAA record. This avoids accidentally running an IPv4 lookup against an IPv6 record and makes failures visible per address family.

Option 2: use a packaged client

Debian’s cloudflare-ddns package

Debian documents a cloudflare-ddns(1) utility that updates a record through Cloudflare’s API and requires a token with Zone.DNS edit permission. When no command-line arguments are supplied, it can read /etc/cloudflare-ddns/config.ini. Package names, configuration keys, service units, and supported address families vary by distribution release, so read the installed manual page and inspect the unit before enabling it.

Confirm four details before relying on the package:

  • Which exact record name and type it targets.
  • How it obtains IPv4 and IPv6 addresses.
  • Where it stores the token and what file permissions it applies.
  • Whether its service or timer retries temporary network failures and emits useful logs.

ddclient

Cloudflare explicitly names ddclient as a third-party Perl client. It can be a sensible choice when your distribution already packages it and provides a tested service integration. Treat its configuration as a credential-bearing file, verify the Cloudflare-specific settings against the installed version, and check whether IPv4 and IPv6 are configured as separate records or jobs. Do not assume that a generic provider profile will select the right FQDN, record type, or proxy mode.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Verify the API result and public DNS

  1. Read the service log and confirm that the API response has success: true. A command that merely reached the API is not enough.
  2. Query the hostname from outside the VPS. For IPv4, use an A lookup; for IPv6, use an AAAA lookup. Compare the answer with the address reported by the updater.
  3. Query an authoritative server or more than one public resolver when troubleshooting. A resolver may continue returning the previous value until its cached TTL expires.
  4. If the record is proxied, remember that clients may receive Cloudflare proxy addresses rather than the origin VPS address. In that mode, test the application through its hostname and check the origin separately through Cloudflare’s dashboard or logs.

DNS caching explains why an API update and a public answer can differ temporarily. TTL 1 requests automatic TTL handling; it does not guarantee instant replacement in every recursive resolver.

Troubleshooting by symptom

Symptom Likely cause Fix
HTTP 403 or authentication error Wrong authorization format, insufficient permission, or wrong zone scope. Use Authorization: Bearer TOKEN, grant DNS write/edit permission, and ensure the token covers the zone containing the FQDN.
Record not found Incorrect zone ID, spelling, FQDN, record type, or record ID. List records by the exact name and type; do not assume the zone apex equals the hostname.
IPv4 value appears in an AAAA job, or vice versa The address lookup and record family do not match. Use an IPv4 route and A record together, or an IPv6 route and AAAA record together. Run them as separate jobs when necessary.
API says updated but DNS still returns the old value Resolver caching, an incorrect record, or an update to a different zone. Inspect the API response, verify the authoritative record, confirm the zone and FQDN, and allow the applicable TTL and cache time to pass.
Application stops working after enabling proxying The service or port is not compatible with Cloudflare proxying, or the test expected the origin address. Temporarily use DNS-only for a diagnostic comparison, then choose proxy mode only when the application path supports it.
Updater exposes the token World-readable files, shell history, debug output, or source control. Rotate the token, restrict the replacement to one zone, set configuration permissions to root-only, and remove leaked copies from logs and repositories.

Operational checklist

  • Token is custom, zone-scoped, and limited to DNS write/edit permission.
  • Record type matches the address family: A for IPv4, AAAA for IPv6.
  • FQDN, zone ID, and record ID were resolved rather than guessed.
  • Proxy mode is intentional and documented for the service.
  • Updater compares before writing and exits nonzero on API failure.
  • Secrets are stored outside source code and protected from non-root users.
  • systemd logs are monitored after boot and after a simulated address change.
  • Public DNS is checked from outside the VPS, with resolver caching considered.

Understand the API sequence before automating it

The updater’s order matters. First, send an authenticated GET request to /zones/<ZONE_ID>/dns_records with URL-encoded name and type parameters. Restricting both parameters prevents a script from accidentally selecting a different record at the same hostname. Parse the returned result array, retain the matching object’s id, and compare its content with the address you discovered.

Only a difference should trigger the overwrite request. A PUT to /zones/<ZONE_ID>/dns_records/<RECORD_ID> should include the record type, exact name, new content, TTL, and proxy setting. Supplying those fields explicitly prevents an update from silently changing the intended proxy mode or TTL. The API also offers patch and delete operations, but a DDNS loop normally has no reason to delete a record, and a full overwrite makes the desired state clear.

Rank #4
Ledagic IC+RGBW USB Powered Led Light Bar with App & Remote Control, 2 Pack
  • Easy Installation: Our gaming lights have been designed to enhance your entertainment experience. Simply position the led light bar next to your TV or game console to create a game room environment with ease. They come with USB power and a 60 inch cord for direct mounting and mobility
  • Audio Syncing & Extensive Mode: The built-in high-sensitivity music sensor allows you to sync the TV led lights to your favorite music. Lights react and move to the beat of music, film and game audio, creating an incredible immersive sound and light experience – and all without the need for an additional hub. You can choose from 64+ patterns, including strobe, illusion, jump, energy, gradient, running, chasing, fluttering mode etc. Each mode can be applied to different scenes
  • 64+ Chasing IC+RGB & W Effect: The independent control design of IC+RGB and white all-in-one multifunctional rgbw led bar lights monitor backlight allows you to easily switch the led lights for desk between IC+RGB and white to enjoy a variety of lighting effects, you can choose white lighting mode with high brightness for better illumination when working, etc. Choose IC+RGB lighting mode when you need to create an entertaining atmosphere for the light show, 16 million colours of Color changing rgb light bar let you dance to the beat and create a dynamic party atmosphere
  • Dynamic and Dimmable Lights: 1%-full brightness free brightness adjustment gives you the flexibility to adjust dimmable led light bar for room decorations or a variety of occasions
  • USB Powered: USB light bars for room can be powered by powernank, usb charger, TV, Monitor, laptop PC mainframe, making behind TV led lighting bar easy to install in any location.TV led lights are powered by the TV usb interface / PC mainframe, can be turned on/off synchronously with TV / PC

Do not make the script create a new record merely because its lookup returned no result unless you have deliberately designed and tested that behavior. A missing result usually means the zone, FQDN, type, or permissions are wrong. Failing loudly is safer than creating a duplicate hostname.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Public-address detection deserves its own test

ip route get reports the source address selected by the VPS networking stack. It is a good fit when that source address is also the address reachable from the Internet. If the VPS is behind address translation, a private source address can be returned instead. In that case, use a trusted public-address method supplied by your hosting or network environment and verify that it returns the same family as the record being updated.

Force the address family during diagnostics. An IPv4 lookup should use an IPv4 route or a client equivalent to curl -4; an IPv6 lookup should use IPv6 or curl -6. A host can have both families configured while only one is usable externally. Treat an empty or malformed result as a failed run rather than writing it to Cloudflare.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Choose the updater that fits your maintenance model

Approach Best fit Trade-off
Debian cloudflare-ddns You want a distribution-integrated utility and configuration file. Behavior, keys, service units, and family support depend on the installed release.
ddclient Your distribution already packages the third-party Perl client and its service integration. Provider syntax and IPv4/IPv6 behavior must be checked against that version.
Custom Bash and systemd You need exact record selection, custom address detection, and visible retry behavior. You own quoting, JSON parsing, permissions, and long-term maintenance.

Whichever option you choose, inspect the installed service definition before enabling it. Confirm the account that runs it, the configuration path, the interval, and whether failures return a nonzero status. A client that keeps retrying silently without useful logs is difficult to trust during an address change.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Scheduling, retries, and convergence

The five-minute timer shown above is only an example. A shorter interval can converge sooner after a provider change, while a longer interval reduces needless checks. Because the script compares first, repeated runs do not rewrite an unchanged record. The --retry 3 options cover transient HTTP failures, but they do not fix an invalid token, an incorrect zone, or a missing record; those conditions should remain visible as errors.

Persistent=true lets systemd run a missed timer after the VPS returns from downtime. It does not make DNS caching disappear. Even after a successful overwrite, recursive resolvers can retain the previous answer until their cached TTL expires. Test convergence from a network outside the VPS rather than relying only on the local resolver.

Cost and hosting prerequisites

This setup assumes that you already have a Linux VPS and a Cloudflare-authoritative zone. If you do not yet have a server, obtaining a Linux VPS is the practical prerequisite; hosting prices, included addresses, and address-change policies vary by provider and should be compared separately. The procedure itself uses standard Linux tools, a Cloudflare API token, and the DNS API workflow described here; no physical product is required.

Best Value
Sale
HUANUO FlowLift™ Dual Monitor Stand, Fully Adjustable Gaming Monitor Desk Mount for 13–32″ Computer Screens, Full Motion VESA 75x75/100x100 with C-Clamp & Grommet Base, Each Arm Holds 4.4 to 19.8 lbs
  • Compatible with Wide Screens - To ensure compatibility with the dual monitor mount, your each monitor must meet three conditions at the same time: First, computer screens size range: 13 to 32 inches. Second, screen weight range: 4.4 to 19.8 lbs. Third, the back of the monitor screen must have VESA mounting holes with a pitch of 75x75mm or 100x100mm.
  • Regarding the compatibility with desks - Your desk must meet three conditions at the same time: First, desk material: Only wooden desks are recommended, plastic or glass desks cannot be used. Second, desk thickness range: 0.59" - 3.54". Third, the bottom of the desk should not have any cross beams or panels, as this will interfere with installation. We recommend carefully checking that your desk and monitors meets all above conditions before purchasing.
  • Dual C-Clamp Hold - Worried your dual monitors might wobble or slip? Our upgraded base uses a larger platform plus a dual C-clamp structure to lock the dual monitor arm firmly to your desk. Each arm safely keeps your screens steady while you type, click and game—no shaking, no sliding, just a clean and secure setup you can trust every day. It also provides Grommet Mounting installation choice, both options ensure stable and secure fixation for your 0.59" - 3.54" desk.
  • Full-Motion Adjustment For Comfortable View - Pull the screen closer when you’re deep in a spreadsheet, push it back to watch videos, or rotate to portrait for coding — moving everything smoothly with just one hand. The monitor stand offers +85°/-50° tilt, ±90° swivel and 360° rotation. Raise your monitor up to 15.75″ to support a healthy sitting posture. Whether you’re working from home, gaming through the night, or switching between video calls and documents, getting the screens to your natural line of sight helps relieve neck, shoulder and back strain so you can stay focused longer with less fatigue.
  • Keep Your Desk Organized: By lifting both screens off the desktop, this dual monitor stand opens up valuable space for your keyboard, notebook, docking station or a simple, clutter-free work area. Built-in cable management guides wires along the arms, keeping cords out of sight and out of the way. Enjoy a tidy, modern workstation that looks as good as it feels to use.

Final verification after a real address change

After testing the first run, exercise the complete path during a controlled maintenance window if your provider allows it. Confirm that the updater notices a changed address, obtains the correct record ID, receives success: true, and logs the old and new values without printing the token. Then query the A or AAAA answer from an external resolver. If proxying is enabled, expect the public answer to represent Cloudflare rather than the origin; test the application hostname and inspect the origin separately.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Frequently Asked Questions

Do I need both an A and an AAAA DDNS job?

Only if the hostname should work over both address families. A stores IPv4 and AAAA stores IPv6; configure separate jobs unless your selected client explicitly handles both.

Can I use a global Cloudflare API key?

Do not. Create a custom API token limited to the one zone and DNS write/edit permission. A global credential grants more access than this updater needs.

Why do I need the DNS record ID?

Cloudflare’s overwrite endpoint addresses a specific record by ID. List the exact FQDN and type first, then use the matching object’s ID; an A record and an AAAA record have different IDs.

Should the record be proxied?

Set proxied: true only when the service and ports are intended to run through Cloudflare. Use DNS-only when clients must receive the origin address. Proxy mode does not choose IPv4 or IPv6.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why does the API report success while DNS still shows the old IP?

The API result confirms the write, but recursive resolvers may cache the previous value until its TTL expires. Check the authoritative record and query from outside the VPS.

What if the VPS uses NAT?

The routing table may expose a private source address rather than the public address. Replace route-based detection with a trusted public-address method from your environment and verify the result before updating.

Is a packaged client better than a script?

A packaged client reduces shell code and may include a service integration. A custom script offers more control over detection, retries, logging, and record selection. Verify version-specific behavior either way.

How should I respond to a leaked token?

Revoke or rotate it immediately, create a replacement scoped to the correct zone with DNS write/edit permission, and remove copies from shell history, repositories, backups, configuration files, and logs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Bottom Line

Cloudflare DDNS on a VPS is a small, repeatable control loop: discover the correct public address, compare it with the exact A or AAAA record, and overwrite only when it changes. A zone-scoped token, protected configuration, explicit proxy choice, separate IPv4/IPv6 handling, systemd scheduling, and external DNS verification keep that loop safe and dependable.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.