Currently translated at 55.2% (141 of 255 strings) Translation: OpenWrt/LuCI/applications/keepalived Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/lt/ Translated using Weblate (Lithuanian) Currently translated at 85.1% (138 of 162 strings) Translation: OpenWrt/LuCI/applications/ustreamer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsustreamer/lt/ Translated using Weblate (Lithuanian) Currently translated at 92.0% (2772 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/lt/ Translated using Weblate (Lithuanian) Currently translated at 48.3% (243 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/lt/ Translated using Weblate (Lithuanian) Currently translated at 91.8% (2768 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/lt/ Translated using Weblate (Lithuanian) Currently translated at 39.6% (101 of 255 strings) Translation: OpenWrt/LuCI/applications/keepalived Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/lt/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (31 of 31 strings) Translation: OpenWrt/LuCI/applications/csshnpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscsshnpd/lt/ Translated using Weblate (Lithuanian) Currently translated at 41.9% (13 of 31 strings) Translation: OpenWrt/LuCI/applications/csshnpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscsshnpd/lt/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 90.5% (382 of 422 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 50.9% (77 of 151 strings) Translation: OpenWrt/LuCI/applications/usteer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsusteer/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 98.2% (2960 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (3012 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/ Translated using Weblate (Lithuanian) Currently translated at 91.7% (2763 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/lt/ Translated using Weblate (Lithuanian) Currently translated at 44.7% (225 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/lt/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (139 of 139 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (2 of 2 strings) Translation: OpenWrt/LuCI/applications/babeld Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbabeld/lt/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 95.5% (192 of 201 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 80.5% (405 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (197 of 197 strings) Translation: OpenWrt/LuCI/applications/ddns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/zh_Hans/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (72 of 72 strings) Translation: OpenWrt/LuCI/applications/ocserv Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsocserv/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.3% (73 of 75 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (282 of 282 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 82.3% (70 of 85 strings) Translation: OpenWrt/LuCI/applications/acme Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacme/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 83.6% (189 of 226 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/zh_Hant/ Translated using Weblate (Japanese) Currently translated at 63.8% (1924 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ja/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (108 of 108 strings) Translation: OpenWrt/LuCI/applications/rustdesk-server Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsrustdesk-server/zh_Hans/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 76.6% (59 of 77 strings) Translation: OpenWrt/LuCI/applications/xinetd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxinetd/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 76.6% (59 of 77 strings) Translation: OpenWrt/LuCI/applications/xinetd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxinetd/zh_Hant/ Translated using Weblate (Korean) Currently translated at 30.9% (35 of 113 strings) Translation: OpenWrt/LuCI/applications/libreswan Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslibreswan/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 82.3% (70 of 85 strings) Translation: OpenWrt/LuCI/applications/acme Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacme/zh_Hant/ Translated using Weblate (Korean) Currently translated at 67.8% (19 of 28 strings) Translation: OpenWrt/LuCI/applications/udpxy Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsudpxy/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (59 of 59 strings) Translation: OpenWrt/LuCI/applications/dump1090 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdump1090/zh_Hant/ Translated using Weblate (Japanese) Currently translated at 6.6% (6 of 90 strings) Translation: OpenWrt/LuCI/applications/mosquitto Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmosquitto/ja/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 76.8% (83 of 108 strings) Translation: OpenWrt/LuCI/applications/rustdesk-server Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsrustdesk-server/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 75.1% (124 of 165 strings) Translated using Weblate (Japanese) Currently translated at 69.8% (37 of 53 strings) Translated using Weblate (Korean) Currently translated at 60.8% (28 of 46 strings) Translation: OpenWrt/LuCI/applications/xfrpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxfrpc/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 84.8% (56 of 66 strings) Translation: OpenWrt/LuCI/applications/sshtunnel Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssshtunnel/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 84.8% (56 of 66 strings) Translation: OpenWrt/LuCI/applications/sshtunnel Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssshtunnel/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (503 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hans/ Translated using Weblate (Japanese) Currently translated at 15.1% (10 of 66 strings) Translation: OpenWrt/LuCI/applications/sshtunnel Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssshtunnel/ja/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 84.6% (11 of 13 strings) Translation: OpenWrt/LuCI/applications/bcp38 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbcp38/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 76.4% (13 of 17 strings) Translation: OpenWrt/LuCI/applications/eoip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationseoip/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (33 of 33 strings) Translation: OpenWrt/LuCI/applications/v2raya Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsv2raya/zh_Hans/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 77.5% (31 of 40 strings) Translation: OpenWrt/LuCI/applications/example Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsexample/zh_Hant/ Translated using Weblate (Korean) Currently translated at 27.0% (20 of 74 strings) Translation: OpenWrt/LuCI/applications/frps Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrps/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 56.7% (46 of 81 strings) Translation: OpenWrt/LuCI/applications/email Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsemail/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (46 of 46 strings) Translation: OpenWrt/LuCI/applications/xfrpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxfrpc/zh_Hans/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 80.1% (403 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.6% (164 of 168 strings) Translation: OpenWrt/LuCI/applications/aria2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/zh_Hant/ Translated using Weblate (Japanese) Currently translated at 10.0% (12 of 119 strings) Translation: OpenWrt/LuCI/applications/snmpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/ja/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (172 of 172 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 98.9% (182 of 184 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (102 of 102 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 70.9% (22 of 31 strings) Translation: OpenWrt/LuCI/applications/csshnpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscsshnpd/zh_Hant/ Translated using Weblate (Japanese) Currently translated at 34.0% (15 of 44 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (62 of 62 strings) Translation: OpenWrt/LuCI/applications/apinger Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/zh_Hans/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 93.3% (42 of 45 strings) Translation: OpenWrt/LuCI/applications/cloudflared Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscloudflared/zh_Hant/ Translated using Weblate (Japanese) Currently translated at 30.3% (10 of 33 strings) Translation: OpenWrt/LuCI/applications/openlist Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsopenlist/ja/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (255 of 255 strings) Translation: OpenWrt/LuCI/applications/keepalived Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/zh_Hans/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 99.1% (112 of 113 strings) Translation: OpenWrt/LuCI/applications/filemanager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfilemanager/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 74.3% (84 of 113 strings) Translation: OpenWrt/LuCI/applications/libreswan Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslibreswan/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (165 of 165 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (60 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (197 of 197 strings) Translation: OpenWrt/LuCI/applications/ddns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (60 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (111 of 111 strings) Translation: OpenWrt/LuCI/applications/radicale3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale3/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (162 of 162 strings) Translation: OpenWrt/LuCI/applications/ustreamer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsustreamer/zh_Hans/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 98.2% (2960 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Korean) Currently translated at 80.3% (82 of 102 strings) Translated using Weblate (Korean) Currently translated at 35.1% (59 of 168 strings) Translation: OpenWrt/LuCI/applications/aria2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 90.5% (382 of 422 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 96.2% (26 of 27 strings) Translation: OpenWrt/LuCI/applications/ksmbd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsksmbd/zh_Hant/ Translated using Weblate (Japanese) Currently translated at 10.3% (8 of 77 strings) Translation: OpenWrt/LuCI/applications/xinetd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxinetd/ja/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 46.7% (29 of 62 strings) Translation: OpenWrt/LuCI/applications/apinger Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 46.7% (29 of 62 strings) Translation: OpenWrt/LuCI/applications/apinger Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 46.7% (29 of 62 strings) Translation: OpenWrt/LuCI/applications/apinger Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 46.7% (29 of 62 strings) Translation: OpenWrt/LuCI/applications/apinger Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (168 of 168 strings) Translation: OpenWrt/LuCI/applications/aria2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (147 of 147 strings) Translation: OpenWrt/LuCI/applications/privoxy Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsprivoxy/zh_Hans/ Translated using Weblate (Korean) Currently translated at 38.4% (35 of 91 strings) Translation: OpenWrt/LuCI/applications/frpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 76.4% (91 of 119 strings) Translation: OpenWrt/LuCI/applications/snmpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (72 of 72 strings) Translation: OpenWrt/LuCI/applications/ocserv Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsocserv/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (172 of 172 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/zh_Hans/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 73.2% (134 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 73.2% (134 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (45 of 45 strings) Translation: OpenWrt/LuCI/applications/cloudflared Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscloudflared/zh_Hans/ Translated using Weblate (Korean) Currently translated at 16.9% (10 of 59 strings) Translation: OpenWrt/LuCI/applications/dump1090 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdump1090/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 61.1% (55 of 90 strings) Translation: OpenWrt/LuCI/applications/mosquitto Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmosquitto/zh_Hant/ Translated using Weblate (Korean) Currently translated at 77.4% (24 of 31 strings) Translation: OpenWrt/LuCI/applications/csshnpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscsshnpd/ko/ Translated using Weblate (Japanese) Currently translated at 7.8% (13 of 165 strings) Translated using Weblate (Japanese) Currently translated at 75.4% (77 of 102 strings) Translated using Weblate (Japanese) Currently translated at 1.8% (2 of 111 strings) Translation: OpenWrt/LuCI/applications/radicale3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale3/ja/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (102 of 102 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (3012 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (3012 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/ Translated using Weblate (Japanese) Currently translated at 6.6% (17 of 255 strings) Translation: OpenWrt/LuCI/applications/keepalived Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/ja/ Translated using Weblate (Japanese) Currently translated at 45.4% (15 of 33 strings) Translation: OpenWrt/LuCI/applications/v2raya Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsv2raya/ja/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (37 of 37 strings) Translated using Weblate (Lithuanian) Currently translated at 99.3% (150 of 151 strings) Translation: OpenWrt/LuCI/applications/usteer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsusteer/lt/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 95.4% (42 of 44 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 50.9% (77 of 151 strings) Translation: OpenWrt/LuCI/applications/usteer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsusteer/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 50.9% (77 of 151 strings) Translation: OpenWrt/LuCI/applications/usteer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsusteer/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (197 of 197 strings) Translation: OpenWrt/LuCI/applications/ddns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 97.8% (45 of 46 strings) Translation: OpenWrt/LuCI/applications/xfrpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxfrpc/zh_Hant/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (153 of 153 strings) Translation: OpenWrt/LuCI/applications/dawn Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdawn/zh_Hans/ Translated using Weblate (Portuguese) Currently translated at 100.0% (37 of 37 strings) Translated using Weblate (Portuguese) Currently translated at 91.6% (2759 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pt/ Translated using Weblate (Korean) Currently translated at 82.3% (2481 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ko/ Translated using Weblate (Portuguese) Currently translated at 100.0% (139 of 139 strings) Translated using Weblate (Portuguese) Currently translated at 98.4% (63 of 64 strings) Translation: OpenWrt/LuCI/applications/sqm Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/pt/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.9% (3009 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pt_BR/ Translated using Weblate (Portuguese) Currently translated at 91.2% (385 of 422 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (75 of 75 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (16 of 16 strings) Translation: OpenWrt/LuCI/applications/pagekitec Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspagekitec/pt/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (3012 of 3012 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/ Translated using Weblate (Portuguese) Currently translated at 64.5% (171 of 265 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/pt/ Translated using Weblate (Portuguese) Currently translated at 100.0% (196 of 196 strings) Translation: OpenWrt/LuCI/applications/unbound Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsunbound/pt/ Translated using Weblate (Portuguese) Currently translated at 100.0% (282 of 282 strings) Translated using Weblate (Portuguese) Currently translated at 98.9% (182 of 184 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (124 of 124 strings) Translation: OpenWrt/LuCI/applications/nlbwmon Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/pt/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (99 of 99 strings) Translation: OpenWrt/LuCI/applications/attendedsysupgrade Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/pt_BR/ Translated using Weblate (Russian) Currently translated at 100.0% (151 of 151 strings) Translation: OpenWrt/LuCI/applications/usteer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsusteer/ru/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (31 of 31 strings) Translation: OpenWrt/LuCI/applications/wifischedule Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswifischedule/zh_Hans/ Co-authored-by: BigBossK <773733679@qq.com> Co-authored-by: CitrusCandy <fjlfjl2015@hotmail.com> Co-authored-by: DragonBluep <yangshiji66@outlook.com> Co-authored-by: Džiugas Januševičius <dziugas1959@hotmail.com> Co-authored-by: Hosted Weblate <hosted@weblate.org> Co-authored-by: Hyeonjeong Lee <h9101654@gmail.com> Co-authored-by: SnIPeRSnIPeR <snipersniper@users.noreply.hosted.weblate.org> Co-authored-by: UDP <udp@users.noreply.hosted.weblate.org> Co-authored-by: Volenski <volenski@users.noreply.hosted.weblate.org> Co-authored-by: evan-yang <yws112358@vip.qq.com> Co-authored-by: konno_he <h3114931694@gmail.com> Co-authored-by: nKsyn <e.nksyn@gmail.com> Co-authored-by: ssantos <ssantos@web.de> Co-authored-by: yohru <yohru7@gmail.com> Signed-off-by: BigBossK <773733679@qq.com> Signed-off-by: CitrusCandy <fjlfjl2015@hotmail.com> Signed-off-by: DragonBluep <yangshiji66@outlook.com> Signed-off-by: Džiugas Januševičius <dziugas1959@hotmail.com> Signed-off-by: Hyeonjeong Lee <h9101654@gmail.com> Signed-off-by: SnIPeRSnIPeR <snipersniper@users.noreply.hosted.weblate.org> Signed-off-by: UDP <udp@users.noreply.hosted.weblate.org> Signed-off-by: Volenski <volenski@users.noreply.hosted.weblate.org> Signed-off-by: evan-yang <yws112358@vip.qq.com> Signed-off-by: konno_he <h3114931694@gmail.com> Signed-off-by: nKsyn <e.nksyn@gmail.com> Signed-off-by: ssantos <ssantos@web.de> Signed-off-by: yohru <yohru7@gmail.com> Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscoovachilli/ja/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscoovachilli/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscoovachilli/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfirewall/lt/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfirewall/pt/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfwknopd/ja/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfwknopd/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/pt/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/pt/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/pt/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstinyproxy/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstinyproxy/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstransmission/ja/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstransmission/ko/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstransmission/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstransmission/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsupnp/ja/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswatchcat/pt/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswatchcat/zh_Hant/ Translation: OpenWrt/LuCI/applications/coovachilli Translation: OpenWrt/LuCI/applications/firewall Translation: OpenWrt/LuCI/applications/fwknopd Translation: OpenWrt/LuCI/applications/nut Translation: OpenWrt/LuCI/applications/olsr Translation: OpenWrt/LuCI/applications/statistics Translation: OpenWrt/LuCI/applications/tinyproxy Translation: OpenWrt/LuCI/applications/transmission Translation: OpenWrt/LuCI/applications/upnp Translation: OpenWrt/LuCI/applications/watchcat
luci-app-rustdesk-server
LuCI web interface for managing RustDesk Server on OpenWrt.
RustDesk is a full-featured open source remote control alternative to TeamViewer and AnyDesk. This LuCI application provides a web-based interface to configure and manage the self-hosted RustDesk server components (hbbs and hbbr) on OpenWrt routers.
Features
- Service Management - Start/Stop/Restart services directly from the UI
- Boot Enable/Disable - Toggle service startup at boot
- Status Monitoring - Real-time status of HBBS and HBBR services with live polling
- Public Key Display - View and copy the generated public key for client configuration
- Key Regeneration - Regenerate encryption keys when needed
- Log Viewer - View service logs with auto-refresh and auto-scroll features
- Firewall Hints - Displays required ports for manual firewall configuration
- Tabbed Configuration - Organized settings for ID Server (hbbs) and Relay Server (hbbr)
- Input Validation - Validates paths, ports, and configuration values
- i18n Ready - Full translation support with POT template
Architecture
luci-app-rustdesk-server/
├── Makefile # OpenWrt package build file
├── htdocs/luci-static/resources/view/rustdesk-server/
│ └── general.js # Main UI view (JavaScript)
├── po/templates/
│ └── rustdesk-server.pot # Translation template
└── root/
├── etc/
│ ├── config/rustdesk-server # UCI configuration
│ ├── init.d/rustdesk-server # procd init script
│ └── uci-defaults/50-luci-rustdesk-server # First-run setup
└── usr/share/
├── luci/menu.d/luci-app-rustdesk-server.json # Menu entry
└── rpcd/
├── acl.d/luci-app-rustdesk-server.json # ACL permissions
└── ucode/rustdesk-server.uc # RPC backend
Requirements
OpenWrt Dependencies
- OpenWrt 23.05 or later with LuCI installed
luci-base- LuCI core frameworkrpcd- RPC daemonrpcd-mod-ucode- ucode support for rpcd
RustDesk Server Binaries
The RustDesk server binaries (hbbs, hbbr) must be installed separately. They are not included in this package.
Installing RustDesk Server Binaries
-
Download from GitHub Releases:
# Check your architecture uname -m # Download appropriate binaries from: # https://github.com/rustdesk/rustdesk-server/releases # Example for aarch64: wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11/rustdesk-server-linux-arm64v8.zip unzip rustdesk-server-linux-arm64v8.zip cp amd64/hbbs amd64/hbbr /usr/bin/ chmod +x /usr/bin/hbbs /usr/bin/hbbr -
Or build from source:
# See https://github.com/rustdesk/rustdesk-server for build instructions -
Verify installation:
/usr/bin/hbbs --version /usr/bin/hbbr --version
Installation
From OpenWrt Package Repository
opkg update
opkg install luci-app-rustdesk-server
From Source (Development)
# Clone the LuCI repository
git clone https://github.com/openwrt/luci.git
cd luci
# Build the package
make package/luci-app-rustdesk-server/compile
Manual Installation
-
Copy the application files to your OpenWrt device:
# Copy htdocs to /www cp -r htdocs/luci-static /www/luci-static/ # Copy root files cp -r root/* / # Set permissions chmod +x /etc/init.d/rustdesk-server -
Reload rpcd to register the new RPC methods:
/etc/init.d/rpcd reload -
Clear LuCI cache:
rm -rf /tmp/luci-* -
Access the interface at: Services → RustDesk Server
Configuration
Binary Location
The application expects hbbs and hbbr binaries to be installed in /usr/bin.
Firewall Configuration
Firewall rules must be configured manually in Network → Firewall → Traffic Rules. The application displays the required ports in the Service Status section.
The standard RustDesk port layout is:
| Port | Protocol | Service | Calculation |
|---|---|---|---|
| HBBS-1 | TCP | NAT type test | server_port - 1 |
| HBBS | TCP/UDP | ID server / Hole punching | server_port |
| HBBS+2 | TCP | Web client support | server_port + 2 |
| HBBR | TCP | Relay server | relay_port |
| HBBR+2 | TCP | Web client support | relay_port + 2 |
Example: With default ports (server_port=21116 and relay_port=21117):
- TCP ports: 21115, 21116, 21117, 21118, 21119
- UDP port: 21116
Logging
Enable logging in General settings to write service output to /var/log/rustdesk-server.log. View logs in real-time using the Logs tab.
Database Location
The database is stored in /tmp/rustdesk_db_v2.sqlite3. This is a non-persistent location and will be cleared on reboot. This is intentional for embedded systems like OpenWrt where persistent storage may be limited.
Client Configuration
After starting the service:
- Go to the LuCI interface and note your router's IP address
- Copy the Public Key from the Service Status section
- In RustDesk client settings, configure:
- ID Server: Your router's IP:21116 (or custom port if configured)
- Relay Server: Your router's IP:21117 (or custom port if configured)
- Key: The public key from step 2
UCI Configuration Reference
The configuration is stored in /etc/config/rustdesk-server:
config rustdesk-server
option enabled '1' # Enable ID server (hbbs)
option enabled_relay '1' # Enable Relay server (hbbr)
# HBBS options
option server_port '21116' # ID server port
option server_key '' # Custom key (optional)
# HBBR options
option relay_port '21117' # Relay server port
# Environment variables
option server_env_rust_log 'info'
Files
| Path | Description |
|---|---|
/etc/config/rustdesk-server |
UCI configuration file |
/etc/init.d/rustdesk-server |
procd init script |
/etc/rustdesk/ |
Key storage directory |
/etc/rustdesk/id_ed25519.pub |
Public key (auto-generated) |
/var/log/rustdesk-server.log |
Service log file (when enabled) |
/usr/share/rpcd/ucode/rustdesk-server.uc |
RPC backend |
/usr/share/luci/menu.d/luci-app-rustdesk-server.json |
Menu entry |
/usr/share/rpcd/acl.d/luci-app-rustdesk-server.json |
ACL permissions |
Troubleshooting
Service won't start
- Check binaries exist:
ls -la /usr/bin/hbbs /usr/bin/hbbr - Verify binaries are executable:
chmod +x /usr/bin/hbbs /usr/bin/hbbr - Check system log:
logread | grep rustdesk-server - Verify at least one server is enabled in the configuration
Key not generated
The public key (id_ed25519.pub) is generated automatically when HBBS starts for the first time. If missing:
- Ensure the key directory exists:
mkdir -p /etc/rustdesk - Start the service and wait a few seconds
- Check if key was created:
cat /etc/rustdesk/id_ed25519.pub
Firewall / Connection issues
- Verify firewall rules are configured in Network → Firewall → Traffic Rules
- Check that required ports are open (TCP: 21115-21119, UDP: 21116)
- Reload firewall:
/etc/init.d/firewall reload - Verify the service is running:
pidof hbbs hbbr - Check if ports are listening:
netstat -tlnp | grep -E '2111[5-9]' - Test connectivity from client:
nc -zv <router-ip> 21116
RPC errors in browser console
- Reload rpcd:
/etc/init.d/rpcd reload - Clear LuCI cache:
rm -rf /tmp/luci-*
Development
Building Translations
# Scan for translatable strings
./build/i18n-scan.pl applications/luci-app-rustdesk-server > applications/luci-app-rustdesk-server/po/templates/rustdesk-server.pot
# Update existing translations
./build/i18n-update.pl applications/luci-app-rustdesk-server
Testing Changes
- Make changes to files
- Copy to device and reload rpcd
- Clear browser cache and LuCI cache
- Refresh the page
Security Considerations
This application implements multiple layers of input validation and sanitization to prevent shell injection attacks:
Frontend Validation (JavaScript)
All user inputs are validated before being saved to UCI configuration:
| Field Type | Validation |
|---|---|
| Ports | Numeric only, range 1-65535, supports ranges and comma-separated lists |
| CIDR masks | Strict IP/prefix format validation |
| Keys | Alphanumeric and base64 characters only (A-Za-z0-9+/=) |
| URLs | Must start with http:// or https://, no shell metacharacters |
| Paths | Must start with /, no shell metacharacters (`; |
| Server lists | Alphanumeric, dots, colons, commas, hyphens, underscores only |
| Numeric fields | Use LuCI's built-in uinteger datatype |
Backend Validation (Init Script)
The init script (/etc/init.d/rustdesk-server) includes comprehensive validation functions that re-validate all configuration values before using them in shell commands:
validate_numeric()- Ensures values contain only digitsvalidate_port()- Validates port range (1-65535)validate_path()- Checks for shell metacharacters and requires leading/validate_url()- Validates URL format and rejects dangerous charactersvalidate_key()- Allows only base64-safe charactersvalidate_server_list()- Allows only hostname/IP-safe charactersvalidate_cidr()- Allows only digits, dots, and slashvalidate_log_level()- Whitelist of valid log levels
Invalid values are rejected and logged with warnings to syslog.
RPC Backend Validation (ucode)
The RPC backend (rustdesk-server.uc) validates:
service_action: Whitelist of allowed actions (start,stop,restart,reload,enable,disable)get_loglines parameter: Clamped to range 10-1000