Skip to content

fast as lightning, secure tiny file server, based on ngrok and golang

License

Notifications You must be signed in to change notification settings

trendev/ngrok-file-server

Repository files navigation

ngrok-file-server

Test, Build and Save

codecov

Go Reference

ngrok-file-server is a tiny secured file server :bowtie:

You can quickly share any content running a simple docker image !!!

It's fast 🚀, secured 🔒 and pretty lite 🐁

👉 Requirements

What do you really need ?

ngrok token

https tunneling (port-forwarding) is provided by ngrok go implementation. So, you need a ngrok token 🔑

... if don't have a ngrok account, don't worry, it's free 😬

docker

If you're familiar with golang, you can build your own server but we recommand to use our docker image 🐳

You can download docker desktop and use default settings.

▶️ Run

Ok, so now, you may have a ngrok token and run docker on your machine.

1️⃣ Let's start the server.

Run the following docker command in order to share the content of your local path.

docker run -it --rm -e NGROK_AUTHTOKEN="YOUR_TOKEN" -v $(pwd):/shared ghcr.io/trendev/ngrok-file-server

this example is based on Linux/MacOS usage. If you run ngrok-file-server on Windows, you may change local path command $(pwd) by something like %cd% or direcly set the path...

do not forget to replace "YOUR_TOKEN" by your ngrok token...

It will pull our docker image and then, build and start a new container 👍

You may see an output like this :

ngrok ingress url: https://2927-90-22-212-26.eu.ngrok.io

Copy the URL 📝

... or start the server with a static domain !

At first, you may claim a static domain (cf ngrok static domain)

docker run -it --rm -e NGROK_AUTHTOKEN="YOUR_TOKEN" -v $(pwd):/shared ghcr.io/trendev/ngrok-file-server --static_domain={your_static_domain}.ngrok-free.app

This URL is easier to remember, isn't it ?

2️⃣ Visit the file server from anywhere

Paste the previous URL in your favorite web browser.

if you use a free ngrok account, please, just accept the disclaimer 😽

And here we are ✅

You can browse your content and share the URL with anyone and access to your file server from anywhere 😎

👮 OAuth2 Protection

You can also control access using an oauth2 provider (like Google, Facebook, Github, Linkedin, etc) and setting an authorized oauth2_domain (for eg, only trendev.fr users).

you can find the supported list here

Enable oauth2 authentication

docker run -it --rm -e NGROK_AUTHTOKEN=$NGROK_AUTHTOKEN -v $(pwd):/shared ghcr.io/trendev/ngrok-file-server --provider=google

Enable oauth2 authentication + oauth2_domain control

docker run -it --rm -e NGROK_AUTHTOKEN=$NGROK_AUTHTOKEN -v $(pwd):/shared ghcr.io/trendev/ngrok-file-server --provider=google --oauth2_domain=trendev.fr

✋ Something else ?

If you need more, you can open an issue and describe your requirement... and BTW, you can also star the repo 😉