Skip to content

Conversation

@PouriaCh
Copy link

Add macOS (Apple Silicon) support and improve Docker/GeoIP handling

  • Add macOS detection and Homebrew-based dependency installation with non‑sudo enforcement.
  • Improve Docker engine checks and start prompts, including Docker Desktop launch on macOS.
  • Implement GeoIP support on macOS using MaxMind GeoLite2 (MMDB + mmdblookup), hidden key entry, and more robust parsing.
  • Update peers-by-country pipeline for macOS (timeouts, interface/IP detection, sudo requirement for tcpdump, diagnostics).
  • Adjust container networking for macOS (publish 443 TCP/UDP instead of host networking).
  • Improve install directory handling (writable fallback) and CLI generation (portable sed, Homebrew bash re-exec, macOS symlink behavior).
  • Update documentation to cover macOS usage, requirements, and limitations.

@PouriaCh
Copy link
Author

Hi @SamNet-dev. I tested this on a Macbook Air M4. It works seamlessly. Also the "peers" command (needs sudo) works (see below image). My only question at this stage is how to choose the version. Feel free to edit as you wish!

Screenshot 2026-01-28 at 11 40 12 PM

@SamNet-dev
Copy link
Owner

Thanks a lot for putting this together and testing it on macOS, really appreciate it.

I don’t have access to a Mac OS right now, so I can’t properly validate the changes on my side and I’m also really busy with other stuff. If you can, could you run a few different scenarios on macOS and confirm everything stays stable? For example:

  • Fresh install on a clean machine (no existing config)
  • Basic TUI navigation + key commands (especially peers with sudo, add/remove peers, status)
  • Restart/stop/start flows and any Docker engine edge cases

If those look good, I can create a dedicated branch like macos-edition and bring your work in there so we can merge it cleanly with the current codebase and keep it maintained going forward.

@EmranMR
Copy link

EmranMR commented Jan 29, 2026

I was going to give this a run on my M1 Mac, but I was faced with the maxmind Geo database account creation requirement...

Why not use something like db-ip?? it is free under Creative Commons Attribution 4.0 International License. You could download the ip to country database in the mmd format and use the cli to get a nice output, including farsi!

Sample JSON response can be found here:
https://db-ip.com/db/format/ip-to-country-lite/mmdb.html

The database can be downloaded and included in the package here:
https://db-ip.com/db/download/ip-to-country-lite

@PouriaCh
Copy link
Author

Thanks a lot for putting this together and testing it on macOS, really appreciate it.

I don’t have access to a Mac OS right now, so I can’t properly validate the changes on my side and I’m also really busy with other stuff. If you can, could you run a few different scenarios on macOS and confirm everything stays stable? For example:

* Fresh install on a clean machine (no existing config)

* Basic TUI navigation + key commands (especially peers with sudo, add/remove peers, status)

* Restart/stop/start flows and any Docker engine edge cases

If those look good, I can create a dedicated branch like macos-edition and bring your work in there so we can merge it cleanly with the current codebase and keep it maintained going forward.

Thank you @SamNet-dev. Although it is not ideal to keep separate branches like this, but in the interest of time, I think would be the only option to keep a separate branch for mac version. I know you keep adding new features on Linux and the bash script is getting longer, which might cause feature porting painful. But let's be practical and focus on delivering the bear minimum for now :)

If you don't mind, could you kindly create a new branch for macos, preferably from v1.0.2 tag? I started my fork from there and it will be much easier to avoid the branch conflicts.

I want to thank you for starting this project. It's been really fun for me doing something useful at this critical point of history! Keep it up!

@PouriaCh
Copy link
Author

I was going to give this a run on my M1 Mac, but I was faced with the maxmind Geo database account creation requirement...

Why not use something like db-ip?? it is free under Creative Commons Attribution 4.0 International License. You could download the ip to country database in the mmd format and use the cli to get a nice output, including farsi!

Sample JSON response can be found here: https://db-ip.com/db/format/ip-to-country-lite/mmdb.html

The database can be downloaded and included in the package here: https://db-ip.com/db/download/ip-to-country-lite

This is a great point @EmranMR. I did this for the first version and was trying to get something working to start the nodes faster! :) But obviously there is always room for improvement and I appreciate your interest.

I would say let's hear back from @SamNet-dev about the new mac-specific branch and generate the first working tag for it. Then I will ping you in case you want to make the changes you suggested above. Sounds good?

@SamNet-dev
Copy link
Owner

Hey @PouriaCh, the macos-edition branch is now live, created from the v1.0.2 tag just as you requested! Go ahead and open a new PR targeting that branch whenever you're ready, and we can close this one out. Really appreciate the effort you've put into this, excited to see macOS support coming together. @EmranMR you're welcome to jump in on the macOS branch too once the first PR lands!

@PouriaCh PouriaCh closed this Jan 30, 2026
@PouriaCh PouriaCh mentioned this pull request Jan 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants