Self-Hosted · Written in Go

Secure Tunneling
to the Internet

Expose local services through encrypted tunnels with automatic SSL, OAuth2 authentication, and a built-in admin panel. HTTP and TCP tunnels — single binary, cross-platform.

Terminal
$ nxpose register
Opening browser for OAuth authentication...
Registration successful! Certificates saved.

$ nxpose expose http 3000
Tunnel created successfully!
Public URL: https://abc123.tunnel.example.com
Forwarding to: http://localhost:3000
Status: Active

$ nxpose expose tcp 5432
TCP tunnel created!
Public endpoint: tunnel.example.com:15432
Forwarding to: localhost:5432
2 Protocols
5 Platforms
mTLS Security
1 Binary

Why NXpose

A self-hosted ngrok alternative with full control over your infrastructure.

🔐

Automatic SSL

Let's Encrypt integration with automatic certificate issuance and renewal for the server and all tunnel subdomains.

🛡️

Mutual TLS

Client certificates for tunnel authentication. Every connection is encrypted end-to-end with mTLS.

🌐

HTTP Tunnels

Unique subdomain routing for each tunnel. Expose web apps, APIs, and webhooks to the internet instantly.

🔌

TCP Tunnels

Forward raw TCP connections for databases, SSH, Redis, or any TCP service. Auto port allocation from configurable range.

🔑

OAuth2 Auth

GitHub and Google OAuth2 providers. Browser-based registration flow with automatic certificate generation.

📊

Admin Panel

Built-in HTMX admin panel with live tunnel monitoring, client management, and server status overview.

Installation

Install the NXpose client on your machine.

macOS (Homebrew)

brew install nxrvl/tap/nxpose

Go Install

go install github.com/altista-tech/nxpose/cmd/client@latest

Linux (Binary)

curl -LO https://github.com/altista-tech/nxpose/releases/latest/download/nxpose-linux-amd64
chmod +x nxpose-linux-amd64
sudo mv nxpose-linux-amd64 /usr/local/bin/nxpose

macOS (Binary)

curl -LO https://github.com/altista-tech/nxpose/releases/latest/download/nxpose-darwin-arm64
chmod +x nxpose-darwin-arm64
sudo mv nxpose-darwin-arm64 /usr/local/bin/nxpose

Quick Start

Three commands to expose your local service to the internet.

1

Register with a server

Authenticate via OAuth and receive client certificates automatically.

nxpose register
2

Expose an HTTP service

Get a public URL for your local web app or API.

nxpose expose http 3000
3

Or expose a TCP service

Forward databases, SSH, or any TCP service through the tunnel.

nxpose expose tcp 5432