ss

Secure Ephemeral
Tunnels

Secure, ephemeral reverse proxy tunnels for developers. Expose your local development server to the internet with a secure, time-limited URL. Perfect for testing webhooks, sharing work-in-progress with clients, quick demos, or developing APIs.

⚔ Instant setup • šŸ”’ Token auth • ā±ļø Auto-expire • 🚦 Rate limited

Get started in seconds

Expose your local development server to the internet with a secure, time-limited URL.

ssrok 3000— Expose localhost:3000
ssrok localhost:8080— Custom host:port
ssrok 192.168.1.5:8000— LAN server
Key Features

Everything you need for
secure tunneling.

Fast, secure, and ephemeral — ssrok gives you public URLs that auto-expire, with built-in rate limiting and optional password protection.

⚔Fast128KB buffers, yamux multiplexing
šŸ”’SecureToken auth, optional password
šŸŽ«Magic LinksURLs with embedded tokens
ā±ļøEphemeralAuto-expire after 1 hour
🚦Rate LimitingPer-IP, per-session throttling
šŸ“Session LogsJSON logs for each tunnel
šŸ’¾RedisOptional persistence
How It Works

Architecture

How ssrok creates secure tunnels between your local server and the public internet

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”     WebSocket/yamux     ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”      HTTP       ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│   Client    │ ◄─────────────────────► │   Server    │ ◄────────────► │  Visitor    │
│ (ssrok CLI) │    Token Required       │  (:80)      │   Token/Pass   │ (Browser)   │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                         ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
       │
       └──── localhost:3000

Client

Your machine running ssrok CLI

Server

ssrok server (your instance or ssrok.onrender.com)

Visitor

Anyone accessing your public URL

Programmatic Access

REST API

Create tunnels programmatically via the REST API for CI/CD pipelines and automated workflows.

Request

curl -X POST https://your-server.com/api/register \
  -H "Content-Type: application/json" \
  -d '{
    "port": 3000,
    "password": "optional",
    "rate_limit": 60,
    "use_tls": false,
    "expires_in": "1h"
  }'

Response

{
  "uuid": "abc123",
  "url": "https://your-server.com/abc123",
  "token": "xyz789",
  "expires_in": "1h0m0s"
}

Connect via WebSocket

wss://your-server.com/ws/abc123?token=xyz789

Request Fields

FieldTypeRequiredDescription
portintYesLocal port to tunnel
passwordstringNoOptional password protection
rate_limitintNoRequests per minute (0=unlimited)
use_tlsboolNoEnable TLS for local connection
expires_instringNoDuration (e.g. "1h", "30m")

Security Features

  • Token Authentication: Required for all connections to prevent unauthorized usage
  • Password Protection: Optional SHA256 password protection for your public URLs
  • Rate Limiting: Built-in DDoS prevention (default: 60 req/min/IP), fully configurable
  • Brute Force Protection: IP banning after 5 failed authentication attempts (15 min ban)
  • Audit Logging: Comprehensive logs for all security-critical events

Limitations

  • 100MB Body Limit: Maximum allowed request body size (e.g. file uploads)
  • Set-Cookie stripped: Cookie-based sessions will not persist immediately on the tunnel domain. Use JWT/Bearer tokens for API authentication
  • Strict-Transport-Security (HSTS) stripped from responses
  • Content-Security-Policy (CSP) stripped from responses
  • X-Frame-Options & X-Xss-Protection stripped from responses
Server Configuration

Environment Variables

VariableDefaultDescription
PORT80Server listen port
SSROK_SERVERlocalhostPublic hostname
SSROK_ENABLE_TLSfalseEnable built-in TLS
REDIS_HOST(none)Redis host (optional)
REDIS_PORT6379Redis port
Full Control

Self-Hosting

Host your own ssrok server for complete control over your data and infrastructure

  1. 1Build the Server: Run `make build-server` to generate the ssrok-server binary
  2. 2Deploy: Upload the ssrok-server binary to your VPS or cloud server
  3. 3Run: Execute the binary on your server
  4. 4Configure: Set environment variables to match your domain
$ ./ssrok-server

Ready to tunnel?

Install ssrok and start sharing your local servers in seconds.

$ curl -sL https://github.com/selcuksarikoz/ssrok/releases/latest/download/ssrok-darwin-arm64 -o /usr/local/bin/ssrok
$ chmod +x /usr/local/bin/ssrok

Or use Homebrew: brew tap selcuksarikoz/ssrok && brew install ssrok