You don’t need to own a domain, what you most likely need is some kind of dynamic DNS service.
freedns.afraid.org is one of them, they’ll give you a subdomain you can pick and the client will update the IP to which the domain point whenever it changes.
This is what you need, assuming you’ve a public IP from your ISP and you can go into your router and port forward ports to your TrueNAS server.
Now regarding software, since you’re using Syncthing already I would suggest you stay away from the complexities and vulnerabilities of Nextcloud and simply use FileBrowser, this is way easier to setup and use. I believe there’s even something on TrueNAS to get it running.
How if you’re about to expose your NAS/setup to the internet you’ve to consider a few things for your own safety.
Quick check list for outward facing servers:
Only expose required services (web server nginx, game server, program x) to the Internet. Everything else such as SSH, configuration interfaces and whatnot can be moved to another private network and/or a WireGuard VPN you can connect to when you want to manage the server;
Use custom ports with 5 digits for everything - something like 23901 (up to 65535) to make your service(s) harder to find;
Disable IPv6? Might be easier than dealing with a dual stack firewall and/or other complexities;
Use nftables / iptables / another firewall and set it to drop everything but those ports you need for services and management VPN access to work - 10 minute guide;
Use your firewall to restrict what countries are allowed to access your server. If you’re just doing it for a few friends only allow incoming connection from your country (wiki.nftables.org/wiki-nftables/…/GeoIP_matching)
Realistically speaking if you’re doing this just for you / a few friends why not require them to access the server through WireGuard VPN? This will reduce the risk a LOT and won’t probably impact the performance. This is a decent setup guide digitalocean.com/…/how-to-set-up-wireguard-on-deb… and you might use this GUI to add/remove clients easily github.com/ngoduykhanh/wireguard-ui
With WireGuard you’ll only need to port forward the WG port reducing the attack surface. After you connect to the VPN you get access to the server as if you were on the local network. This mean you’ll even get SMB/Samba access to the files and/or access to any other service the server might me providing, you don’t need anything else or change your current workflow, simply connect to the VPN and access your data as if you were home.
Another advantage of going with WireGuard is that you can more safely ignore the step (4) and (5) because only exposing the VPN through a port forward in your router won’t create much of an attack surface / anything that can be bruteforced. Your setup will be easier to deploy and maintain.
Note that WireGuard is designed with security in mind and it won’t even be visible in typical IP scans / will ignore any piece of traffic that isn’t properly encrypted with your keys.
reverse engineering an entire operating system isn’t easy
Have you noticed the the NT / Windows XP source code was leaked years ago. There’s isn’t much of a need to “reverse engineering”, it’s just about reading their implementation and providing an alternative implementation that doesn’t copy code…
The difference is that there’s a lot of commercial support when it comes to supporting Linux servers due to many reasons, when it comes to the desktop it simply isn’t there.
If you require “professional” software such as MS Office, Adobe Apps, Autodesk, NI Circuit Design and whatnot Linux isn’t a viable options. The alternatives wont cut it if you require serious collaboration… virtualization, emulation (wine) may work but won’t be nice. Going for Linux kinda adds the same pains of going macOS but 10x. Once you open the virtualization door your productivity suffers greatly, your CPU/RAM requirements are higher and suddenly you’ve to deal with issues in two operating systems instead of just one. And… let’s face it, nothing with GPU acceleration will ever run decently unless big companies start fixing things - GPU passthroughs and getting video back into the main system are a pain and add delays.
To make things worse the Linux desktop development ecosystem is essentially non existent. The success of Windows and macOS is the fact that they provide solid and stable APIs and development tools that “make it easy” to develop for those platforms and Linux is very bad at that. The major pieces of Linux are constantly and ever changing requiring large and frequent re-works of apps. There aren’t distribution “sponsored” IDEs (like Visual Studio or Xcode), userland API documentation, frameworks etc.
In communism there’s no space for the concept of family / family unit as there’s with the center-right and right-wing ideologies. To communists, or any other extremist regime, children are mostly state property that must be indoctrinated as soon as possible to follow the leadership’s mindset otherwise the system wouldn’t work.
And in my professional life: You are paying for the warranties and support contracts. If you can’t afford to run your own storage then you should just call Amazon and ask for a good deal.
Oh yeah. Or don’t have storage at all, because if you can’t afford it you most likely don’t need it :P
Now I’m gonna tell you what nobody talks about when moving to Linux:
Proprietary/non-Linux apps provide good features, support and have tons of hours of dev time and continuous updates that the FOSS alternatives can’t just match.