Notion is such a great tool. So great in fact, that I’ve already written about it in this blog before . One of its greatest — and most under-utilized — features is the ability to publish any Notion page directly to the web with the click of a button. It’s amazing! In fact, I’ve come to the conclusion that for 90% of static website needs, just publishing a Notion page is the best tool for the problem.

The only kind of bummer to it is that it defaults to a domain. While you can customize the subdomain (eg, that’s about as far as you can go natively with Notion.

Luckily, there’s an amazing open source tool called Fruition which maintains a script and process for using a fully custom domain for your Notion site completely for free! Open Source, am I right? 🤩

(A little disclaimer, it’s pretty basic, and if you’re looking for something more functional, you might want a fully paid service like Super .)

I recently used Fruition to set up my book tracking project, Book & Page , on the domain which I had purchased through AWS’s Route 53. It was really fun to setup, but I did find that it differed a little bit from the official documentation. For the most part, you should follow the instructions on the Fruition website. I’ll just go over one big “Gotcha” that I ran into.

Error 1034, Edge IP Restricted #

At it’s core, Fruition is really just a Cloudflare worker that intercepts requests to your Domain and *magically* inserts your Notion website. In order for this to work, you have to set Cloudflare as your Nameserver and then set up a few corresponding records.

Unfortunately, the instructions in Fruition are outdated. If you follow them exactly as written, you’ll get a funky error basically stating that the IP is restricted. According to this forum post , in early 2022, Cloudflare made a change that prohibited using as a value for an A record, which the instructions tell you to do.

The Cloudflare moderator says:

We now validate that the hostnames landing on an IP address (or set of addresses) are associated with the same account in our systems, preventing misconfiguration and/or potential abuse.

Customers should ensure DNS records are pointed to addresses they control, and in the case a placeholder address is needed for “originless” setups, use the IPv6 reserved address 100:: or the IPv4 reserved address

We do indeed need an “originless” setup, so making the change to using the reserved IPv4 address should do the trick.

Easy enough. My DNS records for my functioning domain look like this —

DNS records

Make sure you select “Proxied” as the Proxy Status!

Other than that, there are a few UI discrepancies from the Instructions, but they should still work as written.

Good luck!