使用 LUCI 应用商店(最简单,推荐新手)
这是最简单、最“OpenWrt”的方式,你不需要 SSH 登录路由器,直接在网页界面里就能完成安装和配置。

(图片来源网络,侵删)
安装必要的软件包
-
登录你的 OpenWrt 路由器管理界面(通常是
168.1.1)。 -
进入 系统 -> 软件包。
-
在 过滤器 中搜索并安装以下软件包:
luci-app-uhttpd: 这是 uHTTPd 服务器的 Web 界面应用,uHTTPd 是 OpenWrt 自带的轻量级 Web 服务器。uhttpd: Web 服务器本身。luci-app-nginx: 如果你希望功能更强大,可以安装 Nginx,Nginx 比 uHTTPd 功能更丰富,性能也更好,尤其是在处理 PHP 等动态内容时。nginx: Nginx 服务器本身。
选择建议:
(图片来源网络,侵删)- 只放静态网页(HTML, CSS, JS, 图片):安装
luci-app-uhttpd和uhttpd即可。 - 需要运行 PHP、WordPress、Typecho 等动态网站:强烈建议安装
luci-app-nginx和nginx。
-
点击 立即保存,等待软件包下载和安装完成。
配置 Web 服务器
安装完成后,进入 系统 -> 共享存储。
- 勾选 启用,然后点击 挂载,这会在你的路由器上创建一个
/mnt/sda1这样的目录(如果你的 U 盘或硬盘是/dev/sda1),所有网站文件都放在这里,这样即使路由器重启,文件也不会丢失。
配置你选择的 Web 服务器。
情况 A:使用 uHTTPd

(图片来源网络,侵删)
- 进入 网络 -> 服务 -> uHTTPD 服务器。
- 常规设置:
- 端口:默认是
80(HTTP),如果你要配置 HTTPS,可以再开一个443端口。 - 根目录:这里填写你的共享存储路径,
/mnt/sda1/www,你需要先在 U 盘里创建这个www文件夹。 - 目录列表:根据需要选择是否允许列出目录内容。
- 索引文件:默认是
index.html, index.htm。
- 端口:默认是
- 高级设置:
- 错误页面 404:可以自定义一个 404 错误页面。
- 虚拟主机:如果你有多个域名,可以在这里配置不同的域名指向不同的网站目录。
- 点击 保存 & 应用。
情况 B:使用 Nginx
- 进入 系统 -> 软件包,找到
luci-app-nginx,点击 配置。 - 这里你可以配置 Nginx 的全局设置、虚拟主机等,界面比 uHTTPd 复杂一些,但更强大。
- 关键配置:你需要手动编辑 Nginx 的配置文件,最直接的方法是 SSH 登录路由器。
- 配置文件通常位于
/etc/nginx/nginx.conf和/etc/nginx/conf.d/目录下。 - 在
conf.d目录下创建一个新的.conf文件来配置你的网站。
- 配置文件通常位于
上传网站文件
- 将你的网站文件(
index.html)复制到 U 盘的www目录下。 - 如何上传?
- 方法一(推荐): 在你的电脑上,通过 SMB (Windows) 或 AFP (Mac) 挂载路由器的 U 盘,直接拖拽文件。
- 方法二: 使用 WinSCP 或 FileZilla 等 SFTP/FTP 客户端连接路由器(需要先安装
vsftpd或luci-app-vsftpd软件包)。 - 方法三: SSH 登录路由器,使用
scp或rz(需要安装lrzsz) 命令传输文件。
访问你的网站
在局域网内的任何一台电脑或手机上,打开浏览器,输入路由器的 IP 地址(http://192.168.1.1),你应该就能看到你的网站了。
使用 Docker(最灵活,推荐进阶)
如果你的路由器性能足够好(CPU 和内存都比较充裕),并且你想运行完整的、标准化的网站环境(如 WordPress, Nextcloud 等),使用 Docker 是最佳选择。
安 Docker
- 系统要求: 需要 ARMv7 或 aarch64 架构,并且有足够的内存(建议至少 256MB,推荐 512MB 或更多)。
- 进入 系统 -> 软件包。
- 安装
luci-app-docker和docker包。 - 安装后,在 系统 -> Docker 中可以看到管理界面。
创建网站数据目录
同样,在 系统 -> 共享存储 中启用你的硬盘/ U 盘,然后在里面为你的网站创建数据目录。
/mnt/sda1/docker/wordpress
运行 Docker 容器
你可以通过两种方式运行容器:
A. 使用 LUCI Docker 界面
- 进入 系统 -> Docker -> 容器。
- 点击 添加。
- 镜像: 输入你想要运行的镜像,
nginx:alpine或wordpress:latest。 - 卷: 这是关键,将本地的网站目录(如
/mnt/sda1/www)挂载到容器内的目录(如/usr/share/nginx/html)。 - 端口: 将容器的端口(如
80)映射到路由器的端口(如8080,避免和路由器管理界面冲突)。 - 环境变量: 如果是 WordPress 等应用,需要在这里设置数据库密码等。
- 点击 保存,然后启动容器。
B. 使用 Docker Compose(更推荐)
对于复杂的应用,Docker Compose 是管理多容器应用的利器。
- 在你的共享存储目录(如
/mnt/sda1/docker)下创建一个docker-compose.yml文件。 - SSH 登录路由器,使用
vi或nano编辑器创建文件:cd /mnt/sda1/docker nano docker-compose.yml
- 粘贴一个 Nginx 的示例配置:
version: '3' services: my-website: image: nginx:alpine container_name: my-website restart: always ports: - "8080:80" # 将主机的8080端口映射到容器的80端口 volumes: - ./www:/usr/share/nginx/html # 将主机的./www目录挂载到容器 - 保存文件后,在目录下运行命令来启动:
docker-compose up -d
- 访问
http://你的路由器IP:8080即可看到 Nginx 的欢迎页面。
安全与网络配置(非常重要)
网站搭好了,但只能在局域网访问,要让外网也能访问,需要进行端口映射和 DDNS 配置。
端口转发
- 登录 OpenWrt 管理界面,进入 网络 -> 端口转发。
- 点击 添加。
- 名称: 给你的规则起个名字,如 "Web Server"。
- 外部 IP 地址: 留空,表示转发到所有进入 WAN 口的请求。
- 外部端口:
80(HTTP) 和443(HTTPS),如果你的运营商屏蔽了 80 端口,可以尝试用其他端口,如8080。 - 内部 IP 地址: 你的路由器的 LAN IP 地址,即
168.1.1。 - 内部端口: 和你 Web 服务器配置的端口一致,如果你用 uHTTPd 且端口是 80,这里就填
80。 - 协议:
TCP。 - zones:
wan。 - 点击 保存。
动态域名解析
由于你的家庭公网 IP 地址是会变的,你需要一个固定的域名来指向它。
- 在 网络 -> DDNS 中配置。
- 点击 添加。
- 服务提供商: 选择你的 DDNS 服务商,如 "DynDNS.org", "No-IP.com", 或者国内的服务商如 "花生壳"。
- 域名: 你注册的域名。
- 用户名/密码: 你的 DDNS 账号和密码。
- 接口:
WAN。 - 强制更新间隔: 设置一个合理的值,如
10分钟。 - 点击 保存 & 应用。
你就可以通过你的 DDNS 域名从外网访问你的网站了。
使用 HTTPS(强烈推荐)
让网站使用 HTTPS 是必须的,这可以加密你的数据,防止被窃听。
- 获取 SSL 证书:
- 推荐使用 Let's Encrypt: 免费且自动,你可以使用
acme包(luci-app-acme)在 OpenWrt 上自动申请和续签证书。 - 手动获取: 在其他电脑上使用
certbot等工具申请,然后将证书文件通过 SCP 传到路由器上。
- 推荐使用 Let's Encrypt: 免费且自动,你可以使用
- 配置 Web 服务器:
- uHTTPd: 在 网络 -> 服务 -> uHTTPD 服务器 中,配置
证书文件和私钥文件的路径,并启用HTTPS端口。 - Nginx: 在 Nginx 的配置文件中,添加一个
server块,监听443端口,并配置ssl_certificate和ssl_certificate_key。
- uHTTPd: 在 网络 -> 服务 -> uHTTPD 服务器 中,配置
- 强制跳转 HTTP 到 HTTPS: 在 Nginx 配置中,可以设置一个监听
80端口的server,将所有请求301重定向到https://。
| 方案 | 优点 | 缺点 | 适用人群 |
|---|---|---|---|
| LUCI 软件包 | 安装配置简单,图形化界面,资源占用低 | 功能相对固定,灵活性不如 Docker | OpenWrt 新手,只需要部署简单静态网站或小型博客 |
| Docker | 功能强大,应用生态丰富,标准化部署,可运行复杂应用 | 对路由器性能要求高,需要一定的 Linux 和 Docker 基础 | 进阶用户,需要部署 WordPress, Nextcloud 等复杂应用 |
对于绝大多数用户,从方案一开始是最稳妥的选择,当你需要更复杂的功能时,再考虑升级到方案二,祝你搭建顺利!
