Currently translated at 66.1% (41 of 62 strings) Translation: OpenWrt/LuCI/applications/apinger Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/ko/ Translated using Weblate (Lithuanian) Currently translated at 81.2% (178 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/lt/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (7 of 7 strings) Translation: OpenWrt/LuCI/applications/olsr-services Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr-services/lt/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (13 of 13 strings) Translation: OpenWrt/LuCI/applications/bcp38 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbcp38/lt/ Translated using Weblate (Korean) Currently translated at 19.4% (22 of 113 strings) Translation: OpenWrt/LuCI/applications/libreswan Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslibreswan/ko/ Translated using Weblate (Korean) Currently translated at 35.4% (22 of 62 strings) Translated using Weblate (Korean) Currently translated at 97.5% (78 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/ko/ Translated using Weblate (Korean) Currently translated at 44.6% (88 of 197 strings) Translation: OpenWrt/LuCI/applications/ddns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/ko/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (21 of 21 strings) Translation: OpenWrt/LuCI/applications/crowdsec-firewall-bouncer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscrowdsec-firewall-bouncer/lt/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (201 of 201 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/lt/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (183 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/lt/ Translated using Weblate (Lithuanian) Currently translated at 100.0% (4 of 4 strings) Translation: OpenWrt/LuCI/applications/softether Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssoftether/lt/ Translated using Weblate (Korean) Currently translated at 20.4% (9 of 44 strings) Translation: OpenWrt/LuCI/applications/ser2net Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsser2net/ko/ Translated using Weblate (Korean) Currently translated at 39.9% (201 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/ko/ Translated using Weblate (Korean) Currently translated at 62.9% (39 of 62 strings) Translation: OpenWrt/LuCI/applications/apinger Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/ko/ Translated using Weblate (Korean) Currently translated at 16.3% (30 of 184 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (184 of 184 strings) Translated using Weblate (Korean) Currently translated at 38.0% (57 of 150 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/ko/ Translated using Weblate (Polish) Currently translated at 100.0% (68 of 68 strings) Translation: OpenWrt/LuCI/applications/chrony Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationschrony/pl/ Translated using Weblate (Korean) Currently translated at 77.8% (2343 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ko/ Translated using Weblate (Korean) Currently translated at 56.7% (21 of 37 strings) Translation: OpenWrt/LuCI/applications/lxc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslxc/ko/ Translated using Weblate (Korean) Currently translated at 23.6% (60 of 254 strings) Translation: OpenWrt/LuCI/applications/keepalived Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/ko/ Translated using Weblate (Korean) Currently translated at 12.0% (18 of 150 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/ko/ Added translation using Weblate (Polish) Translated using Weblate (Korean) Currently translated at 16.3% (30 of 184 strings) Translated using Weblate (Korean) Currently translated at 15.0% (17 of 113 strings) Translation: OpenWrt/LuCI/applications/libreswan Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslibreswan/ko/ Translated using Weblate (Korean) Currently translated at 23.5% (16 of 68 strings) Translation: OpenWrt/LuCI/applications/chrony Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationschrony/ko/ Translated using Weblate (Korean) Currently translated at 16.6% (15 of 90 strings) Translation: OpenWrt/LuCI/applications/mosquitto Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmosquitto/ko/ Translated using Weblate (Korean) Currently translated at 16.6% (8 of 48 strings) Translation: OpenWrt/LuCI/applications/openwisp Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsopenwisp/ko/ Translated using Weblate (Korean) Currently translated at 97.5% (78 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/ko/ Translated using Weblate (Korean) Currently translated at 27.7% (20 of 72 strings) Translation: OpenWrt/LuCI/applications/ocserv Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsocserv/ko/ Translated using Weblate (Korean) Currently translated at 20.4% (9 of 44 strings) Translation: OpenWrt/LuCI/applications/ser2net Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsser2net/ko/ Translated using Weblate (Korean) Currently translated at 22.9% (42 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/ko/ Translated using Weblate (Korean) Currently translated at 32.5% (13 of 40 strings) Translated using Weblate (Korean) Currently translated at 38.6% (46 of 119 strings) Translation: OpenWrt/LuCI/applications/ustreamer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsustreamer/ko/ Translated using Weblate (Korean) Currently translated at 60.1% (121 of 201 strings) Translation: OpenWrt/LuCI/applications/travelmate Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationstravelmate/ko/ Translated using Weblate (Korean) Currently translated at 23.6% (60 of 254 strings) Translation: OpenWrt/LuCI/applications/keepalived Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationskeepalived/ko/ Translated using Weblate (Korean) Currently translated at 44.6% (88 of 197 strings) Translation: OpenWrt/LuCI/applications/ddns Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsddns/ko/ Translated using Weblate (Korean) Currently translated at 11.3% (17 of 150 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/ko/ Translated using Weblate (Korean) Currently translated at 33.7% (74 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/ko/ Translated using Weblate (Korean) Currently translated at 19.4% (21 of 108 strings) Translation: OpenWrt/LuCI/applications/rustdesk-server Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsrustdesk-server/ko/ Translated using Weblate (Korean) Currently translated at 39.8% (71 of 178 strings) Translation: OpenWrt/LuCI/applications/lldpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslldpd/ko/ Translated using Weblate (Korean) Currently translated at 70.9% (122 of 172 strings) Translation: OpenWrt/LuCI/applications/mwan3 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmwan3/ko/ Added translation using Weblate (Korean) Added translation using Weblate (Korean) Translated using Weblate (German) Currently translated at 97.7% (88 of 90 strings) Translation: OpenWrt/LuCI/applications/mosquitto Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsmosquitto/de/ Translated using Weblate (German) Currently translated at 100.0% (113 of 113 strings) Translation: OpenWrt/LuCI/applications/filemanager Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfilemanager/de/ Translated using Weblate (German) Currently translated at 100.0% (21 of 21 strings) Translation: OpenWrt/LuCI/applications/crowdsec-firewall-bouncer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscrowdsec-firewall-bouncer/de/ Translated using Weblate (Korean) Currently translated at 77.8% (2343 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ko/ Translated using Weblate (German) Currently translated at 97.2% (72 of 74 strings) Translation: OpenWrt/LuCI/applications/frps Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrps/de/ Translated using Weblate (German) Currently translated at 29.4% (35 of 119 strings) Translation: OpenWrt/LuCI/applications/ustreamer Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsustreamer/de/ Translated using Weblate (Czech) Currently translated at 93.8% (243 of 259 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/cs/ Translated using Weblate (Czech) Currently translated at 75.0% (60 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/cs/ Translated using Weblate (Czech) Currently translated at 100.0% (7 of 7 strings) Translation: OpenWrt/LuCI/applications/olsr-services Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr-services/cs/ Translated using Weblate (Czech) Currently translated at 100.0% (60 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/cs/ Translated using Weblate (Czech) Currently translated at 81.0% (30 of 37 strings) Translation: OpenWrt/LuCI/applications/lxc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslxc/cs/ Translated using Weblate (Czech) Currently translated at 98.1% (2953 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/cs/ Translated using Weblate (Spanish) Currently translated at 100.0% (3010 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/es/ Translated using Weblate (Spanish) Currently translated at 100.0% (259 of 259 strings) Translation: OpenWrt/LuCI/applications/adblock Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock/es/ Translated using Weblate (Swedish) Currently translated at 33.0% (166 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/sv/ Translated using Weblate (Swedish) Currently translated at 31.2% (25 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/sv/ Translated using Weblate (Swedish) Currently translated at 53.8% (49 of 91 strings) Translation: OpenWrt/LuCI/applications/frpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/sv/ Translated using Weblate (Swedish) Currently translated at 71.6% (43 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/sv/ Translated using Weblate (Korean) Currently translated at 77.5% (2335 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ko/ Translated using Weblate (German) Currently translated at 98.3% (181 of 184 strings) Translated using Weblate (Korean) Currently translated at 100.0% (13 of 13 strings) Translation: OpenWrt/LuCI/applications/bcp38 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbcp38/ko/ Translated using Weblate (Korean) Currently translated at 100.0% (99 of 99 strings) Translation: OpenWrt/LuCI/applications/attendedsysupgrade Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsattendedsysupgrade/ko/ Translated using Weblate (German) Currently translated at 86.2% (69 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/de/ Translated using Weblate (Korean) Currently translated at 12.3% (14 of 113 strings) Translation: OpenWrt/LuCI/applications/libreswan Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslibreswan/ko/ Translated using Weblate (Korean) Currently translated at 2.6% (4 of 150 strings) Translation: OpenWrt/LuCI/applications/strongswan-swanctl Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsstrongswan-swanctl/ko/ Translated using Weblate (German) Currently translated at 91.1% (2743 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/de/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 72.6% (133 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 84.4% (185 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/zh_Hant/ Translated using Weblate (German) Currently translated at 34.9% (176 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/de/ Translated using Weblate (Korean) Currently translated at 54.8% (17 of 31 strings) Translation: OpenWrt/LuCI/applications/csshnpd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscsshnpd/ko/ Translated using Weblate (Korean) Currently translated at 96.6% (29 of 30 strings) Translated using Weblate (Korean) Currently translated at 100.0% (64 of 64 strings) Translation: OpenWrt/LuCI/applications/sqm Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/ko/ Translated using Weblate (Korean) Currently translated at 100.0% (7 of 7 strings) Translation: OpenWrt/LuCI/applications/olsr-services Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr-services/ko/ Translated using Weblate (Korean) Currently translated at 1.6% (1 of 62 strings) Translation: OpenWrt/LuCI/applications/apinger Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsapinger/ko/ Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 87.5% (70 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/zh_Hant/ Translated using Weblate (French) Currently translated at 16.1% (5 of 31 strings) Translated using Weblate (Korean) Currently translated at 100.0% (28 of 28 strings) Translated using Weblate (German) Currently translated at 100.0% (45 of 45 strings) Translation: OpenWrt/LuCI/applications/cloudflared Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationscloudflared/de/ Added translation using Weblate (Korean) Translated using Weblate (Korean) Currently translated at 77.3% (2328 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ko/ Translated using Weblate (Korean) Currently translated at 97.5% (78 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/ko/ Added translation using Weblate (Korean) Translated using Weblate (Korean) Currently translated at 16.3% (30 of 184 strings) Translated using Weblate (Korean) Currently translated at 83.7% (67 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/ko/ Translated using Weblate (Korean) Currently translated at 39.9% (201 of 503 strings) Translation: OpenWrt/LuCI/applications/dockerman Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsdockerman/ko/ Translated using Weblate (Korean) Currently translated at 30.7% (28 of 91 strings) Translation: OpenWrt/LuCI/applications/frpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/ko/ Translated using Weblate (Spanish) Currently translated at 100.0% (3010 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/es/ Added translation using Weblate (Korean) Translated using Weblate (Korean) Currently translated at 16.2% (13 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/ko/ Translated using Weblate (Korean) Currently translated at 28.3% (17 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/ko/ Added translation using Weblate (Korean) Translated using Weblate (Irish) Currently translated at 100.0% (196 of 196 strings) Translation: OpenWrt/LuCI/applications/unbound Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsunbound/ga/ Translated using Weblate (Irish) Currently translated at 100.0% (219 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/ga/ Translated using Weblate (Irish) Currently translated at 100.0% (139 of 139 strings) Translated using Weblate (Lithuanian) Currently translated at 100.0% (37 of 37 strings) Translation: OpenWrt/LuCI/applications/lxc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationslxc/lt/ Translated using Weblate (Irish) Currently translated at 100.0% (60 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/ga/ 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 (Irish) Currently translated at 100.0% (80 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/ga/ Translated using Weblate (Lithuanian) Currently translated at 91.6% (2760 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/lt/ Translated using Weblate (Irish) Currently translated at 100.0% (64 of 64 strings) Translation: OpenWrt/LuCI/applications/sqm Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/ga/ Translated using Weblate (Chinese (Simplified 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_Hans/ Translated using Weblate (Chinese (Simplified 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_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (183 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (183 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (64 of 64 strings) Translation: OpenWrt/LuCI/applications/sqm Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (219 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/zh_Hans/ Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (219 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/zh_Hans/ Translated using Weblate (Irish) Currently translated at 100.0% (3010 of 3010 strings) Translation: OpenWrt/LuCI/modules/luci-base Translate-URL: https://hosted.weblate.org/projects/openwrt/luci/ga/ Translated using Weblate (Korean) Currently translated at 13.7% (11 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/ko/ Translated using Weblate (Spanish) Currently translated at 100.0% (184 of 184 strings) Translated using Weblate (Polish) Currently translated at 100.0% (44 of 44 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (183 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/es/ Translated using Weblate (Spanish) Currently translated at 100.0% (80 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/es/ Translated using Weblate (Spanish) Currently translated at 100.0% (60 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/es/ Translated using Weblate (Spanish) Currently translated at 100.0% (219 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/es/ Translated using Weblate (Polish) Currently translated at 100.0% (184 of 184 strings) Translated using Weblate (Polish) Currently translated at 100.0% (80 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/pl/ Translated using Weblate (Spanish) Currently translated at 100.0% (64 of 64 strings) Translation: OpenWrt/LuCI/applications/sqm Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/es/ Translated using Weblate (Polish) Currently translated at 73.7% (59 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/pl/ Translated using Weblate (Polish) Currently translated at 100.0% (219 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/pl/ Translated using Weblate (Russian) Currently translated at 100.0% (80 of 80 strings) Translation: OpenWrt/LuCI/applications/bmx7 Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsbmx7/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (183 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/ru/ Translated using Weblate (Polish) Currently translated at 100.0% (64 of 64 strings) Translation: OpenWrt/LuCI/applications/sqm Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/pl/ Translated using Weblate (Russian) Currently translated at 100.0% (91 of 91 strings) Translation: OpenWrt/LuCI/applications/frpc Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfrpc/ru/ Translated using Weblate (Polish) Currently translated at 100.0% (183 of 183 strings) Translation: OpenWrt/LuCI/applications/pbr Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationspbr/pl/ Translated using Weblate (Russian) Currently translated at 100.0% (60 of 60 strings) Translation: OpenWrt/LuCI/applications/ttyd Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsttyd/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (219 of 219 strings) Translation: OpenWrt/LuCI/applications/adblock-fast Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsadblock-fast/ru/ Translated using Weblate (Russian) Currently translated at 100.0% (64 of 64 strings) Translation: OpenWrt/LuCI/applications/sqm Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationssqm/ru/ Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com> Co-authored-by: Donald Duck <contact-weblate@yfournel.eu> Co-authored-by: Džiugas Januševičius <dziugas1959@hotmail.com> Co-authored-by: EESF-2 <eesf-2@users.noreply.hosted.weblate.org> 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: Kristoffer Grundström <swedishsailfishosuser@tutanota.com> Co-authored-by: Matthaiks <kitynska@gmail.com> Co-authored-by: SnIPeRSnIPeR <snipersniper@users.noreply.hosted.weblate.org> Co-authored-by: Werner Schleifer <werner.schleifer@gmail.com> Co-authored-by: aladar42 <misterx42@protonmail.com> Co-authored-by: nKsyn <e.nksyn@gmail.com> Co-authored-by: ssantos <ssantos@web.de> Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org> Signed-off-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com> Signed-off-by: Džiugas Januševičius <dziugas1959@hotmail.com> Signed-off-by: EESF-2 <eesf-2@users.noreply.hosted.weblate.org> Signed-off-by: Franco Castillo <castillofrancodamian@gmail.com> Signed-off-by: Hyeonjeong Lee <h9101654@gmail.com> Signed-off-by: Kristoffer Grundström <swedishsailfishosuser@tutanota.com> Signed-off-by: Matthaiks <kitynska@gmail.com> Signed-off-by: SnIPeRSnIPeR <snipersniper@users.noreply.hosted.weblate.org> Signed-off-by: Werner Schleifer <werner.schleifer@gmail.com> Signed-off-by: aladar42 <misterx42@protonmail.com> Signed-off-by: nKsyn <e.nksyn@gmail.com> Signed-off-by: ssantos <ssantos@web.de> Signed-off-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org> Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsantiblock/ko/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsfwknopd/pl/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnatmap/ko/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsnut/ga/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/de/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/es/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/ko/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/lt/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsolsr/pl/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsp910nd/ko/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationsuhttpd/ko/ Translate-URL: https://hosted.weblate.org/projects/openwrt/luciapplicationswol/fr/ Translation: OpenWrt/LuCI/applications/antiblock Translation: OpenWrt/LuCI/applications/fwknopd Translation: OpenWrt/LuCI/applications/natmap Translation: OpenWrt/LuCI/applications/nut Translation: OpenWrt/LuCI/applications/olsr Translation: OpenWrt/LuCI/applications/p910nd Translation: OpenWrt/LuCI/applications/uhttpd Translation: OpenWrt/LuCI/applications/wol
Dockerman JS
Notice
After dockerd v27, docker will remove the ability to listen on sockets of the form
xxx://x.x.x.x:2375 or xxx://x.x.x.x:2376 (or xxx://[2001:db8::1]:2375)
unless you run the daemon with various --tls* flags. That is, dockerd will refuse
to start unless it is configured to use TLS. See
here
here
and here.
ucode is not yet capable of TLS, so if you want dockerd to listen on a port, you have a few options.
Issues opened in the luci repo regarding connection setup will go unanswered. DIY.
This implementation includes three methods to connect to the API.
API Availability
| rpcd/CGI | (Proxy+)JS API | Controller | |
|---|---|---|---|
| API | ✅ | ✅ | ✅ |
| File Stream | ❌ | ✅ | ✅ |
| Console Start | ✅ | ❌ | ❌ |
| WS Console | ❌ | ✅ | ❌ |
| Stream endpoints | ❌ | ✅ | ✅ |
- Stream endpoints are docker API paths that continue to stream data, like logs
Dockerman uses a combination of rpcd and ucode Controller so API, Console via
ttyd and File Streaming operations are available. dockerd is configured by
default to use unix:///var/run/docker.sock, and is secure this way.
It is possible to configure dockerd to listen on e.g.:
['unix:///var/run/docker.sock', 'tcp://0.0.0.0:2375']
when you have a Reverse Proxy configured and to open up the JS API.
Reverse Proxy
Use nginx or Caddy to proxy connections to dockerd which is configured with
--tls* flags, or communicates directly with unix:///var/run/docker.sock,
which adds the necessary Access-Control-Allow-Origin: ...
headers for browser clients. You might even be able to run a
docker container that does this. If you don't want to set a proxy up, use a
browser plugin.
https://github.com/lucaslorentz/caddy-docker-proxy https://github.com/Tecnativa/docker-socket-proxy
LuCI
Included is a ucode rpc API interface to talk with the docker socket, so all API calls are sent via rpcd, and appear as POST calls in your front end at e.g.
http://192.168.1.1/cgi-bin/luci
All calls to the docker API are authenticated with your session login.
Controller
Included also is a ucode based controller to forward requests more directly to the docker API socket to avoid the rpc penalty, and stream file uploads and downloads. These are still authenticated with your session login. The methods to reach the controller API are defined in the menu JSON file. The controller API interface only exposes a limited subset of API methods.
JS API
A JS API is included in the front-end to connect to API endpoints, and it will detect how dockerd is configured. If dockerd is configured with any
xxx://x.x.x.x:2375 or xxx://x.x.x.x:2376 (or xxx://[2001:db8::1]:2375)
the front end will attempt to connect using the JS API. More features are available with a more direct connection to the API (via Proxy or using browser plugin), like WebSockets to connect to container terminals. WebSocket connections are not currently available in LuCI, or the LuCI CGI proxy.
CGI's job is to parse the request, send the response and disconnect.
Browser plug-in
To avoid setting up a Proxy, and attempt to communicate directly with the API
endpoint, whether or not configured with -tls* options, you can use a plug-in.
One which overrides (the absence of) Access-Control-Allow-Origin CORS headers
(dockerd does not add these headers).
For example:
https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/
https://addons.mozilla.org/en-US/firefox/addon/access-control-allow-origin/
https://addons.mozilla.org/en-US/firefox/addon/cors-unblock/
https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors/
The browser plug-in does not magically fix TLS problems when you have mTLS configured on dockerd (mutual CA based certificate authentication).
Architecture
High-Level Architecture
rpcd and controller
┌──────────────────────────────────────────────────────────────────┐
│ OpenWrt/LuCI │
│ │
│ ┌─────────────────────┐ │
│ │ Browser / UI │ │
│ │ containers.js │ │
│ │ images.js │ │
│ └──────────┬──────────┘ │
│ │ │
│ │ 1. GET /admin/docker/container/inspect/id?x=y │
│ V │
│ ┌──────────────────────────┐ │
│ │ LuCI Dispatcher │ │
│ │ (dispatcher.uc) │ │
│ │ - Parses URL path │ │
│ │ - Looks up action │ │
│ │ - Extracts query params │ │
│ └──────────┬───────────────┘ │
│ │ │
│ │ 2. Call controller function(env) │
│ V │
│ ┌──────────────────────────┐ │
│ │ HTTP Controller │ │
│ │ (docker.uc) │ │
│ │ - container_inspect(env)│ │
│ │ - Gets params from env │ │
│ │ - Creates socket │ │
│ └──────────┬───────────────┘ │
│ │ │
│ │ 3. Connect to Docker socket │
│ V │
│ ┌──────────────────────────┐ │
│ │ Docker Socket │ │
│ │ /var/run/docker.sock │ │
│ │ (AF_UNIX socket) │ │
│ └──────────┬───────────────┘ │
│ │ │
│ │ 4. HTTP GET /v1.47/containers/{id}/json │
│ V │
│ ┌──────────────────────────┐ │
│ │ Docker Daemon 200 OK │ │
│ │ - Creates JSON blob │ │
│ │ - Streams binary data │ │
│ └──────────┬───────────────┘ │
│ │ │
│ │ 5. data chunks (32KB blocks) │
│ V │
│ ┌──────────────────────────┐ │
│ │ UHTTPd Web Server │ │
│ │ - Receives chunks │ │
│ │ - Writes to HTTP socket │ │
│ │ (no buffering) │ │
│ └──────────┬───────────────┘ │
│ │ │
│ │ 6. HTTP 200 + data stream │
│ V │
│ ┌──────────────────────────┐ │
│ │ Browser │ │
│ │ - Receives data stream │ │
│ │ - Processes response │ │
│ │ - Displays result │ │
│ └──────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘
Request/Response Flow
Container Export Flow
Browser Ucode Controller Docker
│ │ │
├─ GET /admin/docker │ │
│ /container/export │ │
│ /{id}?abc123 ─────>│ │
│ ├─ Get param 'id' │
│ │ from env.http │
│ │ │
│ ├─ Create socket │
│ │ │
│ ├─ Connect to │
│ │ /var/run/ │
│ │ docker.sock ────>
│ │ │
│ │ <─ HTTP 200 OK │
│ │ │
│ │ <─ tar chunk 1 │
│ │ <─ tar chunk 2 │
│ <─ HTTP 200 OK ──────│ <─ tar chunk 3 │
│ <─ tar chunk 1 ──────│ <─ ... │
│ <─ tar chunk 2 ──────│ <─ EOF │
│ <─ ... │ │
│ │ │
├─ Done │ │
│ ├─ Close socket │
│ │ │
Socket Connection Details
┌──────────────────────────────────────┐
│ UHTTPd (Web Server) │
│ [Controller Process] │
└─────────────┬────────────────────────┘
│
│ AF_UNIX socket
│ (named pipe)
V
┌──────────────────────────────────────┐
│ Docker Daemon │
│ /var/run/docker.sock │
└─────────────┬────────────────────────┘
│
│ HTTP Protocol
│ (over socket)
V
Docker API Engine
- Creates export tar
- Sends as chunked stream