Skip to content

Latest commit

 

History

History
462 lines (340 loc) · 17.5 KB

README-TW.md

File metadata and controls

462 lines (340 loc) · 17.5 KB

ManuallyDockerKeypairBinariesVariables
[French] | [Deutsch] | [Nederlands] | [繁體中文] | [简体中文] | [Русский]

SctgDesk 伺服器程式

Docker Pulls build build build

二進位下載

API 文件

這是 RustDesk Server 的修改版本,它是免費和開源的。

  • 第一個區別是這個版本包括新的TCP 協定模式包含在 RustDesk Server Pro 版本中。
  • 第二個區別是此版本包括 Rustdesk Server Pro API 伺服器的初步實現。
    • 支援個人通訊錄
    • 支援組級別的共享通訊錄
      • 唯讀、讀寫、管理員
    • 支援用戶級別的共享通訊錄
      • 唯讀、讀寫、管理員
  • 第三個區別是,此版本包括簡單 Web 控制台的初步實現。

Web 控制台可通過以下位址訪問http://<server-ip>:21114/登錄名 “admin” 和密碼 “Hello,world!” 。
您可以在 builtins API 伺服器中的位址http://<server-ip>:21114/api/doc/.

非互動式 API 文件可在sctgdesk-api-server 存儲庫.

為專案加星標

如果您欣賞我的作品,請考慮給它打星標!🤩 或

TL;博士

您可以使用以下內容docker-compose.yml檔案啟動伺服器:

version: '3'

networks:
  sctgdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21114:21114
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    image: sctg/sctgdesk-server:latest
    command: hbbs -r sctgdesk.example.com:21117
    volumes:
      - ./data:/usr/local/share/sctgdesk
    networks:
      - sctgdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    image: sctg/sctgdesk-server:latest
    command: hbbr
    volumes:
      - ./data:/usr/local/share/sctgdesk
    networks:
      - sctgdesk-net
    restart: unless-stopped

並使用以下命令啟動伺服器:

mkdir -p data
docker-compose up 

二進位檔

二進位檔可用於以下平臺:

  • Linux x86_64靜態連結
  • Linux arm64 靜態連結
  • Linux armv7 靜態連結
  • MacOS 英特爾
  • MacOS Apple Silicon
  • Windows x86_64

預設管理員使用者

預設 admin 使用者是使用使用者名創建的admin和密碼Hello,world!.您可以在 Web 控制臺上首次登錄後更改密碼。

API 獨立版本

api 獨立版本是包括 API 伺服器和 Web 控制台,但不包括 rendez-vous 伺服器的伺服器版本。
獨立版本在其自己的存儲庫中提供sctgdesk-api 伺服器.
所有 api 或 webconsole 相關問題,請參考sctgdesk-api 伺服器存儲庫。

屏幕截圖

Web 控制台

login dashboard devices users groups address books rues add rules

API 文件

apidoc

在 Rustdesk 用戶端中使用

Capture d’écran 2024-05-24 à 12 14 34 Capture d’écran 2024-05-24 à 12 07 21 Capture d’écran 2024-05-24 à 12 07 32

生成自動更新連結

我們修改了用戶端,從 api 伺服器而不是 Github 版本檢索自動更新連結。
要使自動更新連結正常工作,您需要修改用戶端以從 api 伺服器檢索自動更新連結。這你怎麼做:

// src/common.rs
#[tokio::main(flavor = "current_thread")]
async fn check_software_update_() -> hbb_common::ResultType<()> {
    let url=format!("{}/api/software/releases/latest",get_api_server("".to_owned(), "".to_owned())).to_owned();
    log::info!("URL for checking software updates: {}", url);
    //let url = "https://github.com/rustdesk/rustdesk/releases/latest";
    let latest_release_response = create_http_client_async().get(url).send().await?;
    let latest_release_version = latest_release_response
        .url()
        .path()
        .rsplit('/')
        .next()
        .unwrap_or_default();

    let response_url = latest_release_response.url().to_string();

    if get_version_number(&latest_release_version) > get_version_number(crate::VERSION) {
        *SOFTWARE_UPDATE_URL.lock().unwrap() = response_url;
    }
    Ok(())
}

安全

嵌入式 API 伺服器不受保護,也不受 DDOS 攻擊保護。一個好的做法是在 API 伺服器前面使用反向代理。NGINX 是實現此目的的不錯選擇。HAProxy 也是一個不錯的選擇。
我們在生產環境中的 API 伺服器前面使用 HAProxy。 這是我們的HAProxy配置檔,僅作為示例提供。您應該根據自己的需要進行調整。

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log global
    retries 2
    timeout connect 3000ms
    timeout server 5000ms
    timeout client 5000ms

frontend hbbs_wss
    bind 0.0.0.0:21120 ssl crt /etc/haproxy/hbb.pem
    default_backend hbbs_wss_backend

frontend hbbs_api
    mode http
    option forwardfor
    bind 0.0.0.0:21114 ssl crt /etc/haproxy/api.pem
    http-request set-header X-Forwarded-Proto https
    default_backend hbbs_api_backend

frontend hbbs_api_443
    mode http
    option forwardfor
    bind 0.0.0.0:443 ssl crt /etc/haproxy/api.pem
    http-request set-header X-Forwarded-Proto https
    filter compression
    compression algo gzip
    compression type text/css text/html text/javascript application/javascript text/plain text/xml application/json
    compression offload
    default_backend hbbs_api_backend

frontend hbbr_wss
    bind 0.0.0.0:21121 ssl crt /etc/haproxy/hbb.pem
    default_backend hbbr_wss_backend

backend hbbs_api_backend
    mode http
    server srv_main 127.0.0.1:21113

backend hbbs_wss_backend
    server srv_main 127.0.0.1:21118

backend hbbr_wss_backend
    server srv_main 127.0.0.1:21119

hbbs 伺服器使用

[Unit]
Description=Rustdesk Signal Server

[Service]
Type=simple
LimitNOFILE=1000000
ExecStart=/usr/bin/hbbs --api-port=21113 -k AucFCOYVWNHRkJnx13FFh7C0tmUZ3nei5wXKmlfK6WPYthz65fRavaA5HO/OIz2kq+bCSlAqBkZgvikwVGqw/Q== --mask=10.10.0.235/24 -r rendez-vous.example.org -R rendez-vous.example.org
#Environment="RUST_LOG=debug"
Environment="ALWAYS_USE_RELAY=Y"
Environment="OAUTH2_CREATE_USER=1"
Environment="S3CONFIG_FILE=s3config.toml"
Environment="OAUTH2_CONFIG_FILE=oauth2.toml"
WorkingDirectory=/var/lib/rustdesk-server/
User=
Group=
Restart=always
StandardOutput=append:/var/log/rustdesk-server/hbbs.log
StandardError=append:/var/log/rustdesk-server/hbbs.error
# Restart service after 10 seconds if node service crashes
RestartSec=10

[Install]
WantedBy=multi-user.target

限制不需要的訪問

要限制對伺服器的訪問,您可以使用--logged-in-only選項或將LOGGED_IN_ONLY=Y環境變數hbbs伺服器。這會將控制權限制為僅登錄使用者。

即使啟用此選項,使用者仍然可以在 Rendez-vous 伺服器上註冊,但他們將無法控制其他使用者的對等體。如果有人試圖在未登錄的情況下控制對等節點,他們將收到一條錯誤消息:

Error message for unauthenticated control attempt

通過啟用此功能,您可以為伺服器添加額外的安全層並防止未經授權的訪問。

配置LOGGED_IN_ONLY

要啟用此功能,請執行以下操作:

  1. LOGGED_IN_ONLY=Y環境變數hbbs伺服器。
  2. 或者,您可以使用--logged-in-only選項。hbbs伺服器。

要將LOGGED_IN_ONLY環境變數中,您可以將以下行添加到~/.bashrcfile 或等效檔:

export LOGGED_IN_ONLY=Y

RustDesk 伺服器程式

build build build

下載

手動

常見問題

自託管您自己的 RustDesk 伺服器,它是免費和開源的。

如何手動構建

首先,您需要有一個有效的 Rust 開發工具鏈和一個 Node ≥ 20 工作安裝。

  • Unices(Linux、MacOS 等):
DATABASE_URL=sqlite://$(pwd)/db_v2.sqlite3 cargo build --release
  • 帶有 cmd.exe shell 的 Windows:
set "DATABASE_URL=sqlite://%CD%/db_v2.sqlite3" && cargo build --release

將在 target/release 中生成三個可執行檔。

  • hbbs - 帶有 API 伺服器的 RustDesk ID/Rendezvous 伺服器
  • hbbr - RustDesk 中繼伺服器
  • rustdesk-utils - RustDesk CLI 實用程式

您可以在釋放頁。

版本 v1.1.99-40 之後發佈的所有二進位檔都使用 Github Actions 進行證明。您可以通過使用https://search.sigstore.dev/?hash=<sha256>例如。

如果您想要額外的功能RustDesk 伺服器專業版可能更適合您。

如果你想開發自己的伺服器,rustdesk-server-demo對您來說,可能比此 repo 更好、更簡單的開始。

Docker 鏡像

Docker 鏡像是自動生成的,並在每個 github 版本上發佈。

這些映像是針對ubuntu-22.04唯一新增的主二進位檔 (hbbrhbbs).它們可在Docker 中心取代為這些標籤:

建築 圖片:標籤
AMD64 系列 sctg/sctgdesk-server:latest
ARM64V8 sctg/sctgdesk-server:latest
ARM32V7 sctg/sctgdesk-server:latest

您可以直接使用docker run使用以下命令:

docker run --name hbbs --net=host -v "$PWD/data:/usr/local/share/sctgdesk" -d sctg/sctgdesk-server:latest hbbs -r <relay-server-ip[:port]> 
docker run --name hbbr --net=host -v "$PWD/data:/usr/local/share/sctgdesk" -d sctg/sctgdesk-server:latest hbbr 

或沒有--net=host,但 P2P 直連無法使用。

對於使用 SELinux 的系統,將/root/root:z是容器正常運行所必需的。或者,可以完全禁用 SELinux 容器分離,並添加選項--security-opt label=disable.

docker run --name hbbs -p 21114:21114 -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v "$PWD/data:/usr/local/share/sctgdesk" -d sctg/sctgdesk-server:latest hbbs -r <relay-server-ip[:port]> 
docker run --name hbbr -p 21117:21117 -p 21119:21119 -v "$PWD/data:/usr/local/share/sctgdesk" -d sctg/sctgdesk-serverlatest hbbr 

relay-server-ipparameter 是運行這些容器的伺服器的IP位址(或 DNS 名稱)。這自選port參數,如果使用的埠不同於21117hbbr.

您還可以使用 docker-compose,使用此配置作為範本:

version: '3'

networks:
  sctgdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21114:21114
      - 21115:21115
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    image: sctg/sctgdesk-server:latest
    command: hbbs -r sctgdesk.example.com:21117
    volumes:
      - ./data:/usr/local/share/sctgdesk
    networks:
      - sctgdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    image: sctg/sctgdesk-server-server:latest
    command: hbbr
    volumes:
      - ./data:/usr/local/share/sctgdesk
    networks:
      - sctgdesk-net
    restart: unless-stopped

編輯第16行以指向您的中繼伺服器(偵聽埠 21117 的伺服器)。如果需要,您還可以編輯體積行(第 18 行和第 33 行)。

(docker-compose 功勞歸於 @lukebarone 和 @QuiGonLeong)

注意,這裡中國的 sctg/sctgdesk-server-server:latest 可能會替換為 dockerhub 上的最新版本號,例如 sctg/sctgdesk-server-server:1.1.99-37。否則,可能會因鏡像加速而拉取舊版本。

如何創建金鑰對

加密需要金鑰對;如前所述,您可以提供它,但您需要一種方法來創建一個。

您可以使用此指令產生金鑰對:

/usr/bin/rustdesk-utils genkeypair

如果您沒有(或不想要)rustdesk-utils套件,您可以使用 Docker 呼叫相同的命令:

docker run --rm --entrypoint /usr/bin/rustdesk-utils  sctg/sctgdesk-server-server:latest genkeypair

輸出將如下所示:

Public Key:  8BLLhtzUBU/XKAH4mep3p+IX4DSApe7qbAwNH9nv4yA=
Secret Key:  egAVd44u33ZEUIDTtksGcHeVeAwywarEdHmf99KM5ajwEsuG3NQFT9coAfiZ6nen4hfgNICl7upsDA0f2e/jIA==

每個二進位檔都有單獨的 .deb 包,您可以在釋放. 這些套件適用於以下發行版:

  • Ubuntu 22.04 LTS
  • MacOS Intel 或 Apple Silicon
  • Windows x86_64 或 i686

ENV 變數

hbbs 和 hbbr 可以使用這些 ENV 變數進行配置。 您可以像往常一樣指定變數,也可以使用.env檔。

變數 二進位 描述
ALWAYS_USE_RELAY HBBS 如果設置為**“Y”**不允許直接對等連接
DOWNGRADE_START_CHECK HBBBR 降級檢查前的延遲(以秒為單位)
DOWNGRADE_THRESHOLD HBBBR 降級檢查閾值 (bit/ms)
密鑰 HBBS/HBBR 如果設置為 ,則強制使用特定密鑰,如果設置為**"_"**強制使用任意鍵
LIMIT_SPEED HBBBR 速度限制(Mb/s)
OAUTH2_CONFIG_FILE HBBS OAuth2 配置文件的路徑
OAUTH2_CREATE_USER HBBS 如果設置為**"1"**創建不存在的使用者
HBBS/HBBR 偵聽埠(HBB 為 21116 - HBBR 為 21117)
繼電器 HBBS 運行 hbbr 的電腦的 IP 位址/DNS 名稱(以逗號分隔)
RUST_LOG 全部 設置調試級別 (error
S3CONFIG_FILE HBBS S3 配置文件的路徑
SINGLE_BANDWIDTH HBBBR 單個連接的最大頻寬(以 Mb/s 為單位)
TOTAL_BANDWIDTH HBBBR 最大總頻寬(以 Mb/s 為單位)