#game-server #minecraft #networking #local-server #game #client-server

bin+lib ownserver

将您的本地游戏服务器暴露到互联网上

3 个不稳定版本

0.6.0 2023年6月24日
0.5.1 2022年9月18日
0.5.0 2022年9月18日

#106 in WebSocket

MIT 许可证

50KB
861

OwnServer

screen shot

将您的本地游戏服务器暴露到互联网上。

该软件旨在最大限度地减少准备像Minecraft、Factorio、RUST等本地游戏服务器所需的成本和努力。

  • 您将节省的成本

    • 只要它们能连接到互联网,您就可以利用任何冗余的计算资源作为游戏服务器。
    • 您可以节省云、VPS的成本。
  • 您将节省的努力

功能

  • 将您的本地TCP/UDP端点暴露到互联网上
  • 为Minecraft、factorio、RUST等游戏服务器提供GUI客户端

安装

使用 cargo 安装它

cargo install ownserver

如果您还没有安装cargo,请先安装 rustup

下载二进制文件

下载适用于您的操作系统的二进制文件
https://github.com/Kumassy/ownserver/releases

cargo build

可选地,您可以自己构建ownserver

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

用法

⚠️ 此软件尚未达到稳定版本。请谨慎使用!⚠️

我们还提供GUI。访问 ownserver-client-gui

% ownserver -h
ownserver 0.5.1

USAGE:
    ownserver [OPTIONS]

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

OPTIONS:
        --control-port <control-port>    Advanced settings [default: 5000]
        --local-port <local-port>        Port of your local game server listens e.g.) 25565 for Minecraft [default:
                                         3000]
        --payload <payload>              tcp or udp [default: tcp]
        --token-server <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/request_token
Your proxy server: shard-7924.ownserver.kumassy.com
Connecting to proxy server: shard-7924.ownserver.kumassy.com:5000
Your Client ID: client_755d0b36-f863-41e1-b5ff-c6c89fdb92a5
+---------------------------------------------------------------------------------------------------+
| Your server tcp://127.0.0.1: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

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

运行Minecraft服务器

# run minecraft server
java -Xmx1024M -Xms1024M -jar server.jar nogui

# run ownserver client
ownserver  -- --payload tcp --local-port 25565

分享您的公共URL!

使用客户端API检查端点和流

您可以使用客户端API查询端点和流信息。
您需要指定本地端口才能使用API

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

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

工作原理

此应用程序在您的本地游戏服务器和我们的服务器之间创建一个私有隧道。您将为您的服务器获得一个专用的全局公共地址。所有对该公共地址的请求都通过隧道转发到您的本地游戏服务器。

类似项目

  • ngrok

    • 用Go编写
    • 支持HTTP、HTTPS和TCP
  • tunnelto

    • 用Rust编写
    • 支持HTTP

此软件最初是作为 tunnelto 的分支开发的。

贡献

项目布局

  • ownserver/ownserver

    • 包含客户端应用程序的可执行文件
    • 同时为 ownserver-client-gui 提供库
  • ownserver/ownserver_lib

    • 定义客户端和服务器之间的传输协议
  • ownserver/ownserver_server

    • 建立到客户端的私有隧道
    • 在公共端点之间转发请求到一组客户端
  • ownserver-auth

    • 执行用户身份验证和负载均衡
  • ownserver-client-gui

    • ownserver 客户端的 GUI

运行测试

cargo test

自托管

您需要部署 ownserver-auth。它向 ownserver 客户端颁发令牌。

首先,按如下方式运行 ownserver-auth

cd ownserver-auth/
cargo run -- --token-secret supersecret --hosts localhost
  • --token-secret 生成安全字符串。
    • 这是 ownserver-authownserver-server 之间共享的秘密。
    • ownserver_server 根据基于 --token-secret 的签名来验证签名,以确保令牌是合法的。
  • --hostsownserver_server 的主机名列表。
    • 如果您部署了多个 ownserver_server,请用逗号分隔 ownserver_server 的主机名。

然后,运行 ownserver_server

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
  • --host 是运行 ownserver_server 的主机名。
  • 远程端口在 --remote-port-start--remote-port-end 之间选择
  • --log-fileownserver-server 日志文件的位置
  • --token-secretownserver-authownserver_server 之间的共享秘密。

现在,ownserver-server 可以接受来自 ownserver-client 的请求

cargo run --bin ownserver -- --payload tcp --local-port 3000 --token-server http://127.0.0.1:8123/v0/request_token
  • 您应指定 --token-server 以确保 ownserver-client 使用您本地的 ownserver-auth

问题/PR

请随意打开问题,发送拉取请求!

许可协议

MIT

依赖关系

~22–37MB
~689K SLoC