Skip to content
@exposesh

EXPOSE

Your no configuration, no installation, globally distributed open source tool to expose your local services.

AboutAccessFree and PremiumFeaturesFAQs

About

EXPOSE is your new favourite open source tool for exposing your local services on the public Internet.
With no installation or configuration required, you can use it.
In fact, EXPOSE relies on your SSH client.
Authentication is done using the public SSH keys you have on your GitHub account. If you don't have any, you can read this article.
So all you have to do to expose, for exemple, localhost:3000, is type ssh -R 1:localhost:3000 expose.sh in your terminal.
If you use a different username on your computer than the one you use on GitHub, add the GitHub username to your SSH command (example: ssh -R 1:localhost:3000 yourusername@expose.sh).

Access

To prevent malicious use of EXPOSE, you should add a star to one of the project repositories.
Of course, if you wish, you can add stars to all the repositories. 😄

Free and Premium

Infrastructure is expensive, but at the same time everyone should have access to a high-performance tool of this kind.
The free version of EXPOSE is limited to two local service exposures at a time, with a bandwidth of 100 kb/s and a maximum duration of 15 minutes per use.
Of course, you can reconnect as often as you like.

By supporting this independent, open-source project through GitHub Sponsors and a monthly subscription of $3, you unlock all the features.

Learn more

Find out more about how EXPOSE works by visiting the following repositories:

  • expose-server: the heart of EXPOSE with the SSH server and the Web server, all on a distributed infrastructure thanks to Fly.io
  • expose-functions: Firebase Functions for managing GitHub webhooks, verifying users and retrieving SSH public keys
  • expose-banners: the various texts displayed when connecting to the SSH server

FAQs

Is EXPOSE secure? Yes, SSH is an encrypted protocol, and access to your application is secure thanks to the automatic certificate attached to the HTTPS endpoint.
What do you mean by no installation and no configuration? No installation, because EXPOSE uses the SSH client present on your device, available by default on all current operating systems.
No configuration, because EXPOSE automatically retrieves the data provided by your SSH client and GitHub account.
What are the limitations of the free EXPOSE version? The free version of EXPOSE is limited to two local service tunnels at a time, with a bandwidth of 100 kB/s and a maximum duration of 15 minutes per use.
How can I access the unlimited version of EXPOSE? By supporting this independent, open-source project through GitHub Sponsors and a monthly subscription of $3, you unlock all the features.
Is it possible to generate several tunnels at once? Yes, you can create several tunnels at once by repeating `-R `. For example: ssh -R 1:localhost:port1 -R 2:localhost:port2 expose.sh
I bought a subscription but when I connect to EXPOSE, it is still the free version? Do not panic! Check if your computer's current username matches the username of your GitHub account. If it does not, add it to your SSH command. For example: ssh -R 1:localhost:port yourgithubusername@expose.sh
The username matches well, but I am still on the free version of EXPOSE... Do you have a private SSH key on your device that corresponds to a public SSH key on your GitHub account? You can find your GitHub's public SSH keys by clicking on your profile picture, then on Settings, then in the "Access" section, click on "SSH and GPG keys". Perhaps you have too many SSH keys on your device and your SSH client is getting tangled up? In that case, specify in your command where your private SSH key is located: ssh -o IdentitiesOnly=yes -i /path/to/private/key -R 1:localhost:port yourgithubusername@expose.sh
I see "Cannot connect to your local application. Please check your terminal for hints." in the browser! Review the currently running SSH command for any clues, and ensure that your local application is reachable on localhost with the specified port. You can verify this accessibility by navigating to http://localhost:port in your browser.
I see "connect_to localhost port *: failed" in the terminal! Ensure that your local application is reachable on localhost with the specified port by navigating to http://localhost:port in your browser.
How is it possible to have my SSH client automatically reconnect to EXPOSE? It is true that disconnections are not fun... You can modify your SSH command in this way to reconnect automatically: until ssh -R 1:localhost:port expose.sh; do echo Reconnecting...; done
Ah, ha, ha, ha, stayin' alive, stayin' alive 🎵😌✊
Does EXPOSE support other protocols? EXPOSE supports other Web protocols such as WebSocket. An EXPOSE extension, which can be installed on your devices, is planned to facilitate the use of TCP and UDP protocols by EXPOSE tunnels.
Where do I contact someone if I have a question or an issue? You can open an issue on the server repository or send an email at gaetan@expose.sh.

Pinned

  1. expose-server expose-server Public

    The various components of the EXPOSE server, deployed on Fly.io

    Python 2

  2. expose-functions expose-functions Public

    EXPOSE's serverless functions

    JavaScript

  3. expose-banners expose-banners Public

    EXPOSE SSH banners

Repositories

Showing 5 of 5 repositories

Top languages

Loading…

Most used topics

Loading…