OwnServer

screen shot

Expose your local game server to the Internet.

This software aims to minimize cost and effort to prepare local game server like Minecraft, Factorio, RUST and so on.

Features

Installation

Recommended

install it by cargo

sh cargo install ownserver

If you dont have cargo installed, please install rustup beforehand

Download binary

Download binary for your OS:
https://github.com/Kumassy/ownserver/releases

cargo build

Optionally, you can build ownserver by yourself:

sh git clone https://github.com/Kumassy/ownserver.git cd ownserver cargo build --release

Usage

:warning: This software has not yet reach stable release. Use with caution! :warning:

We also offer GUI. visit ownserver-client-gui

```sh % ownserver -h ownserver 0.5.1

USAGE: ownserver [OPTIONS]

FLAGS: -h, --help Prints help information -V, --version Prints version information

OPTIONS: --control-port Advanced settings [default: 5000] --local-port Port of your local game server listens e.g.) 25565 for Minecraft [default: 3000] --payload tcp or udp [default: tcp] --token-server Advanced settings [default: https://auth.ownserver.kumassy.com/v1/request_token]

listen on local port

% nc -kl 3000

% ownserver --payload tcp --local-port 3000 Connecting to auth server: https://auth.ownserver.kumassy.com/v1/requesttoken Your proxy server: shard-7924.ownserver.kumassy.com Connecting to proxy server: shard-7924.ownserver.kumassy.com:5000 Your Client ID: client755d0b36-f863-41e1-b5ff-c6c89fdb92a5 +---------------------------------------------------------------------------------------------------+ | Your server tcp://localhost:3000 is now available at tcp://shard-7924.ownserver.kumassy.com:17974 | +---------------------------------------------------------------------------------------------------+

you can send any TCP packet to local port!

% nc shard-7924.ownserver.kumassy.com 17974 hello ```

via cargo

sh % cargo run --release --bin ownserver -- -h

Run Minecraft Server

```sh

run minecraft server

java -Xmx1024M -Xms1024M -jar server.jar nogui

run ownserver client

ownserver -- --payload tcp --local-port 25565 ```

share your public URL!

Use the client API to inspect endpoints and streams

You can query endpoints and streams info using the client API.
You need to specify local port to use the API:

``` % ownserver --payload tcp --local-port 3000 --api-port 9000

% curl -s localhost:9000/endpoints [{"id":"clientbe38a93b-b7a9-46da-9d9d-51df95cad828","localport":3000,"remoteaddr":"shard-5346.ownserver.kumassy.com:13574"}] % curl -s localhost:9000/streams [{"id":"stream24a3b5bb-336d-4b4e-baf3-7ef61bc1b78c"}] ```

How it works

This app creates a private tunnel between our server and your local game server. You'll get a dedicated global public address for your server. All requests to that public address are forwarded to your local game server throught the tunnel.

Similer Project

This software was initially developed as a fork of tunnelto.

Contributing

Project Layout

Running tests

sh cargo test

Self-hosting

You need to deploy ownserver-auth. It issues token to ownserver client.

At first, run ownserver-auth as follows:

sh cd ownserver-auth/ cargo run -- --token-secret supersecret --hosts localhost

Then, run ownserver_server:

sh cd ownserver/ cargo run --bin ownserver-server -- --host localhost --remote-port-start 20000 --remote-port-end 30000 --log-file ./ownserver-server.log --token-secret supersecret

Now, ownserver-server can accept request from ownserver-client:

sh cargo run --bin ownserver -- --payload tcp --local-port 3000 --token-server http://localhost:8123/v0/request_token

Issue/PR

Feel free to open Issues, send Pull Requests!

License

MIT