Skip to content

Run secure services on localhost with 0-config certs (TLS / WSS). HTTPS connections for any device on LAN or mesh VPN.

License

Notifications You must be signed in to change notification settings

sprisa/localhost

Repository files navigation

localhost

GitHub Release GitHub License Endpoint Badge

Terminal Example

Local development certs for LAN https services.

Localhost exposes local insecure http services as fully encrypted https available at svc.host

Install

Homebrew (auto updates)

brew install sprisa/tap/localhost   

NPM
NPM Version NPM Downloads

npm i -g @sprisa/localhost
# or run directly
npx @sprisa/localhost 3000 -a

Golang Source
With Go (Any platform — doesn't auto update)

go install github.com/sprisa/localhost@latest

Usage

Serve the service at port 3000

localhost 3000

Navigate to the https service at https://local.svc.host:5050

Serve on all interfaces

localhost 3000 -a

Change the proxy port. Defaults to port 5050

localhost 3000 -p 3001

https://local.svc.host:3001

Show Help

localhost --help

Why?

1. Many Javascript APIs are only available in secure contexts (aka https). This makes local development harder than it should be.

  • For example the Crypto API. This list of restricted APIs is only growing.
  • Some browser contexts, like iOS Webviews, refuse to load insecure webpages.

2. Easier mobile development (React Native)

  • iOS will not make api requests to insecure APIs (http) when the development app is running on a remote device.

3. Remote development debugging

  • Localhost makes it easy to share your service on your Mesh Network IP.
  • Remote development without needing to be on the same LAN network when using a mesh network like Priv Network or Tailscale

Whats is svc.host?

svc.host is a DNS server which replies with your local WAN IP. It allows the https (tls) certificates to be trusted by your browser.

Hostnames are in the form [ip-address].svc.host, with the IP's dot seperator (.) being replaced with a dash (-) instead.

dig 192-168-1-180.svc.host => 192.168.1.180
dig 10-10-10-10.svc.host => 10.10.10.10
dig local.svc.host => 127.0.0.1

Only private IP ranges are supported.

Inspiration

Public Internet Tunnels

localhost is not a tunnel for the public internet. It connects any devices that are already on the same subnet, such as LAN or a mesh VPN. If you need an internet tunnel check out anderspitman/awesome-tunneling.

About

Run secure services on localhost with 0-config certs (TLS / WSS). HTTPS connections for any device on LAN or mesh VPN.

Topics

Resources

License

Stars

Watchers

Forks

Languages