If you're using it as a GCNAT tunnel and you don't want to use tailscale, then your best bet will likely be either a VPS or asking your ISP for a public IP address. Some ISPs will just say no, but others might provide one for an additional fee.
You can also look into your IPV6 situation. You might actually already have a public IPv6 address you can use.
You don't say what you're using Cloudflare for, so suggesting an alternative is a bit tough.
Assuming that you're using a CF tunnel to get through CGNAT, tailscale would be one alternative (no need to turn it off/on, though). The other alternative would be renting a cheap VPS and tunneling through that instead.
On the other hand, if you're primarily using CF as a reverse proxy, you can run any number of them on your own server instead, like Nginx, Zoraxy, etc.
On the other other hand, if you're using their WAF, that can also be run locally. Crowdsec offers a WAF component in addition to their usual protections, for example.
On the other other other hand.... There are alternatives to most, if not all, of their other services, too.
What's a good reverse proxy for a set up using Cloudflare?
Having a reverse proxy behind your reverse proxy is a little redundant, but should work fine. My preference after trying several was nginx. The config takes a little to get used to, but it has a ton of features.
The paid plans get you the "premium" blocklists, which includes one specially made to prevent AI scrapers, but a free account will still get you the actual software, the community blocklist, plus up to three "basic"lists.
The slightly lower power draw pi5 vs a Tiny will eventually make up for the higher initial cost, but you can save more by turning off lights when you leave a room or skipping a round at the bar.
In my opinion, the wider software compatibility, better processing power, and expansible RAM and storage options far outweigh the eventual theoretical savings.
That said, if you need the super small SBC form factor or GPIO pins, definitely go for a pi. They absolutely have their use cases. I have 4 or 5 of the 3B and 3B+, and have used them on-and-off for a variety of tasks over the years.
It's been a long time since Pi's were competitive on price.
You can get a used Lenovo Thinkcentre for $50 on eBay. A modern pi is going to cost you that much for just the board, then you still need to buy a case, power supply, SD card, and then figure out some solution for storage...
I tried a bunch, zoneminder, motioneye, frigate, etc., before finally settling in AgentDVR. It offers a fair bit of flexibility via MQTT and "just worked" with my PTZ camera.
Under the store page there should be a "steam replay" button if you scroll down a bit. It will only show the OS break down if you use more than one OS, though. No pi chart if you only game on Linux. 😕
You're not a "target" as much as you are "a thing that exists." These aren't targeted attacks.
That said, you can look into adding some additional measures to your webserver if you haven't already, like dropping connections if a client requests a location they shouldn't, like trying to access /admin, /../.., /.env, and so on.
On nginx, it could be something like:
location ^/\.|)/admin|/login {
return 444;
}
Of course, that should be modified to match whatever application you're actually using.
Self hosted from my homelab on an nginx server. I also self host my blog, which has some info on my whole set up. My blog uses some basic bloging software, though, rather than being hand-made.
The "side menu thingy" is achieved through HTML "frames". It's an element of HTML that's pretty much extinct nowadays, but was all the rage when I built my very first page back in the day.
Nice. I wrote mine "by hand", too. No CSS, just raw HTML. I think it's a more personal experience than just using whatever random template some all-in-one web hosting company offers.
A lot of how you set up your system is just going to depend on how you want to set it up.
I run podman (like an improved version of docker) in a single LXC container for applications that are primarily packaged as docker apps. I think I have 4 or 5 applications running on that LXC.
For things that are distributed via apt, git repo, etc, I'll either create a new LXC or use an existing LXC if it's related to other services I'm running. For example, crowdsec is run in the same machine as nginx since those two work together and I'll always want them both running at the same time, so there's no reason to separate them.
I have mariadb running in its own LXC so that it can follow a different (more frequent) backup schedule than the mostly static applications that interact with it.
Anything that needs to interact directly with hardware, like Home Assistant, or I want kernel separation for, will get a full fledge VM instead of a container.
I use podman almost exclusively at this point. I like having the rootless containers and secrets management. If you're on Debian, though, I strongly suggest pulling podman from Trixie. The version in Bookworm is very out of date and there's been a lot of fixes since then.
If you're using it as a GCNAT tunnel and you don't want to use tailscale, then your best bet will likely be either a VPS or asking your ISP for a public IP address. Some ISPs will just say no, but others might provide one for an additional fee.
You can also look into your IPV6 situation. You might actually already have a public IPv6 address you can use.