mr2 can help you expose local server to external network. Support both TCP/UDP, of course support HTTP. Keep it simple, stupid.
Install via nami
$ nami install github.com/txthinking/mr2
NAME:
mr2 - Expose local TCP and UDP server to external network
USAGE:
mr2 [global options] command [command options] [arguments...]
VERSION:
20210401
COMMANDS:
server Run as server mode
client Run as client mode
httpsserver Run as https server mode
httpsclient Run as https client mode
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)
On remote server. Note that the firewall opens TCP and UDP on all relevant ports
$ mr2 server -l :9999 -p password
More parameters: $ mr2 server -h
On local. Assume your remote mr2 server is 1.2.3.4:9999
, your local server is 127.0.0.1:8080
, want the remote server to open port 8888
$ mr2 client -s 1.2.3.4:9999 -p password -P 8888 -c 127.0.0.1:8080
More parameters: $ mr2 client -h
Then access 1.2.3.4:8888
equals to access 127.0.0.1:8080
$ mr2 client -s 1.2.3.4:9999 -p password -P 8888 -c 127.0.0.1:8080
Then access 1.2.3.4:8888
equals to access 127.0.0.1:8080
$ mr2 client -s 1.2.3.4:9999 -p password -P 8888 -c 127.0.0.1:22
Then access 1.2.3.4:8888
equals to access 127.0.0.1:22
$ ssh -oPort=8888 [email protected]
$ mr2 client -s 1.2.3.4:9999 -p password -P 8888 -c 127.0.0.1:53
Then access 1.2.3.4:8888
equals to access 127.0.0.1:53
$ dig github.com @1.2.3.4 -p 8888
$ mr2 client -s 1.2.3.4:9999 -p password -P 8888 --clientDirectory /path/to/www --clientPort 8080
Then access 1.2.3.4:8888
equals to access 127.0.0.1:8080
, web root is /path/to/www
...
On remote server. Assume your domain is domain.com
, cert of *.domain.com
is ./domain_com_cert.pem
and ./domain_com_cert_key.pem
, want https listen on 443
. Note that the firewall opens TCP on all relevant ports
$ mr2 httpsserver -l :9999 -p password --domain domain.com --cert ./domain_com_cert.pem --certKey ./domain_com_cert_key.pem --tlsPort 443
More parameters: $ mr2 httpsserver -h
On local. Assume your remote mr2 httpsserver is 1.2.3.4:9999
, your local HTTP 1.1 server is 127.0.0.1:8080
, want the remote server to open subdomain hey
$ mr2 httpsclient -s 1.2.3.4:9999 -p password --serverSubdomain hey -c 127.0.0.1:8080
More parameters: $ mr2 httpsclient -h
Then access https://hey.domain.com:443
equals to access http://127.0.0.1:8080
A project by txthinking
Licensed under The GPLv3 License