# 架設 RustDesk server 與 clint端使用
<style>
html, body, .ui-content {
background-color: #333;
color: #ddd;
}
body > .ui-infobar {
display: none;
}
.ui-view-area > .ui-infobar {
display: block;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
color: #ddd;
}
.markdown-body h1,
.markdown-body h2 {
border-bottom-color: #ffffff69;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #fff;
}
.markdown-body img {
background-color: transparent;
}
.ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a {
color: white;
border-left: 2px solid white;
}
.expand-toggle:hover,
.expand-toggle:focus,
.back-to-top:hover,
.back-to-top:focus,
.go-to-bottom:hover,
.go-to-bottom:focus {
color: white;
}
.ui-toc-dropdown {
background-color: #333;
}
.ui-toc-label.btn {
background-color: #191919;
color: white;
}
.ui-toc-dropdown .nav>li>a:focus,
.ui-toc-dropdown .nav>li>a:hover {
color: white;
border-left: 1px solid white;
}
.markdown-body blockquote {
color: #bcbcbc;
}
.markdown-body table tr {
background-color: #5f5f5f;
}
.markdown-body table tr:nth-child(2n) {
background-color: #4f4f4f;
}
.markdown-body code,
.markdown-body tt {
color: #eee;
background-color: rgba(230, 230, 230, 0.36);
}
a,
.open-files-container li.selected a {
color: #5EB7E0;
}
</style>
> [color=#907bf7] [name=梓育(moon.starsky37@gmail.com)] [time=Wed, Nov 23, 2022 10:00 AM]
![](https://i.imgur.com/C014dlZ.png)
RustDesk 是一款開源的跨平台遠端GUI軟體,類似於 Anydesk 或 TeamViewer,但開源且免費。
雖然 RustDesk 提供了幾個免費的中繼服務器,但如果對資安上有疑慮,官方也提供了可以自行架設的中繼伺服器的方案。而且在docker(-compose)已經安裝完的情況下,可以更接近無痛安裝。
[TOC]
## 安裝docker
<iframe width="100%" height="600" src="https://docs.docker.com/engine/install/ubuntu" frameborder="0"></iframe>
## 安裝docker-compose
* 先看看官網查看目前釋出版本: https://github.com/docker/compose/releases/latest
* 下載 docker-compose 到 /usr/local/bin/docker-compose
```bash
sudo curl -L "https://github.com/docker/compose/releases/download/{YOUR-DOCKER-COMPOSE-VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```
* 將 /usr/local/bin/docker-compose 建立軟連結到 /usr/bin/docker-compose 以避免輸入指令時找不到 docker-compose 指令
```bash
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
```
* 以上步驟也可以用一行指令完成
```bash
v=$(curl -s https://github.com/docker/compose/releases/latest) && v=${v#*href} && v=${v#*\"} && v=${v%\"*} && v=${v##*/} && sudo curl -L "https://github.com/docker/compose/releases/download/${v}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose && sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
```
最後可以檢查版本確認是否有安裝成功。
```
docker-compose --version
```
## 安裝RustDesktop Server
官方提供的架設文件在: https://rustdesk.com/docs/en/self-host/install
其中我們會使用docker-compose的方式進行安裝。
首先我們需要知道我們中繼伺服器,也就是目前我們架設docker compose的這台機器用的IP,但如果已經設定好對外的網域的話,也可以直接使用你設定的domain即可。
```
hostname -I
```
接著建立一個docker-compose啟用檔案。
```
touch docker-compose.yml
```
接著用nano、vim或任何文字編輯器填入以下內容並存檔,其中第16行的 ```example.com:21117```,需要改成你的IP或是你的網域。
e.g.```192.168.0.XXX:21117```
```bash=
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
command: hbbs -r example.com:21117
volumes:
- ./hbbs:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./hbbr:/root
networks:
- rustdesk-net
restart: unless-stopped
```
完成之後執行
```
docker-compose up -d # -d會在背景執行,如果想先看到執行情況的話可以不加
```
可以看到log會有以下內容代表成功安裝
![](https://i.imgur.com/K2232fS.png)
## Clint端設定伺服器及連線到其他電腦
為了展示結果我們會除了中繼伺服器之外再額外設定兩台電腦(一台ubuntu desktop,一台windows)。
在個別的電腦可以先安裝client side對應的軟體。
下載頁面: https://github.com/rustdesk/rustdesk/releases
安裝完之後執行會看到以下畫面
![](https://i.imgur.com/PbIBznw.png)
點選ID旁邊的更多選項並點選"ID/Relay Server"看到會跳出來一個新的小視窗,並在"ID Server"空格中填入你剛剛中繼伺服器的IP或網域。
![](https://i.imgur.com/K4QEhtb.png)![](https://i.imgur.com/33RhLzn.png)
當兩台電腦的Client Side都設定好之後,假設你想要從Windows連線到Ubuntu Desktop的電腦,你要在Windows的Client Side中的下圖位置填入,Ubuntu的連線ID
![](https://i.imgur.com/dEc0gET.png)
填了之後案Connect 然後在這個畫面稍代之後會要填入密碼(或者在ubuntu那台電腦上跳出來的新視窗直接按下Accept),就可以完成連線了
![](https://i.imgur.com/XtKBLx8.png)
![](https://i.imgur.com/KSfZc6T.png)
* 連線完成的畫面
![](https://i.imgur.com/HDnx4oW.png)
除了遠端桌面外,點選他的Transfer File也可以看到像是FileZilla一樣的檔案傳輸介面
![](https://i.imgur.com/UoMKj5s.png)