Files
archived-rttys/README.md
2025-06-17 22:39:08 +08:00

160 lines
4.1 KiB
Markdown

# rttys([中文](/README_ZH.md))
[1]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=plastic
[2]: /LICENSE
[3]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=plastic
[4]: https://github.com/zhaojh329/rttys/pulls
[5]: https://img.shields.io/badge/Issues-welcome-brightgreen.svg?style=plastic
[6]: https://github.com/zhaojh329/rttys/issues/new
[7]: https://img.shields.io/badge/release-4.4.5-blue.svg?style=plastic
[8]: https://github.com/zhaojh329/rttys/releases
[9]: https://github.com/zhaojh329/rttys/workflows/build/badge.svg
[12]: https://deepwiki.com/badge.svg
[13]: https://deepwiki.com/zhaojh329/rttys
[![license][1]][2]
[![PRs Welcome][3]][4]
[![Issue Welcome][5]][6]
[![Release Version][7]][8]
![Build Status][9]
[![Ask DeepWiki][12]][13]
This is the server program of [rtty](https://github.com/zhaojh329/rtty)
## Build from source
golang and node 20+ is required
cd ui
npm install
npm run build
cd ..
go build
## Authorization(optional)
### Token
A token is a random string generated by users themselves, which can be regarded
as the password for device connecting.
$ rttys run -t 34762d07637276694b938d23f10d7164
### Use your own authentication server
If the device authentication URL is configured, when the device connecting,
rttys will initiate an authentication request to this URL, and the authentication
server will return whether the authentication has been passed.
Request data format:
{"devid":"test", "token":"34762d07637276694b938d23f10d7164"}
Authentication Server Response Format:
{"auth": true}
### mTLS
You can enable mTLS by specifying device CA storage (valid file) in config file or from CLI (variable ssl-cacert).
Device(s) without valid CA in storage will be disconnected in TLS handshake.
## nginx proxy
```
# rttys.conf
addr-user: 127.0.0.1:5913
addr-http-proxy: 127.0.0.1:5914
http-proxy-redir-url: http://web.your-server.com
http-proxy-redir-domain: .your-server.com
```
```
# nginx.conf
server {
listen 80;
server_name rtty.your-server.com;
location /connect/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:5913;
}
location / {
proxy_pass http://127.0.0.1:5913;
}
}
server {
listen 80;
server_name web.your-server.com;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:5914;
}
}
```
The parameter 'http-proxy-redir-url' and 'http-proxy-redir-domain' in rttys.conf can also be configured
by setting new HTTP headers in nginx.
```
server {
listen 80;
server_name rtty.your-server.com;
location /connect/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:5913;
}
location /web/ {
proxy_set_header HttpProxyRedir http://web.your-server.com;
proxy_set_header HttpProxyRedirDomain .your-server.com
proxy_pass http://127.0.0.1:5913;
}
location / {
proxy_pass http://127.0.0.1:5913;
}
}
server {
listen 80;
server_name web.your-server.com;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:5914;
}
}
```
## Docker
### Simple run
sudo docker run -it -p 5912:5912 -p 5913:5913 -p 5914:5914 zhaojh329/rttys:latest \
run --addr-http-proxy :5914
### Using config file
sudo mkdir -p /opt/rttys
sudo sh -c 'echo "addr-http-proxy: :5914" > /opt/rttys/rttys.conf'
sudo docker run -it -p 5912:5912 -p 5913:5913 -p 5914:5914 -v /opt/rttys:/etc/rttys \
zhaojh329/rttys:latest run -conf /etc/rttys/rttys.conf
## Contributing
If you would like to help making [rttys](https://github.com/zhaojh329/rttys) better,
see the [CONTRIBUTING.md](https://github.com/zhaojh329/rttys/blob/master/CONTRIBUTING.md) file.