LuCI essentials trên OpenWrt: cài đặt, HTTPS, port thay thế và offline
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_httpuci 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_httpsuci 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-nginxluci-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]
liblualibubuslibubus-lualibuci-lualualuci-baseluci-lib-ipluci-lib-jsoncluci-lib-nixioluci-mod-admin-fullluci-theme-bootstraprpcduhttpd
Danh sách Extended:[28]
luciluci-app-firewallluci-app-opkgluci-proto-ipv6luci-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 routerssh [email protected] mkdir -p /tmp/luci-offlinescp *.ipk [email protected]:/tmp/luci-offline# Install packagesssh [email protected] opkg install /tmp/luci-offline/*.ipk# Clean upssh [email protected] 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 errorset -e# Configuration parametersOWRT_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 releaseeval $(ssh "${OWRT_USER}@${OWRT_HOST}" cat /etc/os-release)# Fetch LuCI packagesREPO_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}" ;;esacREPO_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|")EOIdone# Upload packages to OpenWrtssh "${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}"EOFchmod +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
Footnotes
-
https://openwrt.org/docs/guide-user/luci/luci.essentials — LuCI essentials. ↩
Bình Luận & Thảo Luận
Góp ý, hỏi đáp và chia sẻ suy nghĩ của bạn