threefoldtech / mycelium

End-2-end encrypted IPv6 overlay network
Apache License 2.0
20 stars 10 forks source link

Feedback from community members #262

Open Mik-TF opened 1 month ago

Mik-TF commented 1 month ago

Situation

@scottyeager and I presented a demo on Mycelium. The feedback is amazing. People seem very interested.

A user asked if we were planning to add the following (see below) for Mycelium. I create this issue so we can track interest and get the POV of the dev team on this:

Scott, feel free to add more insights.

LeeSmet commented 1 month ago

It feels like I'm missing some context here. What is the ultimate goal that this user wants to achieve?

For the individual points:

extension browser in mycelium

Does this mean a browser extension to run mycelium?

websocket support for mycelium

On a technical level, mycelium nodes could communicate over websockets if that is implemented. The question is why that is specifically needed, since a websocket is essentially a tcp connection with s specific frame codec on top (i.e. slightly more overhead than tcp).

filesystem implementation for mycelium

Mycelium as in the application in this repo is only a network tool. Various filesystems exist which can be accessed remotely over the network, and as long as these support IPv6, they should work over mycelium.

Database implementation over mycelium

Similar to the previous, databases (generally databases which run in cluster setups such as mongo) should be able to run using a mycelium connection out of the box, by configuring peers with the proper mycelium IP.

scottyeager commented 1 month ago

To give a bit more context, the question from the community member is about the possibility of implementing Mycelium as a web browser extension. The given reasons for this were around the additional security of web browser sandboxing, some users not wanting to run the binary release directly on their own system, and the ease of install.

The question regarding websockets then is related to this, as websockets are the allowed way for a web browser to carry on this kind of connection.

LeeSmet commented 1 month ago

Implementing websocket connections between peers should be fairly straightforward. The main issue with browser extensions is (to my knowledge) the fact that they can't create network interfaces. After all, creating a network interface requires elevated privileges, which the browser by default doesn't have, and if it could do so, allowing extension to do this would also break the sandbox. So while it would essentially be possible to run some form of (lightweight) node in a browser (extension), it would just serve as an additional node in the network which may be used for routing.

As for not installing a node on the local system, if you connect more than 1 device, you could install mycelium on the router, and have the router hand out ip addresses from the /64 subnet you get to devices on the network. This obviously makes all your devices reachable on an essentially public network, and thus needs some firewalling. Alternatively, you can also run mycelium on the router, and set up an ip6 NAT rather easily. This way, other devices have no knowledge of mycelium (they won't even get an IP in the mycelium range), but can still reach services exposed on mycelium. The devices themselves will obviously not be exposed on the network. This relies on the fact that the router is the default gateway and receives all traffic for which no specific rules exists on nodes.

scottyeager commented 1 month ago

Thanks for the details @LeeSmet. It certainly makes sense that a browser extension wouldn't be able to achieve a system wide enabling of Mycelium.

The remaining questions for me are:

  1. Could such a set up in theory enable the browser and extension to work together to render web pages served over mycelium, without the creation of a network interface?
  2. Any chance of an in browser SSH client working over a mycelium connection established by a browser extension?

Those would be the two main use cases I could imagine.