How to fix all traffic showing as coming from Cloudflare servers instead of the user's browser IP

So it is a technical constraint introduced by 1panel.

Are you running multiple servers or only Discourse on the VPS? If you are only running discourse you probably do not need 1panel. Unless, there is a technical reason you need 1 panel.

My discourse is native on a vps behind cloudflare. This setup works.