服務配置¶
properties 服務配置是 FIRERPA 服務的系統配置,它是 ini 格式的設定檔。透過編寫此檔案,您可以讓 FIRERPA 在啟動時自動連接到 VPN、代理、自動進行 FRP 連接埠轉發或設定登入密碼、憑證以及其他系統配置等。您可以透過專案中的 properties.example 文件或者下文來檢視可配置的項目。
檔案格式¶
我們需要為您介紹服務端讀取服務配置時的處理邏輯以防止您產生混淆。服務配置使用的是標準 ini 格式,其中必須包含 [DEFAULT] 節,您可以直接在 DEFAULT 節內寫入配置項,也可以自己新建一個節來寫入配置,這樣您可以方便的知道這個配置是哪裡來的而不是都放在一起混作一團。
現在我們有如下的配置,您可以看到每個節內都有一個 port 配置,這是允許的,服務最終會使用 65001 作為連接埠。因為如果不同節中有重複配置,服務在讀取時會以最後一個節內的配置為準。所以,如果您覺得配置沒有產生作用,可以查看是否是被後續配置覆蓋。
[DEFAULT]
port=65000
[abc]
port=65001
所以,參考這個標準,您也可以為每個服務的配置分組,比如像下面這樣為 fwd 服務建立一個節。
[DEFAULT]
port=65000
[fwd]
fwd.enable=true
fwd.host=123.123.123.123
fwd.port=9911
fwd.token=abc123
fwd.rport=8080
配置方式¶
下面為您介紹服務配置的幾種配置方式,通常我們建議您使用 WebUI 進行配置,最不容易出錯。但如果您有更高要求如大量部署等情境,WebUI 可能不適合您,您可以參考手動配置。
APP 內配置¶
APP 內配置相對簡單,不過您也需要先編寫好設定檔並以文字的形式複製到安裝手機上,打開 APP 後轉到配置頁面,將配置字串貼到編輯框內並點擊應用配置按鈕即可,但是您需要注意請務必保留 [DEFAULT] 節。當然,如果您覺得可能出錯,您也可以透過 WebUI 配置。
WebUI 內配置¶
您可以直接打開 WebUI 遠端桌面,並點擊右上角的配置圖示進行配置,如下圖,您可以進行可視化編輯也可以點擊 Raw Text 模式進行文字模式編輯。配置完成後可直接點擊 Apply Config 儲存配置,但是服務類配置如代理、FRP 等將不會生效,如您想立即生效,請勾選 Reload Service 後再點擊 Apply Config 按鈕,這將會完全重新載入服務端,您的遠端桌面也會暫時斷連。
手動配置¶
手動配置需要注意您編寫的設定檔格式合法,否則服務將不會使用您的配置。首先您需要確保設定檔包含 [DEFAULT] 節,即使這個節可能沒有配置。其次確保您使用的編輯器不會添加額外的隱藏字元,請不要使用 notepad 等基礎編輯器編寫。一個合法的設定檔應該使用 UTF-8 編碼,並嚴格確保換行符為 \n 或者 \r\n,我們建議使用 \n 換行。一個範例的設定檔如下。
[DEFAULT]
[fwd]
fwd.enable=true
fwd.host=123.123.123.123
fwd.port=9911
fwd.token=abc123
fwd.rport=8080
或者如果您覺得麻煩,直接全塞到 DEFAULT 節內也算完全可以的。
[DEFAULT]
fwd.enable=true
fwd.host=123.123.123.123
fwd.port=9911
fwd.token=abc123
fwd.rport=8080
當您的設定檔編寫完成後,您需要手動將設定檔放到手機上的特定目錄。預設情況下分為兩種,如果您的服務端是準備使用 root 身份啟動的,那麼設定檔應該儲存於 /data/usr/.local/,如果是 shell 身份,則儲存於 /data/local/tmp/usr/.local/。您只需要確保對應目錄存在,如果不存在可以手動建立,隨後將設定檔重新命名為 properties 並使用 adb push 到對應目錄即可。
注意
這裡有個特殊情況,如果您使用的是 APP 部署的服務,由於 APP 會使用一個隨機的父級目錄作為服務執行目錄,導致設定檔目錄具有隨機性,所以您無法對設備統一進行配置。
配置參數¶
以下配置為服務端完整可用的配置項目,請勿直接複製該內容,僅挑選您需要的部分或者服務進行複製修改,直接複製完整內容可能會導致服務異常。
[DEFAULT]
port=65000 ; 設定服務的監聽連接埠。
; webui.* 鍵只允許在 DEFAULT 節中使用,您可以預設遠端桌面的各種參數。
webui.darkmode = off ; 是否啟用遠端桌面深色主題。
webui.audio = on ; 是否啟用遠端桌面音訊(需要 Android 10+)。
webui.upload-path = /data/local/tmp/uploads ; 設定遠端桌面拖放上傳的預設目錄(目錄必須存在)。
webui.share-clipboard = off ; 是否啟用遠端桌面雙向剪貼簿共享。
webui.touch.use-screen-size = off ; 使用原始螢幕尺寸計算觸控座標(特殊情況下啟用)。
webui.webrtc = on ; 是否啟用遠端桌面 WebRTC。
; 設定 WebRTC STUN/TURN 伺服器位址(多個位址用逗號分隔)。
; 範例 stun 伺服器:stun:stun.device-farm.com
; 範例 turn 伺服器:turn://user:pass@example.com:3478?transport=tcp
webui.webrtc.ice-server = stun:stun.device-farm.com
webui.video.h264 = on ; 是否啟用 H264 編碼。
webui.video.backend = 0 ; 設定視訊後端實作(0=預設,1=硬體)。
webui.video.scale = 0.5 ; 設定視訊縮放比例(0.1-1.0,1.0 表示全解析度)。
webui.video.quality = 50 ; 設定視訊品質(10-100)。
webui.video.fps = 35 ; 設定期望的視訊影格率(10-60)。
; 設定服務憑證。它將加密您的遠端桌面和 API 流量,並啟用密碼認證。您可以透過執行 'base64 -w0 lamda.pem' 來取得以下配置值。
cert=TEFNREEgU1NMIENFUlRJRklDQVRFIChDTj10ZXN0LFBBU1NXRD1hMWMwZTNlYTcwN2E1NGRlN2EwZjk1KQotLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KTUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dTa0FnRUFBb0lCQVFEVmNMWlA5b0xRWkRIRgp5V0pTa2U0Z0crSUpmSCtMWlk0cXUzdS9OckRwSHZCN2k5V01rMWxRL2FMSGI0V3ZqelBLK1RITm9rRzc2MENRClhBTUpWS0dmYXRwcmNLUWdvMGhvWDZ2NlhsTVlZUlNRbW9wN3pSaUtnN3ZxKzV2S09DQ2RKcDFlSVNiZXcyTEgKTmYxL3JZelpwa1Q1bHoxTGZkem00eXJBS3VNa0tyZ3pnTzJRcE9CQVdYdmdiWG9BMDdidDdOODZZOGdNZFUwdAp6Ui9EcmhLTi9JMVdYSk11MU4wQW5UbDJRdEhEb0dCN0UyS0xpdmwybDZJdnRrYWJ4RE55Y2lHbUxOUGlMRklrCllPSHlnMUg3MUJ2NU04NE5TWDc1c2xuOXVNUGUzOVNFVlJoU0ptNHcvT2tXZnA5dGpZRUx3dHphdFhoSWJoS3MKaC9OZU1lOWRBZ01CQUFFQ2dnRUFCYlFuWUdlcFdKYjAydURtSnhLNGx2OFNhL0o1dzJpSldMYjk0dW1SUExRKwpTa1E5c1Zpc0JiQU1JNHc2dWFyNEFBVTh3WGxaTndPekMvM2V6dWNHRXFreEFReXM0VDB4SXRPUkF2WExxVlowCkl1WnpxNW53Si9OeFFzeEtmaWhBZkRLYlRmZjdmcG5MWlV0dlpNbG5LWUhQVExtRlFua3drckwyRE5YdDVVOTYKYXJUUDVOY0x1aDQ2dU93alJUOWhaNytYQi9ubU9LeTV4V3hoNWVMQmJJUTJrS0UvdWViUlVYRGZNdG5tbTh2aApRSG9VM3N5dzlZcE1xRDlWQWppcGlqQXRwbUlwa2w1emRWSE52Q1dCSGk2NjZxKzF6cUpHeFVUODBseHo1N2R1ClRvRFFQc1l0OFFEL3ZjNGkxajd0bDZyRzNQWkJNM05LNVR5ZFYyRnlnUUtCZ1FEYUcycnV3aWxyYUdZRzZNQWwKNEF2WW1BY0hHQWUwQjR0ZmtkdS9QandlRWQyWUF2TjJIQWV1Z1ZUSWg1eFplUlIwNFE4ZVNGenBTaEpwREpkNAp1TEhHcXJ2cmpXL1greEVIc081NnNjNjRiem1weWJWQXBlQnA4NlFGSTk4V3FmZkFyN3FzbzhweFJjNmdTRU1uCk5TcXV1Z2psYU05TlJmcUo4ci82RklmQkxRS0JnUUQ2aGJ0Z2dIdVJoTHhHYWNNaERvOVppcXJlNi9HN1dvZnQKR2FGZmFQM2xZNTNmM0hPdSsyNTZMWDY1ZWFYRTdrbXlQOGRDM2VWL24xT3dvTHdBYm1BZ2pEWVd1N09KdGk4QQpPbG9VNmtnTkVwNWcwOHpVWlBaR3NSMkZMd2VpUkgrQ3ZOdFBZakJydmFIQUtVU2lLa3BKdEpWeFpIdUl6SlpGCjVUZkM2VjNrOFFLQmdEeWp0TlpPKzA4V2hvOVROT0VTNnBnOHBHK1BlY3pPOEN3UkZJU1dYQWFNTnd6bGZTVVEKWS81YmpPUDMrRHRVRTZEdlZkRzRrc1IxeUtxV1NxTFF6dlNLVVpjTEN0YUV3bFplRmQvZEFibDdpdyt1dWdzUQpVMVdCM005bENzaDFWeUdtZWdNM3dyZzlqVlk0NFJyTWlHSnQ3TDFEcDZjM1ZwSDJBUFFac3lpOUFvR0JBTk9pCmpmeWtEYitNNXBDRllEWlkybmpHVURzcUQzZzZyb0Y2R1gxRWNOaU1JeDZ1V1h3RkkvdEsyN2RNTU9JQWUzbDkKcjVPcGFPczdhYlBZMVhsM3hQVTUvYWVPd2NrZ2d1d3FYMWN6NDlKSFhFeG9JSzE4N1NBakY5RWZQYyt6RmhVWAovaDA5MGJIeTdPWXM5cklZRDlIY0lETStzNjJKUjVtY1hsTG1Xay9CQW9HQkFKRVhQV05IWEwra1l6My91R1c3CnRKd0hUQzFlbEJjclcvaHpJMWt4ZEhXem5VaXNTWlcyVnA5b0wwSWNrQXVWQkx6eGUvR1h6OGJRTjZkOWwyZDAKdGtmUmo1TmpDOTUzS2N1cTNSekRmVU40cTcyUlVWTWlFOHVvSTBkVVZpalczN0tVMEhLcm1pbDBocU01eW9iNQpVZlhPQ2Q5SlRRSWx5Y2dNWER6Tm00S3oKLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ3FEQ0NBWkNnQXdJQkFnSVJBUHNjMVBRNXBuSDNhNk1GZkdVTXA2WXdEUVlKS29aSWh2Y05BUUVMQlFBdwpFREVPTUF3R0ExVUVDZ3dGVEVGTlJFVXdIaGNOTWpBd01UQXhNREF3TURBeFdoY05Namt4TWpJNU1EQXdNREF4CldqQVBNUTB3Q3dZRFZRUUREQVIwWlhOME1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQTFYQzJUL2FDMEdReHhjbGlVcEh1SUJ2aUNYeC9pMldPS3J0N3Z6YXc2Ujd3ZTR2VmpKTlpVUDJpeDIrRgpyNDh6eXZreHphSkJ1K3RBa0Z3RENWU2huMnJhYTNDa01LTklhRityK2w1VEdHRVVrSnFLZTgwWWlvTzc2dnViCnlqZ2duU2FkWGlFbTNzTml4elg5ZjYyTTJhWkUrWmM5UzMzYzV1TXF3Q3JqSkNxNE00RHRrS1RnUUZsNzRHMTYKQU5PMjdlemZPbVBJREhWTkxjMGZ3NjRTamZ5TlZseVRMdFRkQUowNWRrTFJ3NkJnZXhOaWk0cjVkcGVpTDdaRwptOFF6Y25JaHBpelQ0aXhTSkdEaDhvTlIrOVFiK1RQT0RVbCsrYkpaL2JqRDN0L1VoRlVZVWladU1QenBGbjZmCmJZMkJDOExjMnJWNFNHNFNySWZ6WGpIdlhRSURBUUFCTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBWEQ0L1cKQjBhSW1aWGpQbTRxUnBOazJmUnpjU1g4MGw2TlZaWWxJV3ZYalFxUXdXZnMvSGczZDVzYUpickFmcWVPa1lQdQpjeXJEWFZPdC9RTEVDOTFBSGtjRWJ1R0dPMGNFU2YyOHdUM1UzRnJJb2cxS1VyTURqWFFIb09vZEJpOGdNaVBmCmROcWhMSTdkNDJBTXJKU3dZUTlSUG9vWG9UZ2xDa0d3R291RDhuS0V5MmNHeVMxM3lQcDRseC9TWTR1QkRFU0sKRlErR0ZRTExGQktQZHZNc2x0cHYyQWFMWmR3clF4aFQ2aTU1U1puNStLb3c1TGxYL0RHdUw5UnRPdmZ2T0tzZQpRZ3pOQUg3QkYzbGdvQmJjYk9yZkVQazY1ZEZRN0NXYi91aDZjVmlmSjdxQzkvL0xhdElmb1VQVnJiRXdZL2dRCk5BRXFYclduMGZuYUc0cUEKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ2xEQ0NBWHdDQVFBd0RRWUpLb1pJaHZjTkFRRUxCUUF3RURFT01Bd0dBMVVFQ2d3RlRFRk5SRUV3SGhjTgpNakF3TVRBeE1EQXdNREF4V2hjTk1qa3hNakk1TURBd01EQXhXakFRTVE0d0RBWURWUVFLREFWTVFVMUVRVENDCkFTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTG5xZkJadnJHWmFxZ2s1bXNDUlJwUHoKcC8rNDY0akJrbmxtVEtldE9ja0RUVXE4VjZmSC8yR2ZiNkhqam9ENXBrQ3RENW1TS2thSE5odXhMWHNGZkVmYwpLbG1ubjNacGp5Tk9IRUEvaUFPMkR5RVlhMDh4U2V2TTdXb2piRjdjTmo1L0RZZzdlYjBpMCsvL2JCbGg4bmxPCmdoU1VoQ1RNNVBDb2ZMRFU4c1ZYdVlBaUdVNlV6QnJJQzB2SEVsdERraUpWTHBjQ3RzS2pFWk9za1BkQWM3dTYKL2FBMFA1R29uWjVVa1JEWXBhK2plSlVhYnFXWlFRRWd0bXZqbG1VVWlYd3UwalJuajFuMFQzZlBRRDNnQStMSQp2QUU5dmd2cFk1WFFqNm90cEJ2c1ozTUpKTktjVU1RdTF6T0FOVHpPMThUbEE4S29CTnNCeThaOURRWktYRjhDCkF3RUFBVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBZUduL055cUlSSS8wQUdxdkhQOTdLdFE3NlRqNmFjaGIKMzBMSVhXcCtZSFVhTWVBVmpkMlo3alNRcDVtWlpGbCtrMWZiMzM3SWVhR1hvZlZJMjFlSzUyUVgydGVOb0JrQQovVi9PMUh1MzUvK2FpejB4c2RENndXdndvNEZ5MWpsbWFlSmh3ZFFhY0JsREdGQTJqRkp4dUVwYWhmeFp2VXNiCjNqNXpVMFdLVFVDZkVEZ1hGd0J3MTJ4a3UvN1RNZENFYlJzWWFaM3pGVEMyMjZsUWJVRE43d2VxRndTRCt0QjYKUnVoSXhlOCtjRndBc0FXSENsZXJLZ1pucjN0NVFGMDc4cFcyR0h5OENzSjdWM01aVDVsWjQzbFM1TklCOUp6WgpTWXhaL2l6aFJ5aDVxUjczdUFnc0phTDU2QmorY1Fxbm9UcWhMWlZsN0orTTZXaFdLem9qc0E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
; 設定自訂遠端桌面登入密碼,6-32 個字元,便於記憶,該密碼僅在使用了服務憑證時生效。
ssl-web-credential=password123
; 設定 firerpa WebUI 及其 API 的 Access-Control-Allow-Origin 標頭,允許您將 firerpa 的功能嵌入到您的 Web 應用中。
; 請參閱 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
allow_origin=https://example.com
; 如果遠端桌面上觸控螢幕出現偏移或無回應,請將 touch.backend 設定為 system,可用選項:system | native(預設)
touch.backend=system
; 設定服務日誌檔案(目錄必須存在)
logfile=/data/local/tmp/server.log
; 請勿手動編寫以下配置。您應使用我們配套的 OpenVPN 伺服器部署方案進行設定,並使用其內建命令生成此配置。
[openvpn]
openvpn.proto=udp
openvpn.cipher=AES-256-GCM
openvpn.host=123.123.123.123
openvpn.port=1190
openvpn.ca=LS0tLS1CRU...
openvpn.cert=LS0tLS1CRU...
openvpn.key=LS0tLS1CRU...
openvpn.tls_encryption=
openvpn.tls_key_direction=
openvpn.tls_key=
; 以下配置項僅可手動配置。
openvpn.global=false ; 是否啟用全域 VPN。
openvpn.enable=true ; 是否啟用服務 true | false
; 此配置用於讓裝置在啟動時自動使用代理伺服器。
[gproxy]
gproxy.enable=true ; 是否啟用服務 true | false
gproxy.type=http-connect ; 代理類型,可選 http-connect、https-connect、socks5、shadowsocks
gproxy.host=172.1.1.1 ; 代理伺服器位址
gproxy.port=8080 ; 代理伺服器連接埠
gproxy.password= ; 代理伺服器登入密碼(留空表示無需認證)
gproxy.login= ; 代理伺服器登入使用者名稱(留空表示無需認證,若類型為 shadowsocks 則為加密方式)
gproxy.nameserver= ; 自訂 DNS 伺服器
gproxy.drop_udp=false ; 是否丟棄 UDP 封包。
gproxy.udp_proxy=false ; 是否代理 UDP 封包(需要代理支援,如 socks5、shadowsocks)。
gproxy.bypass_local_subnet=true ; 不代理本機區域網路流量。
gproxy.dns_proxy=false ; 使 DNS 查詢透過代理(需要支援 UDP 和 TCP 的 DNS 伺服器)。
gproxy.uid= ; 僅對指定 UID 進行代理(預設為全域)。
[cron]
cron.enable=true ; 是否啟用服務 true | false
[sshd]
sshd.enable=true ; 是否啟用服務 true | false
[fwd]
fwd.enable=true ; 是否啟用服務 true | false
fwd.rport=0 ; 轉發到遠端的連接埠(0 表示隨機分配)
fwd.host=123.123.123.123 ; FRP 伺服器位址
fwd.port=9911 ; FRP 伺服器連接埠
fwd.protocol=tcp ; FRP 協定
fwd.token=abc123 ; FRP 登入認證(token)
[adb]
adb.enable=true ; 是否啟用服務 true | false
adb.directory=/data/local/tmp ; 內建 ADB 的預設工作目錄(adb shell 工作目錄)
; 警告:如果設定為 true,ADB 連接將擁有 root 權限,否則將擁有 shell 權限。當此選項設定為 false 時,
; 您將使用類似原生的 adb shell,並且無法使用內建命令。請注意,由於 ADB 不使用 TLS 連接,流量可能被監控。出於安全考慮,當服務使用憑證啟動時,此值將預設設定為 false。但是,如果您在 properties.local 檔案中指定了它,檔案中的配置將優先,您有責任確保安全性。
adb.privileged=true
[tunnel2]
tunnel2.enable=true ; 是否啟用服務 true | false
; 只有同時設定了登入名和密碼時,網橋代理才需要登入認證,如果任一留空,則無需登入認證。
tunnel2.login=lamda
tunnel2.password=1234 ; 網橋代理的登入密碼
; 出站介面(rmnet|wlan)當出站介面為 rmnet 時,代理將嘗試透過行動數據轉發您的請求。當出站介面為 wlan 時,請求將透過 wlan 介面轉發。如果配置為空,將使用預設網路轉發請求。
tunnel2.iface=rmnet
[mdns]
mdns.enable=false ; 啟用或停用 true | false
mdns.meta=false ; 為 mDNS 添加 TXT 元資料。啟用後,將支援使用 python-zeroconf 等工具查詢裝置資訊,如型號、ABI 和裝置 ID。預設停用。
mdns.name=DEVICEID-UNIQUE.lamda ; 使用本機唯一 ID 設定廣播域名,預設為 {DEVICEID-UNIQUE}.lamda。如果本機網路中名稱重複,將自動添加後綴 ID。
mdns.service=lamda ; 設定廣播服務名稱,預設為 lamda,即 _lamda._tcp.local。