A couple of weeks ago I set up a server this way to help get my fiancee into video games. I already owned a proper Minecraft PC license from way back in the day, and bought Minecraft on Android for ~$5. My thinking is that we could play together, me on a Mac and her on a Galaxy Tab we have with a controller. Attempting to get these two clients to play together is what led me into the same situation you are about to find yourself in.

Something to know is that there are two versions of Minecraft, Java and Bedrock (C++). Some others in this thread have talked about the history of why this is, but the important thing to know is that Java runs on Mac/Windows/Linux, and there are some neat launchers that can run it on Android. Bedrock runs on Consoles/Tablets/Phones/Windows. Note that Bedrock _does not_ run on Linux or Mac.

There are ways to host Bedrock-only servers if you're _sure_ no users will ever be running the Java client, but I would recommend running a Java server with the Geyser and Floodgate plugins for compatibility reasons. The plugins are a translation layer that trick Bedrock clients into thinking they're connecting to a Bedrock server. I've been playing this way (me on Mac/Java, her on Android/Bedrock) for two weeks with no real issues. I haven't explored adding any other plugins to the server.

I'm running this in a container on an old Thinkpad in my office. This setup is common enough that GLM-5.2 set it up in (nearly) one shot.

I also really recommend running an instance of https://bluemap.bluecolored.de/ in another container on the same machine. It hosts a neat map of your world, which your family could pull up on their phones while not playing. My server itself is LAN only, but I used a Cloudflare tunnel to host the map so she can show her friends: https://mcmap.thg3.net/

Let me know if you have any questions or would like my server config!

In case you aren't aware, bedrock and java are both part of the same license and can both be played freely in the launcher. Also, while desktop GNU/Linux can't run bedrock, android can, and that has been exploited to allow for actual desktop linux clients for bedrock

I'm aware that if you buy Minecraft proper (~$30) you have a license for Bedrock and Java, but I'm a little blurry on what license you get when you buy Minecraft from the Google Play store (~$5). I'm assuming it's a Bedrock-only license, and Microsoft makes money off selling skins etc.

I think most seasoned players, technical folks, or Mac users, would prefer Java. Java Minecraft doesn't have microtransactions, skinning your character is a matter of changing a file, and the plugin/mod support is huge. That's why I stuck to treating the server as "Java first, Bedrock supported" instead of ignoring Java and only playing Bedrock.

The license is tied to the platform (for the most part, there have been ways to run Java edition on android forever), so if you bought the android version you only have whatever's available on android.

I brought up the bedrock/java bundle deal with the PC version since the main advantage of Bedrock is the crossplay. If you want to play with someone on (for example) android, you can simply choose to launch into bedrock on PC for multiplayer

Correct me if I'm wrong, but what you're describing is client-hosted Bedrock servers, not a persistent, always available, self-hosted server. AFAIK connecting to a friend's world in Bedrock is free, but they must also be online. Hosting a persistent Bedrock server is a paid feature (Realms).

Additionally, highlighting that Bedrock Minecraft is not supported on Mac.

There are surely other ways of enabling multiplayer Minecraft for a family than what I've described, but this is the way I'd recommend.

Correct. There are ways to host bedrock servers, it just isn't as easy and most people are better served by realms.

Also, I thought you could play the iOS version on Mac. Doesn't apple let you run iPad apps on macOS?

Unfortunately, Apple made the decision to have that be an opt-in flag for developers, and so the vast, vast majority of iPad apps don't allow themselves to be used on macOS.