Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Tunnelmole as an open source alternative to ngrok #1262

Open
robbie-cahill opened this issue Jan 4, 2024 · 4 comments
Open

Add Tunnelmole as an open source alternative to ngrok #1262

robbie-cahill opened this issue Jan 4, 2024 · 4 comments

Comments

@robbie-cahill
Copy link

I've noticed you have ngrok as the suggested tunnelling solution in your README and also have a script in Procfile.dev.

However, ngrok has a few issues

  • Its closed source and proprietary. Because you can't review the source code, you can never be 100% sure what you are really installing
  • You can't self host ngrok

So, i'd like to update your docs to add tunnelmole. It has the following advantages

  • Its fully open source with a permissive MIT license
  • Optionally, Tunnelmole can be self hosted with the Tunnelmole Service. Otherwise it will use the default service at tunnelmole.com.

Here's the difference in terms of set up and usage

Ngrok

First download and install from ngrok.com

ngrok http 3000
Tunnelmole

Since you guys already seem to have a NodeJS dependency, there is no need to install anything.

Just run npx tmole 3000 and Tunnelmole will work.

There are a few options here

  • Do nothing, keeping ngrok as the only tunnelling option
  • Replace ngrok with Tunnelmole
  • Add Tunnelmole as an additional option

I can also create a script in Procfile.dev, using npx to run Tunnelmole without the need to install anything.

Let me know your preference and if you'd like me to make a PR with the changes.

@gazayas
Copy link
Contributor

gazayas commented Jan 8, 2024

Although I'm not 100% sure how I feel about this right now, I'm not entirely opposed to the idea and I think we could mention other alternatives to ngrok in the documentation. If the implementation is simple enough though, we could add a quick script in bin/configure to set up developers with the tunneling of their choice when creating a new application. Would love to see a PR for what changes would need to be made, I'd be glad to take a look over it!

A couple of things I noticed:

  1. The free plans from ngrok and tunnelmole don't seem to differ too much, and if you look at the docs you can see that we suggest a paid plan so developers don't have to change the domain each time so they can increase productivity. So, apart from the simplicity of setting up tunnelmole, I'm not seeing too many benefits for one over the other especially if developers are going to want to opt into a paid plan, in which case they will be required to do more manual setup anyways. tunnelmole is $5 cheaper though so that might be a more appealing option for developers who want to save.
  2. I'm seeing that some installation IS required. It could be oversight on my part and I might be approaching things incorrectly, but I get the following when trying to run npx tmole 3000:
> npx tmole 3000
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/tmole - Not found
npm ERR! 404 
npm ERR! 404  'tmole@*' is not in this registry.
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

tunnelmole.com provides commands for installing their service (the following is for Linux machines):

curl -O https://install.tunnelmole.com/t357g/install && sudo bash install

Doesn't seem too intensive though so it's not a make or break for me.

Out of the three options you mentioned, I think 1 or 3 would be the most plausible:

  • Do nothing, keeping ngrok as the only tunnelling option
  • Replace ngrok with Tunnelmole
  • Add Tunnelmole as an additional option

Would love to hear from other members on the team to see what they think.

@jagthedrummer
Copy link
Contributor

I get the same error when I try to run npx tmole 3000 without installing anything. I think it doesn't work because the name of the executable (tmole) is different than the name of the npm package that needs to be installed (tunnelmole).

I'm fairly certain that we don't want to replace ngrok with tmole. But I'm 100% in favor of mentioning it as an alternative in the docs. A PR for that would be an easy merge.

The idea of having it as more of a baked in option is also interesting. I'd love to see a PR for what that would look like.

Also, TIL about tunnelmole. Thanks for the suggestion, @robbie-cahill!

@robbie-cahill
Copy link
Author

Just published a little wrapper package, npx tmole 3000 should now work.

@gazayas
Copy link
Contributor

gazayas commented Feb 8, 2024

Just confirmed it's running:

> npx tmole 3000
Need to install the following packages:
  [email protected]
Ok to proceed? (y) y
npm
 WARN exec The following package was not found and will be installed: [email protected]

npm 
WARN deprecated @types/[email protected]: This is a stub types definition for commander (https://github.com/tj/commander.js). commander provides its own type definitions, so you don't need @types/commander installed!

http://9jvxnh-ip-106-146-116-84.tunnelmole.net is forwarding to localhost:3000

https://9jvxnh-ip-106-146-116-84.tunnelmole.net is forwarding to localhost:3000


Welcome to Tunnelmole! As developers, we know how important it is to get straight to the point. To get the most out of Tunnelmole and start using your new superpowers, read the getting started guide here - https://t.ly/2n3Hv. 

Happy coding!

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

No branches or pull requests

3 participants