13,688 karma · joined December 11, 2014
Personal site:
apitman.com
Projects:
IndieBits.io - A community for data ownership, self-hosting, and decentralization.
LastLogin.net - A free, privacy-focused login provider
TakingNames.io - Domain names for self-hosters
boringproxy.io - Simple, e2ee tunneling proxy
droplock.apitman.com - Simple secure secret sharing
In theory you could run Headscale, but you're really working against Tailscale's intended design at that point, and Iroh was built for this from the ground up, so what is Tailscale buying you?
If your question is, "why not just use Tailscale?", look at it from an app developer's perspective. If you want to release an app and have instances of your app be able to easily connect to each other, you could theoretically embeded Tailscale functionality into your app, but then the users of your app need Tailscale accounts, and your app is dependent on Tailscale.
Iroh lets you embed this functionality directly, and provides public fallback relays. If your app gets too big for the public relays, using your own relays is the flip of a switch.
How does that work, exactly? How does the browser differentiate between Yggdrasil addresses and others?
Overall I loved the dev experience. It's sort of like writing a C library that can be dynamically linked in other languages, but with much better security and much easier distribution because you don't need to worry about the OS or CPU architecture. Literally the same .wasm file everywhere.
[0]: https://extism.org/
[0]: https://pi.dev/
Interesting. Can you expound on this a bit? How does ZeroTier do it?
You can actually achieve a form of discovery if your service registers itself using mDNS for something like `service.local`. Browsers will allow direct navigation/redirection to `http://service.local`, but they'll block any fetch/XHR requests due to mixed content rules, even if you have CORS configured. And of course you can't get a cert for `.local` domains.
Newer things like Chrome's LNA[0] are actually really helpful, because (for now at least) if the user grants the permission, fetch/XHR will go through, but you'll get a bunch of mixed content warnings in the console.
It seems like the only way to fully support this use case currently is with WebRTC, which is pretty sad.