goport.uz / self-hosting

Run the whole tunnel on your own server.

GoPort is MIT licensed end to end. The same code that runs goport.uz runs on your infrastructure, with your domain, your certificates, and no plan limits.

tunnel trace
$ export GOPORT_SERVER_ADDR=tunnel.example.com:7000

Route active

goport http 8080 → https://myapp.example.com

Why self-host

No vendor lock-in, no traffic ceiling.

Hosted plans exist so you do not have to run a server. If you would rather run it, nothing is held back: self-hosting is the full product, not a stripped-down edition.

A server with a public IP

Any small VPS is enough. The tunnel server listens on TCP 7000 for CLI connections and 8090 for the API.

A domain and a wildcard DNS record

Point example.com and *.example.com at the server. Each tunnel becomes a subdomain of that domain.

A wildcard TLS certificate

Wildcard certificates need a DNS-01 challenge. The repository ships an init-ssl.sh script that walks through it with certbot.

Setup

Five steps from clone to first tunnel.

Budget about five minutes, plus however long your DNS provider takes to propagate the wildcard record.

  1. 01

    Clone the repository

    The tunnel server, the backend, and this website all live in the same MIT-licensed repository.

    Run this in your terminal

    git clone https://github.com/muhammad-deve/GoPort.git && cd GoPort
  2. 02

    Configure the backend

    Copy backend/app/.env.example and fill in your own secrets. Billing variables are optional: leave them empty and every account on your server is unlimited.

    Run this in your terminal

    cp backend/app/.env.example backend/app/.env
  3. 03

    Issue a wildcard certificate

    Run the helper script and add the TXT record it prints to your DNS panel, then let certbot finish the challenge.

    Run this in your terminal

    ./init-ssl.sh
  4. 04

    Start the stack

    Docker Compose brings up the backend, the dashboard, and the tunnel listener. Put your nginx config in front of them using nginx/goport.conf as the template.

    Run this in your terminal

    docker compose up -d
  5. 05

    Point the CLI at your server

    The CLI reads its target from the environment. Set these once in your shell profile and every goport command uses your server instead of goport.uz.

    Run this in your terminal

    export GOPORT_SERVER_ADDR=tunnel.example.com:7000export GOPORT_DOMAIN=example.comexport GOPORT_API_URL=https://back.example.com

Not sure you want to run a server?

The hosted Free plan gives you one tunnel and 5 GB a month with no card. You can move to your own server later without changing a single command, since only the environment variables differ.