Build your own `What's My Ip` service

Tadios Abebe | Aug 16, 2025 min read

If you’ve ever struggled to find the public IP address of a server, especially when you only have CLI access, you’re not alone. There are services out there like ifconfig.me, ipify.org, and others. But personally, the problem I always face is simple: I forget their URLs when I need them, I always need to google the correct curl command.

The good news is, you don’t have to rely on third-party sites. You can build your own lightweight public IP echo service using Cloudflare Workers for free.

  • Log in to your Cloudflare account.
  • Go to Compute (Workers) -> Workers & Pages -> Create.
  • Under “Start with Hello World!”, click Get Started.
  • Give your worker a name and click Deploy.
  • Once your worker finished deploying, Go to your worker’s page (either from the deploy success screen or via Compute (Workers) -> Workers & Pages).
  • Click Edit Code, and replace the default sample with the following:
export default {
  async fetch(request) {
    return new Response(
      request.headers.get("cf-connecting-ip") + "\n",
      { headers: { "content-type": "text/plain" } }
    );
  }
}

The above code listens for requests to your worker URL, extract the client’s IP from the cf-connecting-ip header which is set by cloudflare and returns it as plain text with a new line. If you are not using cloudflare workers which are usually behind cloudflares Edge (proxy), you can try x-forwarded-for instead of cf-connecting-ip if you are hosing your serverless function behind another revers proxy such as haproxy or nginx. x-forwarded-for can contain multiple IPs separated by comma, depending on how many proxies the request went through.

  • Then Click Deploy to save your changes.
  • At this point, you can visit your worker’s default URL or run:
curl https://worker_name.username.workers.dev
  • That works, but it doesn’t solve my main issue: I always forget the URL.
  • To fix this you can assign a custom subdomain you’ll remember.
  • Go to your worker’s Settings -> Domain & Routes.
  • Click + Add -> Custom Domain.
  • Enter an easy to remember domain (for me it was ip.tadiosabebe.com).
  • The domain you used in the above step must already be managed in your Cloudflare account (which is free once you have a domain).

That’s it! Now you have your own personal “What’s My IP” service.

Try it for your self. It works in any browser: https://ip.tadiosabebe.com Or from the CLI:

curl https://ip.tadiosabebe.com
comments powered by Disqus