Currently translated at 100.0% (45 of 45 strings) Translation: OpenWrt/LuCI/applications/cloudflared Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscloudflared/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (226 of 226 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (124 of 124 strings) Translation: OpenWrt/LuCI/applications/nlbwmon Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/uk/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 84.8% (252 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/zh_Hant/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (164 of 164 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (3022 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/uk/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 70.1% (179 of 255 strings) Translation: OpenWrt/LuCI/applications/keepalived Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/zh_Hant/ Translated using Weblate (Ukrainian) 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/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (192 of 192 strings) Translation: OpenWrt/LuCI/applications/https-dns-proxy Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationshttps-dns-proxy/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (183 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/uk/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 67.9% (55 of 81 strings) Translation: OpenWrt/LuCI/applications/email Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsemail/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 83.5% (71 of 85 strings) Translation: OpenWrt/LuCI/applications/acme Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsacme/zh_Hant/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (37 of 37 strings) Translation: OpenWrt/LuCI/applications/lxc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslxc/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (173 of 173 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/uk/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 75.7% (125 of 165 strings) Translated using Weblate (Ukrainian) Currently translated at 100.0% (514 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/uk/ Translated using Weblate (Lithuanian) Currently translated at 98.9% (196 of 198 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/lt/ Translated using Weblate (Korean) Currently translated at 74.1% (46 of 62 strings) Translated using Weblate (German) Currently translated at 100.0% (198 of 198 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/de/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 76.2% (125 of 164 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 83.3% (90 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 61.7% (42 of 68 strings) Translation: OpenWrt/LuCI/applications/chrony Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationschrony/zh_Hant/ Translated using Weblate (Portuguese) Currently translated at 98.8% (266 of 269 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/pt/ Translated using Weblate (Korean) Currently translated at 61.0% (36 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 51.6% (78 of 151 strings) Translation: OpenWrt/LuCI/applications/usteer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsusteer/zh_Hant/ Translated using Weblate (Lithuanian) Currently translated at 99.2% (267 of 269 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/lt/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 94.4% (187 of 198 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hant/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (72 of 72 strings) Translation: OpenWrt/LuCI/applications/ocserv Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsocserv/lt/ Translated using Weblate (Lithuanian) Currently translated at 98.9% (294 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/lt/ Translated using Weblate (Korean) Currently translated at 85.8% (2595 of 3022 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% (46 of 46 strings) Translation: OpenWrt/LuCI/applications/xfrpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsxfrpc/pt/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (45 of 45 strings) Translation: OpenWrt/LuCI/applications/cloudflared Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscloudflared/lt/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 77.7% (126 of 162 strings) Translation: OpenWrt/LuCI/applications/ustreamer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsustreamer/zh_Hant/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 86.2% (232 of 269 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/zh_Hant/ Translated using Weblate (Lithuanian) Currently translated at 95.7% (157 of 164 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/lt/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 84.5% (251 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/zh_Hant/ Translated using Weblate (Portuguese) Currently translated at 100.0% (3022 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pt/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (178 of 178 strings) Translation: OpenWrt/LuCI/applications/lldpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslldpd/lt/ Translated using Weblate (Lithuanian) Currently translated at 57.9% (298 of 514 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 94.4% (118 of 125 strings) Translated using Weblate (Portuguese) Currently translated at 100.0% (31 of 31 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 85.3% (193 of 226 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/zh_Hant/ Translated using Weblate (Korean) Currently translated at 62.4% (103 of 165 strings) Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 94.9% (94 of 99 strings) Translation: OpenWrt/LuCI/applications/attendedsysupgrade Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/zh_Hant/ Translated using Weblate (Portuguese) Currently translated at 100.0% (297 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/pt/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (80 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/zh_Hant/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (297 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (198 of 198 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/uk/ Translated using Weblate (Arabic) Currently translated at 2.5% (3 of 119 strings) Translation: OpenWrt/LuCI/applications/snmpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/ar/ Translated using Weblate (Arabic) Currently translated at 12.9% (16 of 124 strings) Translation: OpenWrt/LuCI/applications/nlbwmon Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/ar/ Translated using Weblate (Korean) Currently translated at 85.8% (2594 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ko/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (3022 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/uk/ Translated using Weblate (Arabic) Currently translated at 75.0% (2268 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ar/ Translated using Weblate (Irish) Currently translated at 100.0% (72 of 72 strings) Translation: OpenWrt/LuCI/applications/ocserv Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsocserv/ga/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (514 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/uk/ Translated using Weblate (Irish) Currently translated at 100.0% (178 of 178 strings) Translation: OpenWrt/LuCI/applications/lldpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslldpd/ga/ Translated using Weblate (Korean) Currently translated at 47.1% (140 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/ko/ Translated using Weblate (Arabic) Currently translated at 16.2% (6 of 37 strings) Translation: OpenWrt/LuCI/applications/lxc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslxc/ar/ Translated using Weblate (Irish) Currently translated at 100.0% (198 of 198 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/ga/ Translated using Weblate (Arabic) Currently translated at 43.2% (35 of 81 strings) Translation: OpenWrt/LuCI/applications/email Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsemail/ar/ Translated using Weblate (Irish) Currently translated at 100.0% (62 of 62 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (514 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/es/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (514 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hant/ Translated using Weblate (Irish) Currently translated at 100.0% (124 of 124 strings) Translation: OpenWrt/LuCI/applications/nlbwmon Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/ga/ Translated using Weblate (Arabic) Currently translated at 90.6% (78 of 86 strings) Translation: OpenWrt/LuCI/applications/package-manager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/ar/ Translated using Weblate (Irish) Currently translated at 100.0% (297 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/ga/ Translated using Weblate (Korean) Currently translated at 49.4% (133 of 269 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/ko/ Translated using Weblate (Irish) Currently translated at 100.0% (514 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/ga/ Translated using Weblate (Irish) Currently translated at 100.0% (269 of 269 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/ga/ Translated using Weblate (Irish) Currently translated at 100.0% (164 of 164 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/ga/ Translated using Weblate (Irish) Currently translated at 100.0% (3022 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ga/ Translated using Weblate (Irish) Currently translated at 100.0% (45 of 45 strings) Translation: OpenWrt/LuCI/applications/cloudflared Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscloudflared/ga/ Translated using Weblate (Korean) Currently translated at 43.2% (71 of 164 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 100.0% (3022 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hant/ Translated using Weblate (Arabic) Currently translated at 15.1% (5 of 33 strings) Translation: OpenWrt/LuCI/applications/openlist Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsopenlist/ar/ Translated using Weblate (Arabic) Currently translated at 13.6% (23 of 168 strings) Translation: OpenWrt/LuCI/applications/aria2 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsaria2/ar/ Translated using Weblate (Arabic) Currently translated at 100.0% (25 of 25 strings) Translated using Weblate (Irish) Currently translated at 100.0% (183 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/ga/ Translated using Weblate (Arabic) Currently translated at 33.3% (24 of 72 strings) Translation: OpenWrt/LuCI/applications/ocserv Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsocserv/ar/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (86 of 86 strings) Translation: OpenWrt/LuCI/applications/package-manager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspackage-manager/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (173 of 173 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/zh_Hans/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 33.0% (170 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/pt_BR/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (514 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (124 of 124 strings) Translation: OpenWrt/LuCI/applications/nlbwmon Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnlbwmon/zh_Hans/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 98.2% (170 of 173 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/pt_BR/ Translated using Weblate (Polish) Currently translated at 100.0% (297 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/pl/ Translated using Weblate (Spanish) Currently translated at 86.5% (142 of 164 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/es/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 4.4% (3 of 68 strings) Translation: OpenWrt/LuCI/applications/chrony Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationschrony/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 66.2% (53 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/pt_BR/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 8.6% (14 of 162 strings) Translation: OpenWrt/LuCI/applications/ustreamer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsustreamer/pt_BR/ Translated using Weblate (Spanish) Currently translated at 100.0% (3022 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/es/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (422 of 422 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (113 of 113 strings) Translation: OpenWrt/LuCI/applications/libreswan Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslibreswan/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (269 of 269 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/zh_Hans/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.8% (3016 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pt_BR/ Translated using Weblate (Polish) Currently translated at 100.0% (269 of 269 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/pl/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (3022 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/zh_Hans/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (226 of 226 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (119 of 119 strings) Translation: OpenWrt/LuCI/applications/snmpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/uk/ Translated using Weblate (Polish) Currently translated at 100.0% (113 of 113 strings) Translation: OpenWrt/LuCI/applications/libreswan Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslibreswan/pl/ 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 (Polish) Currently translated at 100.0% (198 of 198 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/pl/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 17.6% (21 of 119 strings) Translation: OpenWrt/LuCI/applications/snmpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssnmpd/pt_BR/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (269 of 269 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (422 of 422 strings) Translated using Weblate (Ukrainian) Currently translated at 99.6% (296 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/uk/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (37 of 37 strings) Translation: OpenWrt/LuCI/applications/lxc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslxc/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (99 of 99 strings) Translation: OpenWrt/LuCI/applications/attendedsysupgrade Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/zh_Hans/ Translated using Weblate (Polish) Currently translated at 100.0% (164 of 164 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/pl/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (198 of 198 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/zh_Hans/ Translated using Weblate (Polish) Currently translated at 100.0% (514 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/pl/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 13.3% (15 of 112 strings) Translation: OpenWrt/LuCI/applications/radicale3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsradicale3/pt_BR/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (514 of 514 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/uk/ Translated using Weblate (Ukrainian) Currently translated at 100.0% (62 of 62 strings) Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (164 of 164 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/zh_Hans/ Translated using Weblate (Ukrainian) Currently translated at 99.8% (3016 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/uk/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (297 of 297 strings) Translation: OpenWrt/LuCI/applications/banip Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbanip/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (17 of 17 strings) Translation: OpenWrt/LuCI/applications/nextdns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnextdns/zh_Hans/ Translated using Weblate (Polish) Currently translated at 100.0% (3022 of 3022 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (173 of 173 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/pl/ Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3016 of 3016 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/pt_BR/ Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com> Co-authored-by: Dan <jonweblin2205@protonmail.com> Co-authored-by: Džiugas Januševičius <dziugas1959@hotmail.com> Co-authored-by: Franco Castillo <castillofrancodamian@gmail.com> Co-authored-by: Hosted Weblate <hosted@weblate.org> Co-authored-by: Hyeonjeong Lee <h9101654@gmail.com> Co-authored-by: Matthaiks <kitynska@gmail.com> Co-authored-by: Nowar Hashem <nawar.oji@gmail.com> Co-authored-by: Volenski <volenski@users.noreply.hosted.weblate.org> Co-authored-by: ZW <roc_fe@users.noreply.hosted.weblate.org> Co-authored-by: ssantos <ssantos@web.de> Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org> Co-authored-by: 為什麼不加空格 <c++23@users.noreply.hosted.weblate.org> Signed-off-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com> Signed-off-by: Dan <jonweblin2205@protonmail.com> Signed-off-by: Džiugas Januševičius <dziugas1959@hotmail.com> Signed-off-by: Franco Castillo <castillofrancodamian@gmail.com> Signed-off-by: Hyeonjeong Lee <h9101654@gmail.com> Signed-off-by: Matthaiks <kitynska@gmail.com> Signed-off-by: Nowar Hashem <nawar.oji@gmail.com> Signed-off-by: Volenski <volenski@users.noreply.hosted.weblate.org> Signed-off-by: ZW <roc_fe@users.noreply.hosted.weblate.org> Signed-off-by: ssantos <ssantos@web.de> Signed-off-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org> Signed-off-by: 為什麼不加空格 <c++23@users.noreply.hosted.weblate.org> Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscommands/ar/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscoovachilli/ko/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscoovachilli/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/zh_Hant/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/uk/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstatistics/zh_Hans/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsuhttpd/ga/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsuhttpd/ko/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsuhttpd/uk/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswol/pt/ Translation: OpenWrt/LuCI/applications/commands Translation: OpenWrt/LuCI/applications/coovachilli Translation: OpenWrt/LuCI/applications/nut Translation: OpenWrt/LuCI/applications/statistics Translation: OpenWrt/LuCI/applications/uhttpd Translation: OpenWrt/LuCI/applications/wol
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