飞牛 NAS 部署 LanLens,把家里的网络设备摸得一清二楚
最近在折腾飞牛NAS,有一个需求一直困扰着我,家里设备越来越多,路由器后台看到的只有一堆IP和MAC地址,根本不知道哪台是哪台。
NAS是NAS,智能音箱是智能音箱,电视盒子是电视盒子,全糊在一起,你敢信???
然后我就发现了LanLens这个东西。
开源、自托管、能自动扫描局域网、能给每台设备加备注、能一键SSH连接,还有深色主题,颜值在线。最关键的是,它完全免费,MIT协议,想怎么折腾就怎么折腾。
今天就把它部署在飞牛NAS上的完整过程记录下来,希望对你有用。
先简单说说 LanLens 是什么
LanLens 是一个自托管的局域网监控和设备文档仪表盘,核心能力是通过ARP扫描持续发现网络中的设备,用MAC/IP地址识别每一台,然后给你一个干净的Web界面来管理它们。你可以给每台设备加备注、记录它跑了哪些服务、配置一键SSH/RDP/HTTP连接,还能用nmap做端口扫描,甚至通过SSH深度扫进去拿到硬件信息、操作系统、容器列表。
图片来自 LanLens 的 Github 仓库对飞牛NAS用户来说,这东西特别实用,NAS本身就是家里的网络核心,把网络监控也跑在上面,顺理成章。
在开始之前,有一件事必须说清楚。
LanLens要做ARP扫描,就必须使用host网络模式,也就是说容器要直接共享宿主机的网络栈,才能发出原始的以太网帧。这跟我们平时部署其他容器不太一样,大多数容器用bridge网络就够了,但LanLens不行,bridge模式下ARP扫描直接失效。
所以这次部署,文件夹创建和后续的docker-compose我们用飞牛的Web界面来操作,但有一种情况例外,如果你更习惯命令行,文章后面也会给出完整的docker cli方案,两种方式任选其一。
先把目录建好
打开飞牛NAS的Web管理界面,进入「文件管理器」,在docker文件夹下新建一个文件夹,命名为lanlens,再在lanlens里面新建一个子文件夹,命名为data。

最终的目录结构是这样,
docker/ └── lanlens/ └── data/
data文件夹是LanLens存放SQLite数据库和持久化数据的地方,这个目录必须提前建好,不然容器启动会报错。
生成密钥,这步不能偷懒
这是LanLens最重要的一个环境变量,叫SECRET_KEY,它用来加密存储你的SSH和WinRM凭据,必须是至少32个字符的随机字符串,弱了直接拒绝启动。
打开飞牛NAS的「终端」,或者SSH进去,跑下面这条命令,
openssl rand -hex 32
跑完会输出一串64位的十六进制字符串,类似这样,

如果不会使用 SSH,可以直接复制这段话:生成一个32位的随机密码 发给 AI 帮你生成一个32位随机密码。

把这串东西复制下来,后面要用。
把配置文件写好,核心就这一块
飞牛NAS的Docker管理界面支持直接粘贴docker-compose.yml内容来创建项目,不需要手动写文件。
打开「Docker」→「Compose」→「新建项目」,项目名填lanlens,路径选择刚才建好的/vol1/1000/docker/lanlens,然后在compose内容区域把下面的配置粘进去,把SECRET_KEY换成你刚才生成的那串。

services: lanlens: image: alexrosbach/lanlens:latest container_name: lanlens restart: unless-stopped network_mode: host cap_add: - NET_ADMIN - NET_RAW volumes: - ./data:/data environment: - SECRET_KEY=把你生成的密钥粘在这里 - DEFAULT_ADMIN_PASSWORD=admin - LANLENS_PORT=7765 - BACKEND_PORT=17765 - TZ=Asia/Shanghai healthcheck: test: ["CMD-SHELL", "curl -fs http://localhost:/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 20s
几个参数解释一下,

配置填好之后,点「部署」,飞牛会自动拉取镜像并启动容器,根据网速等个一两分钟。

在「容器」列表里看到lanlens状态变成「运行中」,就说明跑起来了。
【可选】命令行党看这里,docker cli 一步到位
如果你更习惯SSH命令行,不想走Web界面,下面这条命令可以直接替代上面所有的准备工作,一步到位。
先SSH进飞牛NAS,
ssh 你的用户名@你的飞牛NAS的IP
建好目录,
mkdir -p /vol1/1000/docker/lanlens/data cd /vol1/1000/docker/lanlens
生成密钥,
openssl rand -hex 32
把生成的密钥复制下来,替换下面命令里的SECRET_KEY值,然后直接跑,
docker run -d --name=lanlens --restart=unless-stopped --network=host --cap-add=NET_ADMIN --cap-add=NET_RAW -v $(pwd)/data:/data -e SECRET_KEY=把你的密钥粘在这里 -e DEFAULT_ADMIN_PASSWORD=admin -e LANLENS_PORT=7765 -e BACKEND_PORT=17765 -e TZ=Asia/Shanghai alexrosbach/lanlens:latest
跑完用docker ps | grep lanlens确认一下状态,看到Up或healthy就好了。

注意,因为LanLens用的是host网络模式,端口直接由LANLENS_PORT环境变量控制,不需要加-p参数映射。
打开浏览器,见证一下
不管你用哪种方式部署,接下来都一样,浏览器访问,
http://你的飞牛NAS的IP:7765
第一次进去会让你登录,默认账号密码都是admin,登录之后会弹出重置密码的提示,改一个强密码,这步不能跳过。


改完密码,登录成功,LanLens会自动开始扫描你的局域网,稍等片刻,网络里的设备就会一台一台出现在Dashboard上。

进去之后,先把这三件事做了
第一件,前往Settings → Scan Range,确认扫描的网段配置正确,局域网段一般是192.168.x.0/192.168.x.254,对上了就行。

第二件,如果你想在有新设备接入网络时收到通知,可以去Settings → Notifications配置Telegram通知,填入Bot Token和Chat ID就能用,或配置下 SMTP 服务,通过邮件进行通知,这个通知功能是可选的。

第三件,等首次扫描完成之后,给你认识的设备逐一加上备注,NAS、路由器、电视、手机,一个个标清楚,以后看着就舒服多了。


玩熟了之后,还能这么搞
深度扫描,这个功能可以通过SSH连进Linux设备,拿到CPU型号、内存、磁盘、运行中的容器列表等详细信息。飞牛NAS本身就是Linux,理论上可以对NAS自身做深度扫描,在Settings里配置好SSH凭据就行,官方文档在 https://github.com/AlexRosbach/LanLens#deep-scan--required-permissions。
一键连接,在设备详情页可以配置SSH、HTTP、HTTPS的快捷入口,配好之后直接点就能跳转,省去每次手动输IP的麻烦。
换数据库,LanLens默认用SQLite存数据,对家用场景完全够用。如果你已经在飞牛NAS上跑了MariaDB,也可以改用MariaDB,在compose配置里加一行DATABASE_URL就行,
- DATABASE_URL=mysql+pymysql://lanlens:你的密码@127.0.0.1:3306/lanlens
注意因为是host网络模式,数据库地址直接用127.0.0.1就能访问宿主机上的MariaDB。
踩坑记录,提前看能省不少事
网络模式这块,前面说了,必须用host,bridge模式ARP扫描直接废掉,这个没有绕过的办法。
端口冲突,7765这个端口如果已经被飞牛NAS上的其他服务占用了,改LANLENS_PORT的值就行,比如改成8765,重启容器生效。
数据备份,LanLens v1.4.0之后有数据库结构变更,更新之前一定要备份data目录,SSH进去跑一行,
cp -r /vol1/1000/docker/lanlens/data /vol1/1000/docker/lanlens/data.bak
密码忘了,不用慌,进容器重置,
docker exec -it lanlens reset-password --password "你的新密码"
安全这块,如果你的飞牛NAS有公网访问需求,强烈建议在LanLens前面加一层反向代理,比如Nginx Proxy Manager,套上HTTPS,不要裸跑在公网上。
怎么说呢,LanLens这个东西,真的让我第一次觉得家里的网络「被我掌握了」。以前路由器后台一堆没有名字的设备,现在每台都清清楚楚,哪台在线、哪台跑了什么服务、什么时候新接入了一台陌生设备,一目了然。
对飞牛NAS用户来说,部署成本不高,Web界面点几下或者SSH跑几条命令的事儿,但带来的网络管理体验提升是实实在在的。
可以试试。
既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
谢谢你看我的文章,我们,下次再见。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

夏日25
校验提示文案
豆芽的豆
校验提示文案
microten
校验提示文案
一包花生米
校验提示文案
BOPI
校验提示文案
willsjiang
校验提示文案
willsjiang
校验提示文案
jzycn
校验提示文案
被现实颠覆的红烧肉
校验提示文案
guguangcanying
校验提示文案
啊东能靠谱不
校验提示文案
我来弄一个
校验提示文案
guguangcanying
校验提示文案
被现实颠覆的红烧肉
校验提示文案
jzycn
校验提示文案
willsjiang
校验提示文案
willsjiang
校验提示文案
microten
校验提示文案
豆芽的豆
校验提示文案
夏日25
校验提示文案
BOPI
校验提示文案
我来弄一个
校验提示文案
啊东能靠谱不
校验提示文案
一包花生米
校验提示文案