I have been thinking about how I can utilise Nostr with #Holesail.
Here is what I have in mind:
- Use Nostr ID as a login tool for the Holesail Desktop app, such that when you log in with Nostr on your mobile, your connections will sync, and you can manage them remotely.
- Use Nostr as an allowlist, only the Nostr IDs you allow can connect to your holesail instance.
Let me know if you guys have better solutions in mind that I should try.
https://m.primal.net/MAkD.png
Just released Holesail version 1.8.0 ⛵️ with UDP support.
That means we are now one step closer to launching Holesail on @Start9 and it now support a wider range of applications and gaming.
It is frogging awesome 🥳
https://m.primal.net/LyoS.png
We are somewhat far from Holesail itself having a native library of its own, but there is bare-expo that you can use to embed Holesail in any react native application.
We use the same thing in our Holesail Go application.
https://github.com/holepunchto/bare-expo
We discover more use cases for holesail everyday. Huge working going on, on Android side too.
By the end of September I will be announcing some real good stuff 👀
nostr:nevent1qqstxnv04hjys5cccmcrcwa94qvlnnafxxslkcy2x0lqpvnvdp0hllcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsygxx0nf7r2pa4ftvlut0vdwm9ldeaktpjvqznr28qxjcu68ggzvrg5psgqqqqqqsk3wjct
What @gudnuf said ,plus cloudfalred and nginx have strict limitations on protocol, bandwidth and timeout.
Tailscale, on the other hand, is for personal use only; you can not share a vpn config with every person you want to share your self-hosted app with. But with holesail, it is only a matter of connection string, and no VPN is required.
Hi, bare-kit is now available on Android and iOS. It lets you use the holepunch stack on mobile platforms.
I have a working example of both in Objective C / Java, but "Kotlin can call into C using JNI, the same as Java. That's how Bare Kit works on Android."
If you need more info, we can talk on Discord or Nostr DMs, or even here.
Holesail version 1.7.0 is out with a brand new feature: Holesail Manager.
Run holesail in the background and persist connections on reboot.
It is as simple as doing holesail-manager create <normal holesail options>
Docs coming soon.
https://m.primal.net/KGng.png
Basically, it starts a SOCKS5 proxy in the background that will automatically handle connecting with holesail/hyperdht connections, you wont have to connect to a key every time in terminal, the proxy will automatically do it on the go for any app for browser.
For example, doing <my key>.hyper in the browser will load a holesail connection from <my-key> .
It is pretty sick, @hzrd149 I see it is MIT, I might add it to holesail someday
It is pure P2P, the nodes do not help in holepunching but to discover first few peers, a node is just a known peer. Anyone can become a node.
You need to look into Kademliya algorithem to understand how it all works.
Perhaps you are too smart to understand, but I will try:
Unlike traditional and common holepunching methods, there is no requirement of a third party STUN server in Kademliya.
The peers themselves act as a stun themselves(kind of) and help in holepunching.
Holesail integration basically means packing the binary or source and executing it from the app so that your users don't have to.
Any app can use data coming from holesail because it's on your localhost:port .
I think you are a little confused here, apps do not need to integrate holesail to use it.
Holesail in itself is a proxy, it kind of binds two ports between different devices, so apps just need to use localhost:port as the url.
When I say "integrating holesail", I mean including holesail in the app itself so that users don't have to do the installation and running.
For example, for an apache server running on port 80, I can wrap holesail around it with holesail --live 80 --host localhost
Then on another device: holesail <connection string> --port 3434 --host localhost, now any app on my second device that needs the data from server1, will use the URL http://localhost:3434/
There is no need for manual integration, but for the sake of simplicity and accessibility, it is better to do so.
The above is a manual approach, now if I bundled holesail with apache2 and made it print out a connection key for ever vHOST by default, that would be holesail integration.
I am releasing holesail-manager today It will solve the problem of running holesail commands again and again but what do you mean by:
> Which means the HTTP proxy can intercept their requests and bind the ports automatically then forward the traffic through hyperdht to the correct node
I think I am not able to understand this properly, I appreciate you explaining it, please 🙏.
Bare (By Holepunch) is a lightweight runtime, Keet gives pretty good performance and stays up to date with latest content even when it is all P2P.
Similarly Holesail runs on pretty much everything even though it is Nodejs based.
I don't think we need to worry so much about "Low end devices" here.
Holesail android code is not open, but here is how you can get holesail working on Android:
https://github.com/supersuryaansh/hyperclip-android
After that just do npm i holesail-client and you can use the node package in app.js file
Bare is a runtime of its own and is not sandboxed like a normal JavaScript environment.
It can access TCP and setup sockets/connections and do all kinds of stuff.
Holesail Go was built way before bare-kit and uses custom stuff to set itself up and work.
But if you are taking Guy's bounty, Bare-kit is the way to go.
Yes, along the line we intend to make money.
Soon when I post about the basic security issues and carelessness I discovered with the current port forwarding / static IP model, it will makes things clear why I am so admadent on the security part.
Makes sense. Also, goal of holesail is to be easy to connect and to be secure by design with no extra configs, so that even the simplest user can use it without fearing that someone might "hack" them, or someone is watching the camera.
You can setup a custom connection string to avoid that, holesail --live <port> --connector "any random stuff that is secure"
Future version will have a --preserve flag to keep the connection string same when the server restarts.
Notes by supersu | export