不少玩家在 NAS(群晖、绿联、飞牛等)上用 Docker 跑安卓容器,做成云手机,内网访问http://NAS内网IP:6080打开 noVNC 网页很顺畅。但离开家里 WiFi,外网就无法连接。
NAS 外网访问 Docker 云手机最大难点:家用宽带大多没有公网 IP;就算拿到公网 IP,直接端口转发裸奔风险极高。
本文提供 3 套可行方案,从简单到进阶,同时讲端口、权限、虚拟化前置条件、高频排错。
端口说明: 6080 → noVNC 网页画面访问 5555 → ADB 调试端口,自动化脚本使用
前置准备(NAS 必须先满足)
- NAS 开启KVM 硬件虚拟化(BIOS / 系统设置内打开,不开启容器安卓会卡顿、黑屏)
- Docker 管理器正常运行,拉取安卓镜像(budtmo/docker-android,或者云手机容器镜像)
- NAS 内网固定 IP,路由器设置静态 IP,防止 IP 重启变动
- 容器启动命令示例(NAS 的 Docker 界面可以直接用,带 VNC 密码)
docker run -d \
--device /dev/kvm \
-p 6080:6080 \
-p 5555:5555 \
-e VNC_PASSWORD="自定义密码" \
-e ANDROID_VERSION=11 \
--name nas-android \
budtmo/docker-android
内网测试:浏览器打开http://NAS内网IP:6080,能正常进入安卓页面,再配置外网。内网不通,外网不可能成功。
方案一:路由器端口转发(需要公网 IP,谨慎使用)
适用:宽带运营商分配公网 IP,光猫改为桥接模式,路由器拨号。
操作步骤
- 路由器后台,添加端口转发规则:外部端口 6080 转发到 NAS 内网 IP:6080;如需 ADB,增加 5555 转发。
- 配置 DDNS 域名(群晖 DDNS、阿里云域名等),动态 IP 自动解析。
- NAS 防火墙放行 6080 端口。
✅优点:延迟低,带宽不受第三方隧道限制。
❌缺点:安全风险大,公网直接暴露端口,会被全网扫描。ADB 5555 端口严禁直接对外映射。
提示:不推荐直接端口转发,优先内网穿透,自带鉴权机制,规避裸端口风险。
方案二:内网穿透(推荐,无公网 IP 首选|FRP)
绝大多数家庭 NAS 没有公网 IP,FRP 是最稳定的自建隧道方案。
原理:一台有公网 IP 的云服务器运行 frps 服务端;NAS 部署 frpc 客户端,建立加密隧道,外网访问云服务器端口,流量转发到 NAS 本地 6080。
frpc 配置(NAS 端 frpc.ini)
[common]
server_addr = 你的云服务器公网IP
server_port = 7000
token = 自定义密钥
[android-vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 6080
remote_port = 16080
- 云服务器部署 frps,放行 7000、16080 端口安全组
- NAS 的 Docker 中部署 frpc 容器,加载配置文件,开机自启
- 外网访问:
http://云服务器公网IP:16080
✅优点:不需要公网 IP;隧道加密,隐藏 NAS 真实内网 IP;性能稳定,适合长期挂机。
❌缺点:需要一台云服务器做中转,需要简单维护。
方案三:一键商用穿透(cpolar / 花生壳,新手快速上手)
不想部署 frp 服务端,直接在 NAS Docker 安装 cpolar、花生壳,图形界面添加映射。
映射参数:
- 协议:HTTP
- 本地地址:NAS 内网 IP,端口 6080
创建隧道,直接生成公网访问域名。
✅优点:开箱即用,无需云服务器,新手最快上手。
❌缺点:免费版带宽、连接数有限,长期大批量使用需要付费。
budtmo/docker-android 和掌界云手机 NAS 部署对比
- budtmo/docker-android:开源基础镜像,NAS 部署需要手动开启 KVM、设置 VNC 密码,外网穿透、反向代理全部自己调试,踩坑点多,适合深度折腾的技术玩家。
- 掌界云手机:Docker 安卓深度封装方案,适配 NAS 环境,内置 Web VNC 鉴权、ADB 权限管控,网络参数预设优化。不用大量调试容器配置,适合多实例挂机,批量部署更省心。
常见故障排查(NAS 部署高频坑)
坑 1:NAS 没有开启 KVM 虚拟化
容器可以启动,但安卓画面卡顿、黑屏、noVNC 连接超时。必须进入 NAS 后台开启硬件虚拟化。
坑 2:noVNC 白屏,能 ping 通端口但页面连不上
noVNC 依赖 Websocket 协议,Nginx 反向代理时必须增加 Websocket 升级配置,否则网页建立连接失败。
Nginx 核心片段:
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
坑 3:容器端口映射顺序写反
-p 宿主机端口:容器端口,顺序颠倒会直接无法访问。
坑 4:ADB 外网连接失败
ADB 原生无密码鉴权,禁止直接公网暴露 5555 端口。如果外网需要 ADB 调试,走 FRP 隧道 + IP 白名单限制。
坑 5:NAS 网络隔离、AP 隔离
路由器开启 AP 隔离,手机连 WiFi 无法访问 NAS 内网 Docker 服务,关闭 AP 隔离即可。
安全重点提醒(非常重要)
- 网页 VNC 务必设置访问密码,不要空密码访问。
- 优先内网穿透,尽量避免路由器直接端口转发把容器暴露公网。
- ADB 5555 端口,尽量只在内网使用,减少被恶意接管风险。
- 容器环境仅限个人技术研究,不要用于违规场景,遵守各类 APP 用户协议。
总结
NAS 上 Docker 云手机外网访问,优先判断你是否有公网 IP:
✅无公网 IP:首选 FRP 自建隧道,其次 cpolar / 花生壳一键穿透。
✅有公网 IP:可以端口转发,但一定要配置 VNC 密码,不要开放 ADB 公网端口。
如果不想反复调试虚拟化、网络、鉴权等各类问题,可以选择封装好的 Docker 安卓自建方案。



