I registered fluxcast.dev for my Linux casting project (FluxCast). One apex record was enough, the rest of the subdomains were just wasting away.
Then I remembered is-a.dev. The idea of getting free subdomains through a simple GitHub PR looked so good that I decided to build my own version.
“Sounds like an evening project,” I thought.
It wasn’t.
The validation rabbit hole
First I needed proper validation. I wrote a bunch of checks using pytest. Blocking private IPs was easy with ipaddress, but catching duplicate keys in JSON was trickier, Python’s json.loads silently keeps only the last value. If I hadn’t caught that, someone could have hidden malicious records in a PR.
Production paranoia
The real fluxcast.dev landing page was already live. I was terrified of accidentally deleting it with my sync script. So I made every managed record carry the tag managed-by:fluxcast-domains. The script only touches records with this label. Everything else is invisible to it.
Of course I still managed to confuse Zone ID with Account ID in the Cloudflare dashboard. Then came the fun error: TypeError: Missing required argument: ‘ttl’. Turns out the new Cloudflare Python SDK made it mandatory.
Git strikes back
While studying is-a.dev I cloned their repo for reference… and somehow committed the entire .git folder as a submodule. On GitHub it looked completely broken. Regular git rm didn’t help. I had to rewrite history with a clean commit.
The final boss
When I finally ran the real sync, it stayed “in queue” for minutes. Turns out GitHub had a small Actions hiccup and my repo was private (private repos get lower priority). Made it public — problem solved.
Then I created a public API endpoint on raw.fluxcast.dev via GitHub Pages. Opened it in the browser and got a big red “Connection is not secure” warning. For a few scary seconds I thought the domain was hijacked. Nope — just the certificate hadn’t propagated yet, and .dev is in the HSTS preload list.
Result
Now anyone can get a free yourname.fluxcast.dev subdomain in minutes:
JSON
{
"owner": {
"username": "your-github-username",
"email": "[email protected]"
},
"records": {
"CNAME": "your-github-username.github.io"
}
}
Enter fullscreen mode Exit fullscreen mode
No accounts, no long reviews, no “is your project developer-related enough?” nonsense. As long as it’s not harmful — you’re good!
The registry is very fresh. If you want a subdomain, the guide is here: https://sub.fluxcast.dev
Repo: https://github.com/IlyaP358/fluxcast-domains
Would love your feedback, bug reports, or ideas how to make it better. =]
답글 남기기