Skip to content

Getting started

menfez gives a port on your machine a public HTTPS address under menfez.cloud. Requests and WebSocket connections to that address are carried to your machine and handed to the local service.

macOS and Linux:

Terminal window
curl -fsSL https://menfez.dev/install.sh | sh

Windows (PowerShell):

Terminal window
irm https://menfez.dev/install.ps1 | iex

From source, with a Rust toolchain:

Terminal window
cargo install --locked --git https://github.com/menfez/menfez menfez

Save your token once; it goes into the config file.

Terminal window
menfez login <TOKEN>

Point menfez at the port your app listens on:

Terminal window
menfez http 3000
menfez 0.1.0
connected
http https://k3x9m2p7qa4b.menfez.cloud -> localhost:3000

The URL works until you stop menfez with Ctrl+C. If the connection drops, menfez reconnects by itself and gets the same URL back.

Want a fixed name?

Terminal window
menfez http 3000 --subdomain my-app
# http https://my-app.menfez.cloud -> localhost:3000

Vite, Next.js, Django, Rails and others may refuse requests whose Host is not localhost. Either allow .menfez.cloud in the framework, or let menfez send the local address instead:

Terminal window
menfez http 5173 --host-header rewrite

Define them in the config file and start them together:

[tunnels.web]
addr = "3000"
[tunnels.api]
addr = "8080"
subdomain = "my-api"
Terminal window
menfez start