/rttys

Access your device's terminal from anywhere via the web.

Primary LanguageGoMIT LicenseMIT

rttys(中文)

license PRs Welcome Issue Welcome Release Version Build Status

This is the server program of rtty

Usage

download the pre-built release binary from Release page according to your os and arch or compile it by yourself.

git clone https://github.com/zhaojh329/rttys

cd ui
npm install
npm run build
cd ..

./build.sh linux amd64

Authorization

Token

Generate a token

$ rttys token
Please set a password:******
Your token is: 34762d07637276694b938d23f10d7164

Use token

$ rttys run -t 34762d07637276694b938d23f10d7164

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.

Running as a Linux service

Move the rttys binary into /usr/local/bin/

sudo mv rttys /usr/local/bin/

Copy the config file to /etc/rttys/

sudo mkdir /etc/rttys
sudo cp rttys.conf /etc/rttys/

Create a systemd unit file: /etc/systemd/system/rttys.service

[Unit]
Description=rttys
After=network.target

[Service]
ExecStart=/usr/local/bin/rttys run -c /etc/rttys/rttys.conf
TimeoutStopSec=5s

[Install]
WantedBy=multi-user.target

To start the service for the first time, do the usual systemctl dance:

sudo systemctl daemon-reload
sudo systemctl enable rttys
sudo systemctl start rttys

You can stop the service with:

sudo systemctl stop rttys

Database Preparation

Sqlite

sqlite3://rttys.db

MySql or Mariadb

mysql://rttys:rttys@tcp(localhost)/rttys

On database instance, login to database console as root:

mysql -u root -p

Create database user which will be used by Rttys, authenticated by password. This example uses 'rttys' as password. Please use a secure password for your instance.

CREATE USER 'rttys' IDENTIFIED BY 'rttys';

Create database with UTF-8 charset and collation. Make sure to use utf8mb4 charset instead of utf8 as the former supports all Unicode characters (including emojis) beyond Basic Multilingual Plane. Also, collation chosen depending on your expected content. When in doubt, use either unicode_ci or general_ci.

CREATE DATABASE rttys CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';

Grant all privileges on the database to database user created above.

GRANT ALL PRIVILEGES ON rttys.* TO 'rttys';
FLUSH PRIVILEGES;

Quit from database console by exit.

Contributing

If you would like to help making rttys better, see the CONTRIBUTING.md file.