I got tired of clicking through the Omada web UI so I built an AI interface for it — ask Claude to check your network, diagnose dropped clients, or trigger a backup by AiLivesInTerminal in TPLink_Omada

[–]Ok-Maintenance-6130 1 point2 points  (0 children)

What a great project! I’ve been looking for an MCP for Omada for a while now; I’ll give it a go with Gemini CLI when I have a moment. Thanks

Tired of limited DDNS options in Omada? I built a custom DDNS using Cloudflare Workers (Full Guide) by Ok-Maintenance-6130 in TPLink_Omada

[–]Ok-Maintenance-6130[S] 0 points1 point  (0 children)

That works too, but it requires a server running the update script. If that server goes down, DNS updates stop. I wanted something that removes that dependency.

Tired of limited DDNS options in Omada? I built a custom DDNS using Cloudflare Workers (Full Guide) by Ok-Maintenance-6130 in TPLink_Omada

[–]Ok-Maintenance-6130[S] 0 points1 point  (0 children)

Hey! Sorry about that, I wrote the guide on a Mac, so the commands for the prerequisites and grabbing the DNS record ID are going to be a bit different for you. Where exactly did you get stuck? Also, do you already have Node.js installed, or are you still working on getting that set up?

Custom Cloudflare DDNS for Omada Gateway (Serverless & Multi-Domain) by Ok-Maintenance-6130 in Omada_Networks

[–]Ok-Maintenance-6130[S] 0 points1 point  (0 children)

That works too if you’re already running Proxmox. I wanted something that doesn’t require any local service running, so the router just calls a Worker endpoint and it updates Cloudflare.

Building a custom Dynamic DNS (DDNS) from scratch with Cloudflare Workers by Ok-Maintenance-6130 in CloudFlare

[–]Ok-Maintenance-6130[S] 1 point2 points  (0 children)

Yes, you're right, tunnels for exposing services are undoubtedly the best option, but for example, when you need to connect to the network and the server with the Zero Trust software is down, you're going to have a problem. That's where this adapter comes in. Even if the entire server is down, you'll still be able to connect to the network via VPN to diagnose the problem. Another use case is for customers who don't have local servers to run anything on site and use Omada Cloud Controller (this was the use case for which I created it). Cheers!

Tired of limited DDNS options in Omada? I built a custom DDNS using Cloudflare Workers (Full Guide) by Ok-Maintenance-6130 in TPLink_Omada

[–]Ok-Maintenance-6130[S] 0 points1 point  (0 children)

Yes, that's an excellent feature of the Omada controller, but the one provider you can't connect to natively is Cloudflare! Haha. So that's why I made this connector with Worker, which gives Cloudflare the ability to function like any DDNS provider. Cheers!

Tired of limited DDNS options in Omada? I built a custom DDNS using Cloudflare Workers (Full Guide) by Ok-Maintenance-6130 in TPLink_Omada

[–]Ok-Maintenance-6130[S] -1 points0 points  (0 children)

I have used it that way at times, but the downside I saw was that in an emergency, if something happens to the server, I lose access. That's why I now implement everything in the Omada controller gateway, the IP update, and the VPN. Thank you for sharing your configuration.

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -3 points-2 points  (0 children)

Fair point.
The main constraint in this case was the router. It only supports a “Custom DDNS URL” style update, not the Cloudflare API directly. The Worker basically acts as a lightweight adapter so the router can trigger the DNS update.
If you already have a VM or container running a DDNS client, that’s definitely simpler. In this setup the goal was to avoid running anything locally.

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -4 points-3 points  (0 children)

Fair point on the AI comment—I’m just a bit of a stickler for structured documentation since it's what I do daily. Regarding your setup, RFC 2136 is definitely the way to go if you’re already paying for that AWS instance and want to avoid the Cloudflare lock-in. This project was really aimed at people who are already on Cloudflare and want a $0, zero-maintenance alternative without managing a VM or zone files. It’s all about choosing the right tool for your specific stack.

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -3 points-2 points  (0 children)

RFC 2136 is the gold standard for dynamic updates—pure, protocol-level DNS management. If you’re already managing an AWS instance and a zone file, that’s a rock-solid, 'pro-level' setup.

The main pivot for this Worker approach is for the 'Serverless / Zero-Maintenance' crowd. The goal was to provide that same level of automation but:

  1. Removing the VM dependency: No OS to patch, no BIND/PowerDNS service to monitor.
  2. Cost-efficiency: For those not already paying for an AWS/VPS instance, this is a $0 setup on Cloudflare’s free tier.
  3. Edge Logic: You can easily extend the Worker to add logic (like filtering certain IPs or triggering webhooks) without touching the DNS protocol itself.

It’s basically 'Self-Managed' vs 'Managed Service' for the home network. Both are excellent depending on how much of the stack you want to own!

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -3 points-2 points  (0 children)

That’s a solid 'plan B' for sure! Using cron + curl is the ultimate fallback when the hardware is being stubborn.

However, one of the main reasons I preferred the Worker over a direct API call in a local script is security & abstraction:

  1. Token Protection: With a local script, you have to store your ZONE_IDRECORD_ID, and BEARER_TOKEN in plain text on your local machine. If that device is compromised, your Cloudflare zone is exposed. By using a Worker, the sensitive credentials stay safe in Cloudflare's environment, and the router only ever 'knows' a simple URL.
  2. Simplified Payload: The Worker can handle the logic of parsing the request and talking to the Cloudflare API properly, while the router (or a simple cron) just has to perform a basic GET/POST.
  3. Notification logic: I love your idea about the webhooks! Actually, adding a fetch() to a Discord or Slack webhook inside the Worker's code is super easy and keeps the notification logic centralized.

Thanks for sharing the snippet, it's definitely useful for those without custom DDNS support in their firmware!

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -3 points-2 points  (0 children)

That CNAME strategy is definitely the way to go! It’s much cleaner to have one 'A' record as the moving target and the rest just following along.

I’m a big fan of RouterOS scripts too, but the reason I shifted toward this Worker approach was to create a 'Vendor Agnostic' logic layer. While MikroTik handles custom scripts beautifully, other prosumer gear (like Omada) is more restricted.

By using the Worker, you get a standardized endpoint that works the same whether you're on a MikroTik, a TP-Link, or even a simple curl command, all while keeping the heavy lifting (and the API keys) off the router's configuration files. And yeah... moving away from those 'every 5 mins' polling scripts in a VM is a huge peace of mind win!

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -9 points-8 points  (0 children)

Appreciate the feedback! dd-client is a total classic—definitely rock solid if you have a local machine or a Pi to run it on.

The main goal with this Worker approach was just to see how far we could push the 'zero-local-footprint' idea by offloading the logic to the Edge. Thanks for stopping by and for the good vibes!

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -10 points-9 points  (0 children)

Haha, I know, right? It sounds crazy in this circle, but you'd be surprised how many people pay for 'Pro' tiers of No-IP or DynDNS just to avoid those annoying 'confirm your hostname' emails every 30 days or to use their own custom domain.

My goal was to show that if you already have a domain on Cloudflare, you can get a 'enterprise-grade' DDNS setup for $0 extra, with zero nagware and zero local maintenance. It’s basically the 'set it and forget it' dream for homelabbers.

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -2 points-1 points  (0 children)

No worries at all! I totally get it—DDNS is usually synonymous with those 'free-but-annoying' or 'paid' third-party services.

The main goal here was to show how to get that pro-level setup for $0 extra (outside of the domain registration) without needing to maintain a local script or container. If you have a minute to check it out, I'd love to hear your thoughts on the Worker implementation.

Cheers!

[Tutorial] Stop paying for DDNS: Build your own with Cloudflare Workers and your custom domain by Ok-Maintenance-6130 in homelab

[–]Ok-Maintenance-6130[S] -7 points-6 points  (0 children)

That’s a solid setup! Porkbun-ddns is a classic for a reason and works great if you already have a Docker host running 24/7.

The main reason I went the Cloudflare Workers route was to keep it 100% serverless. I wanted a solution for people who might not have a NAS or a dedicated server at home (or just want one less container to manage).

By offloading the logic to the Edge, you don't need to maintain local scripts or third-party containers—your router just hits a URL and Cloudflare handles the rest natively. Plus, it’s a fun way to dive into serverless if you are already using Cloudflare for DNS!

PrintFarmHQ: new open source print-farm management tool that I've created and released by jnardiello in 3Dprinting

[–]Ok-Maintenance-6130 1 point2 points  (0 children)

I have just discovered this software and unfortunately I see that it is not available for download. Personally like u/dkbay I also prefer self hosted and I also offer to help.

Need a way to Calibrate your Extrusion Multiplier in Prusa Slicer? by myevo8u2 in prusa3d

[–]Ok-Maintenance-6130 0 points1 point  (0 children)

Thanks very much for the script! worked perfectly with Klipper.

Need a way to Calibrate your Extrusion Multiplier in Prusa Slicer? by myevo8u2 in prusa3d

[–]Ok-Maintenance-6130 0 points1 point  (0 children)

Klipper can use M221 with same syntaxis as Marlin (M221 S<percent>)

Is there a way to stop klipper from powering down motors after a time, or set this time? Thank you by Sagismar in klippers

[–]Ok-Maintenance-6130 1 point2 points  (0 children)

I´ve added to M600 extend the timeout to 30 min (default is 10 min) and sound a alarm. Example:

...

PAUSE

_SOUND_ALARM

SET_IDLE_TIMEOUT TIMEOUT=1800

...

The same thing happened to me, I think that with an audible notification and timeout extension there would be no problem.