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

ownserver_lib

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

3个不稳定版本

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

#28 in #game-server

每月40次下载
用于 ownserver

MIT 许可证

12KB
101

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://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

% 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-客户端-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://localhost:8123/v0/request_token
  • 您应该指定 --token-server 以确保 ownserver-client 使用您的本地 ownserver-auth

发行/PR

请随时提出问题,发送拉取请求!

许可证

MIT

依赖关系

~1.7–2.6MB
~53K SLoC