远程访问设备:请输入对方的设备 ID
远程主机 尚未初始化,请为它设置登录账号
初始化设置
首次使用,请设置登录账号。设置完成后直接进入系统。
用验证器 App 扫描二维码,再输入 App 上显示的 6 位验证码:
无法扫码时手动输入密钥:
设备 尚未初始化(还没有设置登录账号),请联系该设备的管理员先完成初始设置。
正在远程管理 ,请输入该主机自己的账号密码登录
正在远程访问 ,请输入该设备的账号密码
🔐 首次运行 — 设置登录账号
当前使用的是初始账号密码,请设置新的用户名和密码后再使用
🛡️ 启用二次验证
用验证器 App 扫描下方二维码,再输入 App 上显示的 6 位验证码。启用后网页上不能关闭,手机丢失时需在本机执行 lxc-webui reset-pass 复位账号。
无法扫码时手动输入密钥:
暂不启用的话,之后可在「系统设置 → 账号」中启用。
🛰️ 正在远程管理: 🛰️ 访客远程访问:
菜鸡CN4096
CPU 使用率
内存使用率
磁盘使用率
容器状态
CPU 使用率历史
系统信息
主机信息
操作系统
运行时间
网络收发
当前功耗
系统温度
CPU 占用详情
磁盘 IO
读取速度
写入速度
容器名称状态IP 地址内存占用自动启动操作
暂无容器 · 点击右上角「新建容器」创建
检测中...
暂无本地镜像缓存
发行版版本架构大小操作
发行版版本架构变体来源操作
加载中,正在查询各镜像源...
无匹配镜像
名称URL操作
暂无镜像源
提示:镜像源 URL 格式为域名或 IP,例如 images.linuxcontainers.org。 拉取列表时会通过 lxc-create --server 参数调用,需确保 VPS 能访问该地址。
📤 上传本地 rootfs
支持 .tar.gz 或 .tar.xz 格式的根文件系统压缩包。
文件名建议格式:发行版-版本-架构.tar.gz,例如 ubuntu-jammy-arm64.tar.gz
文件名(发行版-版本-架构)操作
暂无本地镜像
协议宿主机端口容器 IP容器端口操作
暂无端口转发规则
⚠ 注意: 规则通过 iptables DNAT 实现,系统重启或程序重启后规则会自动恢复,无需额外配置。
服务器配置 ▼ 内置frpc v0.52.1客户端
⚠
名称 类型 本地地址 远端 启用 操作
暂无代理规则,点击右上角「添加规则」开始
什么是「中继服务器」?把本机作为中继枢纽。有公网 IP 的机器开启它,其它内网设备(客户端)就能连进来。启动后,把下方的「服务器地址」发给你的其它设备,它们即可跨 NAT 被你统一管理。只需在一台有公网的机器上开启。
什么是「远程访问」?把本机接入某台中继服务器,可通过网页远程访问本设备。没有公网 IP 的内网设备用这个。在「服务器地址」填入中继服务器的接入地址并启用,连接后通过网址http://xxx.com/guest/id/即可远程访问管理本机。
什么是「MQTT 访问」?把本机接入一台 MQTT broker(原生 1883/8883 或 mqtt-over-ws 都行),设备与控制端只要挂在同一个 broker 上就能互相管理,不需要任何一方有公网 IP,也不需要中继服务器——可以直接复用你已有的 MQTT 服务器。在线设备会自动出现在下方列表里,不用手动登记 ID。
中继服务器 ▼
运行中 已停止
开启后,已接入的客户端可用对方 ID 经本服务器管理其它客户端(进入后仍需对方账号密码登录)。
开启后,任何人访问 填入设备 ID 即可远程访问(进入后仍需该设备账号密码登录)。默认关闭。
即当前浏览器访问的地址,已含域名/端口/TLS。走 nginx 等反代时请直接用此地址,无需单独放行额外端口。
当前连接数 [ 个] ▼
名称 ID IP 连接时长 操作
暂无客户端连接
远程设置 ▼
ID: 远程访问中,已锁定
你正通过本设备的远程访问连接管理它。保存会重启远程访问并立即断开当前连接,地址填错就再也连不回来,因此这里已锁定为只读——如需修改请到设备本地操作。
粘贴服务器端「服务器地址」即可,自动识别 http/https 与端口。
远程控制授权(本设备被远程管理时,允许对方)
我的设备 [ 个]
未连接服务器,暂不可管理
名称IDIP连接时间状态操作
还没有登记设备,填入其它设备的 ID 添加
设备 ID 可在对方「集中管理 → 客户端」页的 ID 栏查看。管理需对方在线,进入后仍需用其自身账号密码登录。
MQTT 接入 ▼
ID: 🔒 只读
该设备未授权访客修改集中管理配置,本页为只读。
原生 MQTT 与 MQTT over WebSocket 都支持,由前缀决定:mqtt://、tcp:// 走原生端口(留空补 1883),mqtts://、ssl:// 走原生 TLS(补 8883);ws(s)://、http(s):// 走 WebSocket,路径留空补 /mqtt。不写前缀的裸 host:port 按 ws 解释。
两者性能几乎一样,按对方 broker 开了哪个口来选——mosquitto 默认只监听 1883,云 broker 则常常只对外给 wss。
仅对 wss:// / ssl:// 生效。自建 broker 用自签证书时才需要打开——打开后无法防范中间人。
开启后本机会把在线状态发布到 broker,任何能向本机 topic 发布消息的人都可在网络层接通本机(进入后仍需本机账号密码登录)。默认关闭。
开启后,任何人访问 填入设备 ID 即可远程访问同 broker 上的设备(进入后仍需该设备账号密码登录)。默认关闭。
MQTT 模式下,安全边界从「中继服务器」搬到了 broker 的账号与 ACL:同一 broker、同一前缀下的人可以枚举到设备列表。请使用自建/私有 broker,并配好账号密码与 topic ACL,另外建议设置上面的「接入口令」作为最后一道闸。
broker 上的在线设备 [ 个] 未连接 broker 本机被连 个会话 · 出站 个
名称ID上线时长操作
暂无在线设备(对方需接入同一 broker、同一前缀,并开启「允许被远程管理」)
在线设备由订阅 的保留消息自动发现,无需手动登记。管理需对方在线,进入后仍需用其自身账号密码登录。
什么是「服务端」?把本机作为公网入口,用子域名把内网服务发布出去(类似 Cloudflare Zero Trust 隧道)。装在有公网 IP + 域名的机器上。它监听 80/443,按访问者的域名找到对应隧道转发过去;服务端只知道「域名 → 隧道 ID」,不知道任何内网真实地址。把域名 DNS 解析到本机公网 IP,再在下方登记「域名 → 隧道 ID」即可。
什么是「客户端」?把本内网接入某台域名穿透服务端。一个内网只装一个客户端就够了——由它代表整个内网去访问 192.168.1.10:8080、192.168.1.20:3000 等任意机器。客户端主动出站建立长连接穿透 NAT,内网不需要开放任何入站端口、不需要公网 IP。内网真实地址只存在这一页,服务端看不到。
什么是「客户端 II」?和「客户端」完全独立的第二条隧道身份——自己的服务端地址 / Token / 隧道 ID / 内网映射,互不影响、可同时在线。同一台机器要同时接入两台不同的域名穿透服务端,或者用两个不同的隧道 ID 分开管理,就用这个。
公网入口 ▼
已停止
用户拿域名访问的端口,通常是 80。与 WebUI 管理端口无关。
内网客户端接入时要填一致的值。
形如 https://*.app.example.com,其中 * 由内网那边自己填;入口不是标准端口时可以写成 https://*.app.example.com:9999。 协议和端口只用来提示完整访问地址,不参与转发——域名照样只按主机名路由。 客户端连上后会拿到这份清单,在「添加映射」里选一个再填子域名即可,不用手抄整个域名;留空则客户端只能手填完整域名。 改动即时推给在线客户端。这只是一份提示清单,域名到底通不通仍看下面的「域名路由」——配合下面的自动注册最省事。
入口前面还套了 nginx / CDN?去「设置 → 可信前置代理」填那层反代的地址。 不填的话,隧道列表的「对端 IP」显示的是反代自己的地址,转发给内网服务的 X-Forwarded-Proto 也会被改回 http(内网应用拼出的绝对地址就成了 http://,表现为混合内容被拦或跳转死循环)。那是全局设置,集中管理也用同一份。
开启后,客户端那边加一条内网映射就会自动在这里生成对应的域名路由(标记为「自动」),本页无需再手动添加。 自动路由由对应隧道整体维护:客户端删掉映射,这里也跟着消失;手动加的路由不受影响。 已被占用的域名不会被抢走,客户端会收到拒绝原因。默认关闭。
开启后上方按钮由「停止」变为「重启」,服务端只能重启、不能停——公网入口一停,挂在它上面的所有域名同时失联。 保存本页配置时也会顺手把服务端启动或重启,让端口/TLS 改动立刻生效。要真正停下来,先取消这个勾选并保存。
明文 HTTP 已经可用;需要浏览器小锁头时再开这个,填 PEM 格式的证书与私钥路径。
即当前浏览器访问 WebUI 的地址(已含域名/端口/TLS)。客户端接入复用管理端口,不需要为隧道单独放行端口;只放行了 80 时,也可以直接填 。
已接入隧道 [ 条] ▼
名称隧道 ID来源 IP转发连接连接时长
暂无隧道接入 · 在内网机器的「域名穿透 → 客户端」里填本机地址并启动
域名路由 [ 条]
域名→ 隧道 ID状态请求 / 流量操作
暂无域名路由 · 点击右上角「添加域名」,把子域名指向某条隧道
支持泛域名 *.example.com(精确匹配优先)。别忘了把这些域名的 DNS A 记录解析到本机公网 IP。内网真实地址由对应隧道的客户端自己维护,本页看不到也不需要知道。
远程管理
自动探测
点击「重新探测」扫描宿主机与 Docker 容器中的 Nginx。已添加为实例的不再重复显示。
暂无 Nginx 实例 · 可从上方探测结果添加,或点击右上角「添加实例」手动配置
请先选择一个 Nginx 实例
站点 域名 端口 SSL 启用 操作
暂无站点,点击右上角「新建站点」开始
加载中…
断开只是关掉画面,程序继续跑;服务重启后会话不保留
OpenWrt 系统不支持防火墙管理
当前宿主机是 OpenWrt,防火墙由系统自带的 fw4/fw3 统一管理,本面板不接管其规则。
请直接到系统管理界面(LuCI「网络 → 防火墙」)配置。
防火墙规则 已启用 已关闭
⚠ 防火墙当前已关闭,以下规则不生效。点击「启用防火墙」后规则才会应用到宿主机。
检测到 iptables 实际规则与管理界面记录不一致(可能被手动修改),当前实际生效规则可能已变化。
入方向规则(Inbound)— 控制外部连入宿主机的流量
优先级 策略 协议 端口 来源 IP/CIDR 描述 状态 操作
出方向规则(Outbound)— 控制宿主机向外发出的流量
优先级 策略 协议 端口 目标 IP/CIDR 描述 状态 操作
进程列表
加载中...
PID 进程名 用户 CPU% 内存(MB) 状态 命令行 操作
系统服务
加载中...
服务名 描述 运行状态 自启状态 操作
计划任务
用户:
加载中...
执行周期 命令 描述 状态 操作
格式:分(0-59) 时(0-23) 日(1-31) 月(1-12) 周(0-7) 命令  |  *=任意   */5=每5个单位   1,3,5=多个值   @reboot=开机时
SSH 管理
加载中...
SSH 密钥

此处的 SSH 公钥用于 用户的公钥认证(免密登录),保存在 。

类型 注释 指纹 操作
SSH 服务端
仅监听指定的地址,未指定则监听全部;多个地址用英文逗号分隔(如 192.168.1.5,127.0.0.1)。
指定 SSH 服务的监听端口,留空为默认 22;多个端口用英文逗号分隔。 改端口后必须「保存 & 应用」才会重启服务,且已有连接会断开。
关闭后只能用公钥登录 —— 请先确认下面已配好公钥,否则谁也进不来。
关闭后 root 只能用密钥登录(PermitRootLogin prohibit-password), 这是发行版的推荐设置。
下面「SSH 密钥」里的公钥要靠它才生效。
关闭后 root 连公钥也无法登录(对应 PermitRootLogin no)。
磁盘管理
⚠ 未检测到 smartmontools,无法显示温度/健康状态/序列号,请安装后刷新 (如 )。
⚠ 未检测到 lsblk(util-linux),兜底探测也未发现磁盘,磁盘列表无法加载。
加载中...
未检测到磁盘
松开鼠标上传文件
文件名 后缀名 大小 时间
未检测到 Docker,请先在宿主机安装 Docker 后刷新页面。
暂无容器
容器名 镜像 状态 运行时长 端口 CPU 内存 流量 操作
暂无本地镜像
仓库 标签 镜像 ID 大小 创建时间 操作
📦
暂无 Compose 项目
点击「新建项目」创建或上传 compose 文件
项目名 状态 服务 配置文件 操作
暂无网络
名称驱动作用域子网网关容器操作
暂无存储卷
卷名容器 / 镜像 存储大小 ⟳ 驱动挂载点创建时间操作
存储大小为后台逐个 du 统计,卷大时会慢;结果缓存 5 分钟,点「刷新」重算。
请在 LuCI 中配置 Docker
本机是 OpenWrt,Docker 由 UCI 配置 /etc/config/dockerd 管理:
dockerd 启动时读的是 init 脚本从 UCI 现生成的 /tmp/dockerd/daemon.json, 在本页改 /etc/docker/daemon.json 不会有任何效果,所以这一页对本机直接关闭。
请到固件自带的 LuCI「Docker → 配置」中修改(数据存储路径、加速镜像、日志驱动等 UCI 里都有对应项)。
如果确实想用本页:在 UCI 里把 alt_config_file 指向 /etc/docker/daemon.json 并重启 dockerd —— 那时 init 脚本会直接用这个文件,本页随之生效。
⚠ 现有 daemon.json 不是合法 JSON,无法解析
⚠ 当前读不到 Docker 守护进程状态(docker info 失败),下面的「当前生效」值可能为空。
daemon.json 配置
配置文件: (文件尚不存在,保存时创建)
未配置加速镜像(直连 Docker Hub)
只对 Docker Hub 的镜像拉取生效,按顺序尝试。不写前缀会自动按 https:// 补上,多余的路径和末尾斜杠会自动去掉。
当前生效:
未配置私有仓库
允许以 HTTP(或自签证书的 HTTPS)访问的仓库地址,写 主机名:端口 或网段。写了 http:// 前缀会自动去掉(dockerd 不收)。
当前生效:
⚠ 选了 none 之后,新建容器的「查看日志」将没有任何内容可看。
只对之后新建的容器生效 —— 已存在的容器沿用创建时的日志设置,要让旧容器也受限得重建它。
json-file 不设上限时日志会一直涨(单个容器攒出几百 MB 很常见),闪存/小盘上尤其要设。改这一项需要重启 Docker。
当前生效驱动:
ℹ 文件中的配置与当前生效的配置不一致,需要重载或重启 Docker 才会生效。

        
OpenWrt 的 Samba 由 UCI 管理,请使用固件自带的 LuCI(服务 → 网络共享)配置。
尚未安装 Samba
把本机目录共享给局域网里的 Windows / macOS / 手机访问,需要 Samba 服务。
点击下方按钮即可用 apt 一键安装(约 1–3 分钟)。 请手动安装:
还没有连接。点击右上角「+ 添加连接」,把局域网里 NAS 的共享目录挂到本机(如 /mnt/nas)
暂无书签,点击右上角「+ 添加」创建第一个
👋 检测到首次运行,已自动打开更多功能页,请确认系统依赖均已安装。
前端显示
定制左侧菜单显示哪些功能栏目,用不上的取消勾选即可隐藏——只是不在菜单里显示,功能本身不受影响。 默认不配置视为全部勾选、全部显示。
主机名称
允许字母 a-z A-Z、数字 0-9 和连字符 -,不能以数字开头,留空则显示系统 hostname
主机描述
显示在侧栏设置按钮与退出按钮之间,默认为空
监听端口
修改端口需重启服务生效
管理 URL 入口
默认 /。改成 /myadmin 之类后,管理页面只在该地址打开,访问 / 只返回一行当前系统时间,避免被扫描器认出来。只藏首页,/api、/ws、/guest 等路径不变,不能当访问控制用。保存后立即生效,无需重启。
访问地址:
可信前置代理
面板挡在 nginx / CDN 后面时填那层反代的地址,一行一个,支持单个 IP 和 CIDR(如 172.17.0.1、192.168.2.0/24)。 只有来自这些地址的请求,X-Forwarded-For / X-Real-IP 才会被采信 —— 集中管理的设备列表、域名穿透的隧道列表因此才能显示对端的真实公网 IP,而不是反代自己的地址; 域名穿透转发给内网服务的 X-Forwarded-Proto 也才不会被改回 http。 直连公网时务必留空:这些头是客户端可以随便伪造的。保存后新接入的连接立即生效。
文件管理根目录
文件管理器的访问根路径,用户无法浏览此目录之外的内容
账号
登录用户名
用于登录本系统的账号
当前密码
仅在修改密码时需要填写
新密码
留空保持不变
确认密码
再次输入新密码以确认
二次验证(2FA)
登录时额外输入验证器 App 上的动态码。通过在本机执行lxc-webui reset-pass可复位关闭.
如需关闭或更换手机,在本机执行 lxc-webui reset-pass(账号复位为首次运行状态)
● 已启用
以下是 菜鸡面板 运行所依赖的系统命令。绿色表示已安装,红色表示未检测到,请按提示安装后重启服务。
命令 所属软件包 用途 版本 状态
检测中...
主机版本 — OpenWrt 21.02+(procd) Debian 10+ / Ubuntu 20.04+(systemd) — 仅供参考
暂无数据
C应用信息
软件版本
构建日期
协程数
程序内存
备份数据
恢复数据
恢复备份文件
→
🔄 更新完成,程序正在重启, 秒后自动刷新页面…
点击「扫描」查看可清理的缓存 / 日志 / 临时文件
正在扫描:
未发现可清理内容
超大文件 需手动确认
搜索本地磁盘上的大文件(不含 Docker 数据目录、面板自身目录与网络挂载),按大小从大到小排列;默认不选中,请自行判断后手动勾选删除,删除不可恢复
大于 MB
正在搜索: 已检查 个文件(可离开此页,搜索在后台继续)
未找到大于 MB 的文件
已选 项,合计
延迟 PING
↓ 下载
Mbps
↑ 上传
Mbps
并发连接
streams
↓ 下载
预热段灰色
↑ 上传
预热段灰色
并发: 条连接
局域网设备
点击「重新扫描」开始探测局域网内的设备
设备名称 设备IP 开放端口 探测方式
CPU 信息
逻辑核心
当前频率
跑分测试(CoreMark-like,运行 10 秒)
单核跑分
测试中… iter/s
多核跑分
测试中… iter/s
CPU 压测(全核满载稳定性测试)
持续时间
分钟
内存测试(空余内存 60% 读写)
读 (R)
MB/s
写 (W)
MB/s
内存占用
读 (R)
MB/s
写 (W)
MB/s
测试路径
状态
文件大小 / 上限
登录成功
登录失败
内存行数
上次落盘
日志设置
相对程序工作目录。不要写绝对路径——测试实例和生产实例会抢同一个文件。
写满后轮转成 .1 留一份旧的,磁盘上最多两份。
攒够这么多就写盘。含「错误/失败/panic」等关键字的行不等阈值,立即落盘。
没攒够也最多隔这么久落一次盘。
上面「内存(实时)」读的就是它,与落盘策略无关。
访问日志量极大(面板开着就是 1 req/s 量级),开了会很快把上面的上限撑满、 把程序日志冲掉。默认关。
容器详情 ·
基本信息
系统类型 OpenWrt Alpine Linux Linux
状态
IPv4 地址
IPv6 地址
IP 地址 —
内存占用
磁盘占用
快照管理
暂无快照
容器服务管理
容器运行中才可查看和管理服务
加载中…
暂无服务 / 加载失败
服务名 状态 自启 操作
配置文件
🌐 网关 / 路由器
lxcbr0
独立 NAT 子网
lxc-br1
桥接上游 IP
加载中...
⚠ 保存后将重启 lxc-net 网桥,所有容器将短暂断网(容器进程不受影响)。 ⚠ 保存后将执行 systemctl restart lxc-net,所有容器将短暂断网(容器进程不受影响)。
当前拓扑示意
🌏 公网 / 上级路由器 宿主机
·
容器
容器
OpenWrt
宿主机作为网关,容器在独立子网,经 NAT 出公网
ℹ lxc-br1 桥接后容器将直接从上游路由器获取 IP,宿主机与容器可互通。
⚠ 保存将重启宿主机网桥,网络会短暂中断,请确认操作。
当前拓扑示意
🌏 公网 / 上级路由器 宿主机(透传)
·
br0 桥接,不做 NAT
普通容器
OpenWrt 容器
普通容器
所有容器与宿主机同网段,直接获取上级路由器分配的 IP
Server 基本配置
Location 块
暂无 location 块(适合纯重定向等场景)