LuCI is the web interface for many OpenWrt administration tasks. Stable releases usually include it, while snapshots may need an extra install; a device with only 4 MB flash or 32 MB RAM may not have room for the full package. In that situation I select an image with LuCI included or build a smaller image instead of filling flash blindly.[28]
1. Use Firmware Selector
Open:[28]
| |
Enter the exact device, click the small arrow beside Customize installed packages and/or first boot script, then:[28]
- Scroll down and click REQUEST BUILD.[28]
- Wait for the build and download the SYSUPGRADE image.[28]
- Transfer the image to the router and perform the matching sysupgrade procedure.[28]
HTTP access
The source's Firmware Selector flow applies to releases newer than 24.10 and snapshots. I do not guess the target; I select the exact model in the selector before building.[28]
Replace HTTP with HTTPS
- Open the same URL and expand package customization.[28]
- Prefix
luciwith-to remove the HTTP package.[28] - Add
luci-ssl.[28] - Generate the image, download SYSUPGRADE, and upgrade.[28]
Add a language
When I know the language package name, I add it to the customization list, generate the image, transfer it, and sysupgrade. The package must match the release/target; I do not copy a package from another build.[28]
2. Move LuCI to alternate ports
The source's example ports are HTTP 8080/TCP and HTTPS 8443/TCP:[28]
| |
After restarting, I use the new scheme/port and update the management firewall if needed. Changing the port is not a reason to expose LuCI to the Internet or a guest network.[28]
LuCI, uHTTPd, and configuration files
LuCI is a meta package with several dependencies, notably uHTTPd. The default structure described in the documentation is:[28]
- document root:
/www;[28] /www/index.htmlredirects to/cgi-bin/luci;[28]- the CGI gateway invokes Lua at
/usr/bin/lua;[28] - main configuration files:
/etc/config/uhttpdand/etc/config/luci.[28]
LuCI can also run on nginx with either package:[28]
| |
luci-ssl-nginx adds nginx-ssl, uwsgi-cgi, and a default configuration that redirects HTTP to HTTPS. The source also mentions BusyBox httpd for very constrained images, but that arrangement is uncommon and needs manual configuration; I use it only when I understand the limits.[28]
3. Install LuCI packages offline
Download packages for the correct platform and release first. The Basic list is:[28]
| |
The Extended list is:[28]
| |
Transfer the packages to the router's RAM disk, install them, and remove the temporary directory:[28]
| |
When the router has no Internet connection, download packages elsewhere. Do not leave large .ipk files in /tmp, which is RAM.[28]
4. Offline script for 24.10 and older
The source provides this script for a router with Internet access, or for splitting the workflow into two parts: rsync from a machine that can reach the package repository, followed by upload/install to the router. The package names, target paths, and sample host values remain unchanged; replace OWRT_HOST with the real hostname/IP before running:[28]
| |
The script uses eval on /etc/os-release received from the router, so I run it only with a trusted host and SSH path. It also assumes the package names match the release; for another target, I obtain the correct repository rather than guessing a path.[28]
Final checks
After installation, open the router's IP/hostname, use the correct HTTP or HTTPS port, sign in with the local account, and inspect System → Software and the LuCI menus. LuCI is an administration surface; I keep SSH/console available and do not treat HTTPS on port 8443 as permission to open the interface on WAN.[28]
Source
Original source: [LuCI essentials]1, published/updated 2026-08-26.[28]
Sources
[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. ↩︎


Góp Ý / Bình Luận / Đánh giá