Skip to content

Fork-Rover/lanthing-svr

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lanthing-svr

Java CI with Maven

Lanthing的服务器。

编译

标准的Maven构建。

部署

这是一件非常麻烦的事,如果只是希望"画面数据"、"声音数据"、"控制数据"使用自己的服务器,自建中继服务器即可。

没有特殊需求,比如二次开发,不建议自己部署lanthing-svr,这个过程只有沮丧。

部署步骤如下,不会列出每一条命令,只说明做什么和为什么:

  1. 编译lanthing-svr,输出两个包ltsvr.jarltsig.jar
    • 只从lanthing-svr看,输出两个包是一件很奇怪的事:为什么不能合成一个lanthing-svr.jar
    • 需要区分ltsvr.jarltsig.jarlanthing-pc的架构决定的,即便是合成一个lanthing-svr.jar,内部也是分成两个独立的角色,分别监听自己的TCP端口。
  2. 配置config/ltsig.yml,主要是socket-svr.ipsocket-svr.port两项。
    • socket-svrenable-ssl以及后面的配置项不建议配置。内置的TLS支持更多是用于开发测试,真正搭服务时,应该使用一个反向代理去做这件事,比如nginx。
  3. 启动ltsig.jar
    • java -jar -Dspring.config.location=/path/to/ltsig.yml /path/to/ltsig.jar
  4. 生成设备ID
    • ltsvr.jar使用预先生成ID的方式,为所有新连接上来的设备分配ID。
    • ID使用sqlite3数据库存储,建表SQL如下:
    CREATE TABLE "unused_device_ids" (
    "id"	INTEGER NOT NULL UNIQUE,
    "deviceID"	INTEGER NOT NULL UNIQUE,
    PRIMARY KEY("id" AUTOINCREMENT)
    )
    CREATE TABLE IF NOT EXISTS used_device_ids2 (
            "id"	        INTEGER NOT NULL UNIQUE,
            "createdAt"	DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
            "updatedAt"	DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
            "deviceID"     INTEGER,
            "cookie"        TEXT,
            PRIMARY KEY("id" AUTOINCREMENT)
        );
    CREATE TRIGGER IF NOT EXISTS UpdateTimestamp
        AFTER UPDATE
        ON used_device_ids2
    BEGIN
        UPDATE used_device_ids2 SET updatedAt = CURRENT_TIMESTAMP WHERE id=OLD.id;
    END;
    • 你可以手动插入自己想要的ID,或者使用idgenerator自动生成大约9亿个乱序ID,生成的ID每20万存一个文件。
  5. 配置conf/ltsvr.yml,配置项比较多,重点如下:
    • spring.datasource.url:指向sqlite3数据库文件
    • server-address.relays:中继服务器,非必须
    • server-address.reflexes:反射服务器,必须,且要有3个或以上。当前只支持STUN协议,未来会有自定义协议
    • controlled-socket-svr:port和ip必填,其它跟TLS相关的不要使用,理由同上
    • controlling-socket-svr:port和ip必填,其它跟TLS相关的不要使用,理由同上
    • signaling:指向你的ltsig.jar对外暴露的端口和IP,必填
  6. 启动ltsvr.jar
    • java -jar -Dspring.config.location=/path/to/ltsvr.yml /path/to/ltsvr.jar
  7. 配置反向代理
    • 这部分知识超出了这个README的范围,只提几个重点
    • 代理的是TCP/TLS长连接,而不是HTTP/HTTPS
    • 需要代理三个端口,ltsig.jar一个,ltsvr.jar两个
    • 你可能需要申请一个域名,或者直接使用IP
    • 你可能需要申请一张证书,或者使用自签证书
  8. 哈哈,没完呢
  9. 转到项目lanthing-pc,配置服务器地址、端口和证书
    • lanthing-pc/certs/trusted-root.cert里的内容,替换成你要用的证书
    • 修改options-default.cmakeoptions-user.cmake里的
      • LT_SERVER_ADDR:你的服务器地址
      • LT_SERVER_SVC_PORT:你的controlled-socket-svr对外暴露的端口
      • LT_SERVER_APP_PORT:你的controlling-socket-svr对外暴露的端口
  10. 编译lanthing-pc,完成!
    • 你成功自建服务器
    • 要使用你的服务器,必须使用你编译的lanthing-pc
    • 你编译的lanthing-pc只能跟你编译的lanthing-pc通信,与官方GitHub下载的无法互通

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%