OwnServer
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.
-
Cost you'll save
- You can utilize any redundunt compute resource for game server as long as they can connect to the Internet.
- You can save cost for Cloud, VPS.
-
Effort you'll save
- No firewall, NAT settings is required.
- GUI application is also available.
Features
- Expose your local TCP/UDP endpoint to the Internet
- Offer GUI client for game server for Minecraft, factorio, RUST, etc.
Installation
Recommended
install it by cargo
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:
Usage
:warning: This software has not yet reach stable release. Use with caution! :warning:
We also offer GUI. visit ownserver-client-gui
)
via cargo
Run Minecraft Server
# run minecraft server
# run ownserver client
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 --endpoint 25565/tcp --api-port 9000
% curl -s localhost:9000/endpoints
[[{"id":"02291214-8647-4d08-ace3-032ac255bb14","protocol":"TCP","local_port":3010,"remote_port":19083}]]
% curl -s localhost:9000/streams
[{"stream_id":"5768354e-97c9-4c6a-8cd2-8163a1f3621c","remote_info":{"remote_peer_addr":"x.x.x.x:13367"}}]
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
-
ownserver/ownserver
- include executable of client application
- also serves library for ownserver-client-gui
-
ownserver/ownserver_lib
- define transmission protocol between client and server
-
ownserver/ownserver_server
- establish private tunnel to client
- forward request between public endpoints to a set of client
-
- performs user authentication and load balancing
-
- GUI for ownserver client
Running tests
Self-hosting
You need to deploy ownserver-auth. It issues token to ownserver client.
At first, run ownserver-auth as follows:
- generate secure string for
--token-secret
.- This is a secret shared between
ownserver-auth
andownserver-server
. ownserver_server
verifies the signature based on--token-secret
to ensure that the token is legitimate.
- This is a secret shared between
--hosts
is a list of hostname ofownserver_server
.- If you deploy multiple
ownserver_server
, list hostname ofownserver_server
separated by commas.
- If you deploy multiple
Then, run ownserver_server
:
--host
is the hostname for runningownserver_server
.- Remote ports are selected between
--remote-port-start
and--remote-port-end
--log-file
is the location of theownserver-server
log file--token-secret
is the shared secret betweenownserver-auth
andownserver_server
.
Now, ownserver-server
can accept request from ownserver-client
:
- You should specify
--token-server
to ensureownserver-client
uses your localownserver-auth
.
Issue/PR
Feel free to open Issues, send Pull Requests!
License
MIT