@amirm
I've done some testing from the UK and set up a monitor which is polling the forum every 45 minutes.
Requests are normally reaching Cloudflare's London (LHR) edge, so European users aren't being routed all the way to San Francisco just to reach Cloudflare.
What looks interesting is the time spent waiting for responses. For example, with Chrome's local cache disabled, the forum loads six CSS resources ranging from only 0.7 kB to 34.5 kB. They all take roughly 186–203 ms, almost regardless of size. Looking at Chrome's detailed timings, around 180–190 ms is spent waiting for the first byte; the actual download takes less than 1 ms for the small files.
Those CSS requests all report:
CF-Cache-Status: DYNAMIC
despite the server returning:
Cache-Control: public, max-age=31536000
and they're being served via Cloudflare LHR. So Cloudflare isn't serving those particular resources as normal edge-cache HITs. It may be worth asking DigitalOcean/Cloudflare why the versioned css.php resources are being treated as dynamic despite the one-year public cache header.
The main forum page shows a similar pattern. My UK monitor is seeing roughly 0.3–0.9 seconds TTFB, while the actual HTML transfer after the first byte is relatively quick. So most of the variation appears to be waiting for the response rather than bandwidth/download speed.
I also happened to catch the period when you paused Cloudflare. Before that, my monitor was receiving HTTP 200 with CF-Ray: ...-LHR. Once Cloudflare was paused, public DNS changed to 143.110.158.227, which appears to be the DigitalOcean origin. That server presents a Cloudflare Origin CA certificate, so direct HTTPS clients reject it as untrusted. That explains the failures you saw when Cloudflare was paused; it doesn't look like evidence of the original performance problem.
I don't think this proves yet whether the delay is Cloudflare, the transatlantic Cloudflare→origin path, or processing at the DigitalOcean server, but it does seem to narrow the issue down considerably. The client→Cloudflare London side looks healthy; most of the measurable delay is after the request has been sent and before the first response byte arrives.
I put this all into AI and the attached pdf is a short summary of potential actions / pitfalls.