If you have a domain managed by Cloudflare, you can use Cloudflare Workers to get Nostr NIP-05 verification.
1. Create a Service
export default {
  async fetch(request) {
    const data = {
      "names": {
        "<username>": "<hex key>"
      }
    };
    const json = JSON.stringify(data, null, 2);
    return new Response(json, {
      headers: {
        'Access-Control-Allow-Origin': '*',
        'Content-Type': 'application/json;charset=UTF-8',
      },
    });
  },
};
If you're a Damus user, you can use damus key converter to convert a damus key to a hex key. You also need to add the CORS header: Access-Control-Allow-Origin: * so it can be validated from the app.
2. Create Workers Routes
Once the service has created, you need to add Worker Route.
[route]
pattern = "tetsuya.dev/.well-known/nostr.json*"
zone_name = "tetsuya.dev"
Note that because route patterns cannot contain query parameters, you must use a wildcard * to have a route pattern match URLs with query parameters.
Result
$ curl --include 'https://tetsuya.dev/.well-known/nostr.json?user=tetsuya'
...
access-control-allow-origin: *
...
{
  "names": {
    "tetsuya": "28d1243fb879d353c15c4cfc7537bf88f6fe18db2160c553beee408147eb0be5"
  }
}⏎
Follow me on Nostr: npub19rgjg0ac08f48s2ufn782dal3rm0uxxmy9sv25a7aeqgz3ltp0js9txe3x
 


 
    
Top comments (2)
Hello, I'm having trouble following these instructions. Could you please help? I've made a worker node over here workers-playground-delicate-bonus-... but I cannot access it over the domain that's hosted on CF. curl --include 'hacker.pk/.well-known/nostr.json?u...' returns could not resolve host. The route is already added uner 'Routes' in addition to the default worker. Thanks.