核心功能与架构
- 主要用途:通过 Web 浏览器实现对远程设备(如嵌入式 Linux 设备)的终端访问,无需公网 IP 或 VPN。 它采用客户端-服务端架构:
rtty(C 语言编写的客户端)运行在设备端,rttys(Go 语言编写的服务端)运行在服务器端,两者通过 WebSocket 协议通信。2关键特性:
- 使用设备 ID 唯一标识设备,支持断线自动重连。
- 低资源占用,适合 OpenWrt、Buildroot 等嵌入式 Linux 系统。
- 提供 Web 界面进行设备管理,支持用户认证和权限控制。
服务端:
git clone https://github.com/zhaojh329/rttys
cd ui
npm install
npm run build
cd ..
go build
客户端:
git clone --recursive https://github.com/zhaojh329/rtty.git
sudo yum install -y libev-devel openssl-devel
cd rtty && mkdir build && cd build
cmake .. && make install
容器化部署
FROM 'harbor.ctyuncdn.cn/devops/alpine:3.18' AS ui
WORKDIR /rttys-ui
COPY ui .
RUN apk add npm
RUN npm install && npm run build
FROM 'harbor.ctyuncdn.cn/ctlb/golang/golang:1.22.1-alpine3.18' AS go_build
WORKDIR /rttys-build
ENV GOOS=linux
ENV GOARCH=amd64
ENV GOPROXY=https://goproxy.cn,direct
COPY . .
COPY --from=ui /rttys-ui/dist ui/dist
RUN CGO_ENABLED=0
VersionPath="rttys/version"
GitCommit=$(git log --pretty=format:"%h" -1)
BuildTime=$(date +%FT%T%z)
go build -ldflags="-s -w -X $VersionPath.gitCommit=$GitCommit -X $VersionPath.buildTime=$BuildTime"
FROM 'harbor.ctyuncdn.cn/devops/alpine:3.18'
COPY --from=go_build /rttys-build/rttys /usr/bin/rttys
ENTRYPOINT ["/usr/bin/rttys"]