LuCI essentials trên OpenWrt: cài đặt, HTTPS, port thay thế và offline
MỤC LỤC BÀI VIẾT (Nhấn để xem)
LuCI là giao diện web cho nhiều tác vụ quản trị OpenWrt. Stable release thường có sẵn LuCI, còn snapshot có thể cần cài thêm; máy chỉ có 4 MB flash hoặc 32 MB RAM có thể không đủ chỗ cho full install. Khi đó mình chọn image có LuCI sẵn hoặc dùng build tối giản, không cố cài mù rồi làm đầy flash.[28]
1. Dùng Firmware Selector
Mở:[28]
https://firmware-selector.openwrt.org/?version=SNAPSHOT
Nhập đúng thiết bị, bấm mũi tên nhỏ cạnh Customize installed packages and/or first boot script, rồi:[28]
- Kéo xuống bấm REQUEST BUILD.[28]
- Chờ build xong và tải image SYSUPGRADE.[28]
- Chuyển image lên router và thực hiện sysupgrade theo hướng dẫn upgrade tương ứng.[28]
Bật truy cập HTTP
Luồng Firmware Selector ở trên dùng cho các bản mới hơn 24.10 và snapshot theo nội dung nguồn. Mình không đoán target; luôn chọn đúng model trong selector trước khi build.[28]
Thay HTTP bằng HTTPS
- Mở cùng URL và mở phần tùy chỉnh package.[28]
- Thêm dấu
-trướcluciđể bỏ package HTTP.[28] - Thêm
luci-ssl.[28] - Generate image như bước trên, tải SYSUPGRADE và upgrade.[28]
Thêm ngôn ngữ
Nếu biết tên language package, thêm package đó vào danh sách tùy chỉnh, generate image, rồi transfer và sysupgrade. Tên package phải đúng release/target; không copy package của bản khác.[28]
2. Đổi LuCI sang port khác
Các port mẫu của nguồn là HTTP 8080/TCP và HTTPS 8443/TCP:[28]
uci -q delete uhttpd.main.listen_http
uci add_list uhttpd.main.listen_http="0.0.0.0:8080"
uci add_list uhttpd.main.listen_http="[::]:8080"
uci -q delete uhttpd.main.listen_https
uci add_list uhttpd.main.listen_https="0.0.0.0:8443"
uci add_list uhttpd.main.listen_https="[::]:8443"
uci commit uhttpd
/etc/init.d/uhttpd restart
Sau khi restart, mình dùng đúng scheme/port mới và cập nhật firewall quản trị nếu cần. Không expose LuCI cho Internet hoặc guest network chỉ vì đã đổi port.[28]
LuCI, uHTTPd và file cấu hình
LuCI là meta package kéo theo nhiều package, đáng chú ý là uHTTPd. Cấu trúc mặc định trong tài liệu:[28]
- document root:
/www;[28] /www/index.htmlchuyển tới/cgi-bin/luci;[28]- CGI gateway gọi Lua tại
/usr/bin/lua;[28] - file cấu hình chính:
/etc/config/uhttpdvà/etc/config/luci.[28]
Có thể chạy LuCI trên nginx với một trong hai package:[28]
luci-nginx
luci-ssl-nginx
Bản luci-ssl-nginx thêm nginx-ssl, uwsgi-cgi và cấu hình mặc định để redirect HTTP sang HTTPS. Nguồn cũng nêu BusyBox httpd cho image quá hạn chế dung lượng, nhưng setup này ít được dùng và cần cấu hình thủ công; mình chỉ chọn khi hiểu rõ giới hạn.[28]
3. Cài offline các package LuCI
Tải package đúng platform và release trước. Danh sách Basic trong tài liệu:[28]
liblua
libubus
libubus-lua
libuci-lua
lua
luci-base
luci-lib-ip
luci-lib-jsonc
luci-lib-nixio
luci-mod-admin-full
luci-theme-bootstrap
rpcd
uhttpd
Danh sách Extended:[28]
luci
luci-app-firewall
luci-app-opkg
luci-proto-ipv6
luci-proto-ppp
Transfer vào RAM disk của router, cài rồi xóa thư mục tạm:[28]
# Upload packages to the router
ssh root@openwrt.lan mkdir -p /tmp/luci-offline
scp *.ipk root@openwrt.lan:/tmp/luci-offline
# Install packages
ssh root@openwrt.lan opkg install /tmp/luci-offline/*.ipk
# Clean up
ssh root@openwrt.lan rm -f -R /tmp/luci-offline
Nếu router không có Internet, tải package từ máy khác. Không để .ipk lâu trong /tmp vì đó là RAM.[28]
4. Script offline cho 24.10 và cũ hơn
Nguồn có script dưới đây cho trường hợp router có Internet hoặc chia script thành hai phần: phần rsync chạy ở máy có kết nối package repository, phần upload/install chạy tới router. Thay OWRT_HOST bằng hostname/IP thật trước khi chạy:[28]
cat << "EOF" > opkg-offline-luci.sh
#!/bin/sh
# Exit on error
set -e
# Configuration parameters
OWRT_USER="root"
OWRT_HOST="openwrt.lan"
OWRT_TEMP="/tmp/luci-offline"
OWRT_PKGS="libiwinfo20210430 libiwinfo-lua liblua5.1.5 \
liblucihttp0 liblucihttp-lua libubus20220601 libubus-lua \
libuci-lua lua luci-base luci-lib-ip luci-lib-jsonc \
luci-lib-nixio luci-mod-admin-full luci-mod-network \
luci-mod-status luci-mod-system luci-theme-bootstrap \
rpcd uhttpd"
# Fetch OpenWrt release
eval $(ssh "${OWRT_USER}@${OWRT_HOST}" cat /etc/os-release)
# Fetch LuCI packages
REPO_LOCAL="file://${1:-${OWRT_TEMP}}/"
REPO_URL="https://downloads.${HOME_URL#*//}"
case "${VERSION_ID}" in
(snapshot) REPO_DIR="downloads/snapshots" ;;
(*) REPO_DIR="downloads/releases/${VERSION_ID}" ;;
esac
REPO_CORE="${REPO_DIR}/targets/${OPENWRT_BOARD}"
REPO_PKGS="${REPO_DIR}/packages/${OPENWRT_ARCH}"
for REPO_DIR in "${REPO_CORE}" "${REPO_PKGS}"
do mkdir -p "${REPO_LOCAL#*//}${REPO_DIR#*/}"
rsync -n --bwlimit="8M" --del -r -t -v \
--include="*/" --include-from="-" --exclude="*" \
"${REPO_URL/https/rsync}${REPO_DIR}/" \
"${REPO_LOCAL#*//}${REPO_DIR#*/}/" << EOI
$(echo "${OWRT_PKGS// /$'\n'}" \
| sed -e "s|^|/**/|;s|$|_*.ipk|")
EOI
done
# Upload packages to OpenWrt
ssh "${OWRT_USER}@${OWRT_HOST}" "mkdir -p ${OWRT_TEMP}"
find "${OWRT_TEMP}" -name "*.ipk" -exec scp "{}" "${OWRT_USER}@${OWRT_HOST}:${OWRT_TEMP}" ";"
ssh "${OWRT_USER}@${OWRT_HOST}" "opkg install ${OWRT_TEMP}/*.ipk"
ssh "${OWRT_USER}@${OWRT_HOST}" "rm -f -R ${OWRT_TEMP}"
rm -f -R "${OWRT_TEMP}"
EOF
chmod +x opkg-offline-luci.sh
./opkg-offline-luci.sh
Script dùng eval với /etc/os-release lấy từ router nên mình chỉ chạy với host/đường SSH tin cậy. Nó cũng giả định package names khớp release; nếu target khác, phải lấy đúng repository thay vì sửa bừa path.[28]
Kiểm tra cuối
Sau khi cài, mở IP/hostname của router, thử HTTP hoặc HTTPS đúng port, đăng nhập bằng tài khoản cục bộ và kiểm tra System → Software/các menu LuCI. LuCI là lớp quản trị; mình vẫn giữ SSH/console dự phòng và không coi HTTPS trên port 8443 là lý do để mở giao diện ra WAN.[28]
Nguồn
Tài liệu gốc: [LuCI essentials]1, đăng/cập nhật 2026-08-26.[28]
[28] https://openwrt.org/docs/guide-user/luci/luci.essentials — OpenWrt Wiki: LuCI essentials
https://openwrt.org/docs/guide-user/luci/luci.essentials — LuCI essentials. ↩︎
OpenWRT
- Chia sẻ ổ USB qua Samba trên OpenWrt: cấu hình, firewall và xử lý lỗi
- DNS over TLS trên OpenWrt với Unbound: cấu hình và kiểm tra rò rỉ DNS
- Dùng USB làm bộ nhớ ngoài cho OpenWrt: driver, phân vùng và automount
- LuCI essentials trên OpenWrt: cài đặt, HTTPS, port thay thế và offline Đang đọc
- Sao lưu và khôi phục cấu hình OpenWrt bằng LuCI và SSH
Bình luận & Thảo luận 0
Chia sẻ thắc mắc, phản hồi hoặc kinh nghiệm thực chiến của bạn