尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

旧电视盒子刷Armbian跑Docker青龙面板,打造低功耗家庭自动化服务器

发布时间:2026/9/28 15:08:26

资讯中心
01
ARTICLE

旧电视盒子刷Armbian跑Docker青龙面板,打造低功耗家庭自动化服务器

旧电视盒子刷Armbian跑Docker青龙面板,打造低功耗家庭自动化服务器
1. 为什么是E900V22C这笔账算清楚再动手电视盒子这东西恐怕是智能家居时代最容易被忽视的闲置硬件。很多人换了新盒子之后旧盒子就躺在抽屉里吃灰觉得它跑不动、没系统、没生态卖掉又不值几个钱。但我手里这台 E900V22C后来被我刷成了 Armbian再用 Docker 跑起了青龙面板现在每天定时执行各种脚本相当于一台 24 小时不关机的家庭自动化调度服务器。整个过程下来只花了几十块电费比再买一台 NAS 或者云服务器划算得多。先给不熟悉这台盒子的朋友一个大体画像。E900V22C 是国内运营商盒子比较常见的一个型号不同批次配置略有差异但整体方向一致晶晨 Amlogic 平台的四核 CPU、2GB 内存、8GB eMMC 存储带百兆有线网口整体功耗非常低。这种底子用在安卓电视系统上确实只是当个播放器但换成 Linux 系统之后它完全可以胜任轻量级容器服务的宿主。项目常见配置对服务器的影响CPU四核 Arm 架构跑轻量 Docker 容器问题不大内存2GB适合同时跑 3-5 个轻量服务存储8GB eMMC系统加 Docker 加青龙足够别拿它存媒体网口百兆有线传大文件会慢做自动化任务完全够功耗3-5W 左右24 小时开机基本可以忽略电费很多人在搭建家庭服务器时陷入了“配置焦虑”总觉得要用 x86 小主机、要用大内存、要搞万兆网口。但冷静想想如果只是跑青龙面板、定时脚本、AdGuard Home、Node-RED 这类轻量服务一台 2GB 内存的电视盒子已经能扛住。真正需要大内存的场景比如视频转码、虚拟机、大型数据库本来就不适合放在这种盒子上硬塞上去只会频繁 OOM。从我的实际使用经验来看E900V22C 更适合当“调度中枢”而不是“存储仓库”。它把定时任务自动化这件事做得非常好24 小时在线、功耗低、重启成本低、坏了也不心疼。相比之下云服务器虽然稳定但每年几百块的续费放在“跑个定时脚本”这个需求上实在浪费。这也是我强烈建议先把盒子刷成 Armbian 的原因——安卓系统放在后台跑脚本又别扭又不可靠只有换成真正的 Linux 发行版Docker 生态才能稳稳落地。2. 刷 Armbian 前必须搞明白的三件事版本、存储介质、引导方式2.1 Armbian 版本怎么选如果你去 Armbian 官方或者第三方固件发布页看会发现镜像文件非常多命名规则也五花八门。对于 E900V22C 这类晶晨盒子优先找 Amlogic 平台对应的 Armbian 镜像一般会写明支持 s905x3 或者包含 S905L3A 系列 dtb。我手上这台用的是 server 版而不是 desktop 版原因很简单电视盒子不需要图形桌面多一个桌面环境就多吃几百 MB 内存还会抢 eMMC 空间得不偿失。选内核版本时尽量挑 6.x LTS 这类稳定分支太新的内核不一定对这盒子优化得好太老的内核又可能缺少对 Docker 和容器特性的支持。如果固件发布页同时提供了多个 dtb 文件优先找和 E900V22C 对应的型号。启动后如果发现网口不亮、显示异常或无线网卡识别不了八成是 dtb 选错了需要去/boot/uEnv.txt里改FDT路径换成驱动匹配的设备树文件。2.2 U盘还是TF卡E900V22C 不是所有批次都有 TF 卡槽所以大多数人用的是 U 盘方案。我的建议是别用家里随便拿的旧 U 盘也别用那种已经写了很多次、寿命不明的杂牌盘。Armbian 写入 U 盘后如果只是用来做最开始的引导那对 U 盘性能要求不高但如果你打算长期用 U 盘跑系统那 U 盘的写入稳定性和寿命就非常关键。更推荐的方案是先把 Armbian 烧到 U 盘上从 U 盘启动成功后再把系统安装到盒子自带 eMMC 里。这样做有几个好处一是系统跑在 eMMC 上读写速度比大多数 U 盘稳定二是拔掉 U 盘后盒子内部更整洁不会因为 U 盘松动导致系统异常断电三是不会占用唯一的 USB 口后面插其他设备更方便。2.3 刷机前必须先做的事在刷机之前先做好两件准备。第一确认盒子的主控型号和当前系统版本最好在安卓系统设置里看一眼或者拆开盒子看主板上丝印。不同批次的 E900V22C 可能使用不同主控刷错镜像轻则无法启动重则需要重新线刷。第二如果原机系统还能正常开机尽量把原厂固件备份一下。很多盒子的刷机教程都会提到“线刷全量备份”虽然操作稍稍麻烦但一旦后续玩坏了还能刷回安卓看电视剧。这里必须提醒一句刷机有风险任何操作都有可能让设备变砖。但电视盒子和其他贵重设备不一样砖了也就几十块钱的事心理压力没那么大。只要你不是在刷写 eMMC 的过程中突然拔电通常都有救。2.4 U盘引导的常见坑晶晨盒子的外置引导逻辑比较特殊不是插上 U 盘通电就会自动从 U 盘启动。常见触发方式有几种一种是按住机身 AV 孔里的复位键再上电一种是短接主板上的引导触点还有一种是从安卓系统里通过 ADB 命令切换启动模式。不同省份、不同固件的盒子触发方式可能不一样这也是很多人第一次刷 Armbian 卡住最多的地方。我实际遇到的情况是写完 U 盘后插上电屏幕一直停在安卓开机画面完全没进 Armbian。后来换了一个 USB 口再按住复位键上电才正常进入引导。所以不要只试一次就怀疑镜像坏了多换几个 USB 口、多试几次触发方式成功率会高很多。进系统之后的第一件事不是急着装 Docker而是先把系统源、时区和网络调好这些基础不打好后面容器装得再漂亮也白搭。3. Armbian 的安装与首次启动外置引导、写入 eMMC、固定 IP3.1 制作启动盘制作 Armbian 启动盘和制作普通 Linux 安装盘差不多直接用 balenaEtcher 或 Rufus 把镜像写入 U 盘即可。强烈注意这个操作会清空 U 盘上的所有数据如果 U 盘里还有重要文件先拷出来。写入完成后不要急着拔 U 盘。Windows 可能会提示 U 盘无法识别或需要格式化直接忽略。如果系统里有杀毒软件弹出“可疑引导区修改”的警告也要先确认别让安全软件把引导文件隔离了。把 U 盘插到盒子靠近电源口或网口的 USB 口上按前面说的引导方式开机看到类似 Arm Linux 的滚动日志说明 Armbian 已经跑起来了。3.2 首次登录与基础配置Armbian 首次登录默认用户是 root密码在旧版固件里通常是 1234部分新版固件会要求在第一次启动时直接设置新密码。如果登录后系统提示必须修改密码就按提示设一个强密码。这个密码非常重要因为它同时是 SSH 登录密码如果太弱同一局域网里的其他人很容易用暴力枚举猜出来。登录后的基础配置建议按这个顺序更新软件源和系统sudo apt update sudo apt upgrade -y设置时区sudo timedatectl set-timezone Asia/Shanghai创建普通用户日常操作别一直用 root给后续 Docker 操作留一个普通账号更安全启用 SSH如果默认没开用sudo systemctl enable --now ssh第一次做完这些操作后如果网络没问题系统会自动把 eMMC/U 盘的分区扩展到剩余空间。这个过程可能需要一点时间再执行df -h看根分区容量是否变了。如果没变可以重启一次。3.3 从 U 盘系统写入 eMMC确认系统稳定运行后下一步就是把 Armbian 安装到盒子内置 eMMC。进入系统后查看/root目录一般会有install-aml.sh或类似名称的安装脚本。执行前先看清楚脚本提示它会让你选择安装到哪个磁盘这时候一定要选 eMMC而不是当前正在运行的 U 盘。# 在 /root 目录下找安装脚本 ls /root # 如果脚本叫 install-aml.sh执行 sudo /root/install-aml.sh脚本运行过程中会清空 eMMC 上的原有数据如果你已经备份过原厂固件这里可以放心继续。安装完成后系统会提示关机还是重启先把 U 盘拔掉再重新上电。只要能正常进入 Armbian 命令行说明 eMMC 里的系统已经接管了启动流程之后就不用再依赖 U 盘了。这里我不建议手动用dd把镜像写到 eMMC因为盒子分区结构比较特殊手动搞容易把引导分区写乱。用固件自带的安装脚本是最稳的方式它知道该往哪里放 bootloader、哪里放 rootfs。3.4 固定 IP服务器最重要的长寿秘诀电视盒子作为家庭服务器如果 IP 每次都从路由器动态获取下次重启很可能就换了一个地址所有依赖这个 IP 的服务、脚本、SSH 配置都会跟着失效。所以装好系统第一件事建议把有线网口设成固定 IP。用 nmcli 操作最直接。先看一下网卡和连接名nmcli con show找到有线连接名一般是“Wired connection 1”或类似名字然后设置静态地址sudo nmcli con mod Wired connection 1 ipv4.addresses 192.168.1.50/24 sudo nmcli con mod Wired connection 1 ipv4.gateway 192.168.1.1 sudo nmcli con mod Wired connection 1 ipv4.dns 223.5.5.5 sudo nmcli con mod Wired connection 1 ipv4.method manual sudo nmcli con up Wired connection 1IP 地址不要乱填先在路由器后台找一个没被占用的地址最好和你的电脑、手机在同一个网段。设置完后再ip addr确认一下如果地址生效后续访问青龙面板时就可以始终用同一个 IP。4. 把 Docker 装稳镜像源、权限、资源配额一起配好4.1 安装 Docker 的最省心方式Armbian 本身的软件仓库里可能也有 Docker但版本不一定新。为了减少后续问题直接用 Docker 官方安装脚本是比较稳妥的选择。装完之后把当前用户加入 docker 组可以不用每次加 sudo操作起来舒服很多。curl -fsSL https://get.docker.com | sudo sh sudo usermod -aG docker $USER newgrp docker如果官方脚本因为网络不稳定没跑通也不要硬刚直接用 Armbian 仓库自带的 Docker 也可以sudo apt update sudo apt install -y docker.io docker-compose-v2 sudo systemctl enable --now docker无论用哪种方式装完第一件事都是执行docker version和docker compose version确认 Docker 和 Compose 插件都可用。如果提示docker compose命令不存在说明装的是旧版独立 compose可以用docker-compose替代但更建议补齐插件版兼容性更好。4.2 给 Docker 配置镜像加速和日志上限国内网络环境下直接拉取 Docker Hub 镜像经常失败或慢到让人怀疑人生。解决方式不是去开代理而是给 Docker 配置一个可用的镜像加速器。在/etc/docker/daemon.json里写入 registry-mirrors 即可。sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json EOF { registry-mirrors: [ https://docker.m.daocloud.io ], log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } } EOF sudo systemctl restart docker这个配置除了加速镜像下载还干了另一件重要的事——限制容器日志体积。电视盒子的 eMMC 空间不大如果不限制日志大小青龙面板或某个容器疯狂输出日志几天就能把 8GB 磁盘写满导致系统卡死。配置完镜像源后用docker info查看 Registry Mirrors 一栏能看到地址就说明生效了。4.3 内存和存储的规划思路2GB 内存在跑 Docker 时并不充裕所以要提前想好哪些容器值得跑。青龙面板是刚需占用的内存大约在几百 MB 到 1GB 左右如果再跑 Home Assistant、Node-RED、AdGuard Home内存就会比较紧张。我建议先跑青龙观察空闲内存free -h如果还剩 1GB 以上再去考虑加其他容器。存储方面青龙的镜像本身几百 MB数据目录主要存脚本、日志和数据库文件日常占用不会太大。但保险起见给 Docker 做一次定期清理是很有必要的docker system df docker image prune -f docker system prune -fdocker system prune会清理已经停止的容器、未使用的网络和悬空镜像执行时要注意不要删掉还在用的东西。这个命令我在电视盒子上会定期跑一次因为 eMMC 空间太宝贵一旦被垃圾镜像填满系统行为会变得非常诡异。5. 青龙面板的容器化部署Compose 文件怎么写、目录怎么规划5.1 为什么不用 docker run 一条命令搞定青龙面板的部署方式非常成熟很多教程直接给一条docker run命令复制粘贴就能跑起来。但我更建议用 Docker Compose 管理原因很简单Compose 文件本身就是配置文档容器要映射哪些端口、挂载哪些目录、设置哪些环境变量一眼就能看明白。以后换设备、重装系统一个文件就能把青龙容器原样恢复出来不用回忆当初敲过哪条命令。5.2 目录规划和 Compose 配置我习惯把所有容器数据放在/home/用户/containers下面每个容器一个独立目录这样备份和迁移都非常清晰。mkdir -p ~/containers/qinglong/data cd ~/containers/qinglong然后创建docker-compose.ymlservices: qinglong: image: whyour/qinglong:latest container_name: qinglong restart: unless-stopped ports: - 5700:5700 environment: - TZAsia/Shanghai volumes: - ./data:/ql/data这个文件里image用的是青龙官方镜像restart: unless-stopped保证盒子意外重启后容器能自动拉起5700是青龙面板默认端口左边可以改成其他端口比如5701:5700避免和别的服务冲突./data:/ql/data是把容器里的数据目录挂载到宿主机所有配置、脚本、日志都会落在我们创建的 data 目录里备份时只需要打包这一个目录。如果后续感觉青龙占用内存过高可以给它加一个限制mem_limit: 1g cpus: 2注意内存限制设置过低会导致容器被杀掉。建议先不加跑一段时间观察docker stats qinglong再决定。5.3 启动、验证日志、访问面板写好 Compose 文件后执行docker compose up -d第一次启动会自动到 Docker Hub 拉取镜像如果之前镜像加速器配好了这步会很顺利。启动完用docker ps看容器状态再查看日志docker logs -f qinglong日志里出现服务启动成功的提示后在浏览器打开http://盒子IP:5700。第一次访问会进入初始化页面按提示创建管理员账号和密码。这里务必用强密码因为这个面板一旦暴露在局域网里有权限的人可以直接执行容器里的脚本和命令弱口令等于把服务器大门敞开了。5.4 保守初始化别急着开一堆功能青龙面板的功能菜单很多新手容易一进去就乱点。我的建议是初始化阶段只做三件事设好管理员密码、检查系统设置的时区是否为上海、看一眼通知设置里有没有可用的推送渠道。其他高级功能比如环境变量、脚本管理、依赖管理等后面真正用到时再配。通知渠道值得花点时间配上因为青龙最大的价值就是定时任务跑完后把结果推给你。没有通知脚本跑成功还是失败你都得自己打开面板查看自动化体验会大打折扣。常见的通知方式有 Bark、Server酱、Telegram Bot 等按自己的使用习惯选一个即可。填通知 key 时注意别泄露毕竟这类 token 等同账号权限。6. 依赖管理和定时任务先跑通最小闭环再决定要不要拉脚本6.1 青龙面板的脚本和依赖到底是怎么回事很多第一次用青龙的朋友被“依赖管理”四个字吓住了。其实道理很简单青龙面板本身只是定时任务调度器它不提供脚本。脚本是你放进去的 JS 或 Python 程序而脚本运行时需要用到的第三方库就叫依赖。比如一个脚本里写了require(axios)但容器里没有安装 axios脚本一运行就会报模块找不到。所以用青龙面板必须先搞清楚你的脚本需要哪些依赖然后去面板的“依赖管理”里逐个安装。不要照着别人的教程把所有依赖全装一遍那样既浪费内存也可能因为版本冲突把环境搞乱。6.2 Node 和 Python 依赖分别怎么装在青龙面板左侧菜单找到“依赖管理”新建依赖时需要选类型。Node 依赖就是 npm 包Python 依赖就是 pip 包。常见的 Node 依赖包括crypto-js、axios、moment、dotenv、typescript、tslib、types/node、png-js、jsdom等。Python 依赖则常见requests、pycryptodome、beautifulsoup4、urllib3等。安装的时候可以一次批量添加多个依赖青龙会自动调用对应包管理器安装。装完可以在依赖列表里看到安装状态如果某个依赖一直失败先检查网络和镜像配置而不是反复重装。依赖安装失败很大概率是下载源不通调整容器内 npm 或 pip 的源就能解决。给小白的建议是不要一开始就追求“全量依赖”先把自己要跑的脚本放到面板里试跑一次看日志缺什么装什么。这个过程看起来慢实际上最省心因为只有实际运行的依赖才是必要的。6.3 用一分钟验证青龙定时任务链路为了确认青龙容器环境是健康的我通常会在“脚本管理”里新建一个最简单的脚本hello.jsconsole.log(hello from qinglong);保存后去“定时任务”页面新建任务命令填node hello.js定时规则填一个测试用的 cron比如*/5 * * * *意思是每五分钟跑一次。保存后先点“运行”再点“日志”如果状态显示成功日志里输出hello from qinglong就说明脚本管理、依赖环境、定时任务调度全链路都是通的。这个最小闭环非常重要。很多人第一次用青龙直接拉一个几百 KB 的公共脚本跑出一堆报错根本分不清是脚本本身的问题、依赖缺失问题还是定时任务配置问题。先用最小脚本验证基础链路之后排查问题会轻松很多。6.4 拉取公共脚本的尺度能用但要留个心眼青龙面板之所以在家庭服务器圈子里流行和“拉库”机制分不开。通过ql repo或ql raw命令可以直接从代码仓库拉取脚本到面板里并自动创建定时任务。这个机制非常适合批量管理脚本但同时也带来了风险。我个人的原则是不明仓库不拉、过度索取权限的不拉、要求填账号密码或扫码的不拉。青龙脚本经常需要环境变量来提供 Cookie 或 token如果不小心拉了一个带有恶意代码的仓库等于把你的账号凭据直接送给了别人。所以即使你看到某个“全自动任务仓库”很火也建议先 fork 一份自己看看主要代码逻辑再决定要不要用。如果只是自己写一些健康检查、签到提醒、账单统计之类的脚本其实完全够用也不需要冒险。青龙面板的本质是定时任务执行器不是羊毛收割机摆正这个心态才能长期稳定地用下去。7. 长期开机运行散热、日志、备份和故障排查的实战经验7.1 散热和供电电视盒子最容易被忽视的两个物理坑电视盒子的外壳设计本来是按“看几个小时后待机”的场景做的拿来 24 小时跑容器散热压力会明显上升。E900V22C 这类盒子有些是金属外壳有些是塑料外壳长时间满负荷运行时外壳摸起来会很烫。我的处理方式很简单给盒子底部垫几个脚垫保证通风放在家里阴凉、不积灰的位置如果环境特别热花几块钱贴一片散热片也有明显改善。另一个容易被忽视的是供电。直接用机顶盒原来的 5V/2A 电源问题不大但千万不要为了省插座把盒子插在电视的 USB 口上供电。电视关机时 USB 口断电盒子直接异常掉电正在写入的容器数据可能损坏。单独插在墙插上让盒子 7x24 小时保持稳定供电是最基本的保障。7.2 别把 eMMC 当传家宝但也不能乱折腾eMMC 闪存有写入寿命虽然正常使用下没那么容易坏但在这种低功耗盒子上频繁大量写入会让寿命加速缩短。所以有两个操作我特别不建议一是在 eMMC 上挂 swap 文件二是让容器日志无限增长。Armbian 默认的内存压缩机制 zram 已经能解决大部分内存紧张问题不需要再额外塞一个 swap 文件到 eMMC 上。容器日志的问题在前面已经通过daemon.json做了限制青龙面板自己的日志目录也要留意。时间长了可以在宿主机上看一下~/containers/qinglong/data/log占了多少空间如果发现很多无用日志直接在面板里清理定时任务日志即可。7.3 常见故障的排查链路长期运行不可能一次问题都不出下面这个表格是我实际踩过的最常见的几类问题以及对应的排查顺序。症状可能的根因排查与解决青龙面板打不开容器没启动或端口映射异常docker ps -a看容器状态docker logs -f qinglong看日志定时任务一直显示等待cron 时区错误或容器没运行检查系统时区、面板时区、容器 restart 策略脚本报“Cannot find module”依赖没装或装错环境在依赖管理里确认对应 Node/Python 依赖已安装青龙页面能打开但操作很卡内存不足free -h、docker stats查看内存占用考虑停掉多余容器盒子突然断网或重启供电不稳或散热过高检查电源适配器、摸外壳温度、看系统日志dmesg遇到问题不要第一时间怀疑盒子坏了先看容器、再看系统日志、最后才考虑硬件。这条链路能解决 90% 以上的日常故障。7.4 备份青龙数据一晚上就鼓捣出来的备份习惯青龙的面板配置、脚本源码、任务列表都在~/containers/qinglong/data目录里。备份最简单的方式就是打包这个目录然后把打包文件拷到电脑或另一台设备上tar -czf ql-backup-$(date %F).tar.gz ~/containers/qinglong/data如果连青龙面板都进不去了也可以从宿主机直接打包然后在新容器里恢复挂载目录整个服务就能完整还魂。给我最大的安全感不是青龙本身多稳定而是数据目录随时可备份、容器环境随时可重建。我用这台盒子跑青龙到现在最明显的感觉是电视盒子不是越贵越好而是越用得久越值。它没有给我省下什么大钱但帮我把每天要手动处理的零碎事务变成了无人值守的定时任务。如果你手里也有一台 E900V22C 或者其他晶晨盒子别让它继续吃灰了按照这个流程把它变成 24 小时待命的家庭自动化调度器性价比真的比再买一台 NAS 高得多。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。