前段时间遇到一个小问题,后来发现这是个挺常见的坑,顺手整理一篇笔记。
前言
前几天整理极空间的时候,我突然冒出一个挺不务正业的念头:
这台机器天天开着,Docker 也能跑,除了存文件、备份照片,还能不能干点更好玩的事?
我第一个想到的,就是小时候玩得最多的《超级马里奥》。
本来只是想随手试一下,没想到镜像拉下来、容器跑起来以后,浏览器里真的出现了那个熟悉的游戏画面。那一刻的感觉挺奇妙——平时摆在角落里的 NAS,突然像被塞进了一台小时候的游戏机。
我后来又顺手把这个页面通过 cpolar 带到了外网。这样一来,不一定非得坐在家里的电脑前,公司空闲时、出门坐地铁时,手机浏览器里也能打开。
这篇就是我把这次折腾过程重新整理了一遍。
我这次的想法很简单:
先让马里奥在极空间里真正跑起来,再想办法把这个页面从家里的局域网带出去。
不是为了把极空间包装成什么“全能游戏主机”,就是想看看这台 NAS 还能被我折腾出什么新玩法。
1. 先 SSH 进极空间
第一步,我先把极空间的 SSH 服务打开。
之后在 Windows PowerShell 或 Mac Terminal 里连接进去:
ssh root@IP
如果还没有配置过 SSH,可以参考 cpolar 官网对应的极空间 SSH 教程。
这一步对我来说没什么花活,目的就是拿到终端,后面 Docker 的所有操作都从这里做。
2. 先确认 Docker 是真的可用
SSH 连进去以后,我没有马上拉镜像,而是先看 Docker 状态。
我用的是下面这组命令:
docker -v
systemctl status -v
这里的命令我按当时的操作记录原样保留,没有自行修改。
确认 Docker 能正常用以后,我才继续下一步。
我一直算是喜欢这种顺序:环境没确认之前,不往后堆东西。
3. 把马里奥跑起来
先拉取镜像:
docker pull registry.cn-guangzhou.aliyuncs.com/os_cmty/os_cmty:mario
之后运行容器:
docker run -d -p 5000:8080 --name mario --restart=always registry.cn-guangzhou.aliyuncs.com/os_cmty/os_cmty:mario
这条命令里,我当时映射的是:
5000:8080
接着再看容器状态:
docker ps -a
看到容器正常运行以后,我就去浏览器里试页面。
这里有一个我在整理过程里专门保留的细节:
前面的 Docker 命令映射的是 5000:8080,但后面的访问记录写的是:
http://极空间IP:13378
这两个端口在记录里并不一致。我这次不会替自己“猜一个正确答案”再偷偷改掉,所以两个值都保留;后面 cpolar 的本地地址仍然按当时配置记录用 5000。
页面真正打开以后,熟悉的马里奥界面就出来了。
我当时最意外的不是“网页里有个游戏”,而是操作起来确实有小时候那种感觉,连那些熟悉的玩法细节也还在。
说实话,折腾到这一步已经达到我最初的目的了:
极空间不只是把文件存起来,它真的能顺手跑一个我小时候天天玩的游戏。
4. 本地能玩以后,我又想把它带出去
本地页面已经能打开以后,我很自然就冒出了第二个念头:
既然它已经在极空间上跑着,为什么非得回家以后才能打开?
这不是我后来为了文章硬加的场景,而是这次折腾里我确实继续做下去的原因。
我平时极空间本来就是长期开机的。如果页面一直在机器上跑着,那我在公司空闲时,或者坐地铁的时候,掏出手机直接打开,不是更有意思吗?
所以这一步我没有再动马里奥容器本身,而是单独处理“怎么从外面访问”。
也就是说,这两层我分得很开:
- Docker / 马里奥容器:负责游戏本身;
- cpolar:只负责把本地 Web 页面带到公网。
5. 安装 cpolar
我先在极空间里安装 cpolar:
sudo curl https://get.cpolar.sh | sh
安装完成以后,查看服务状态:
sudo systemctl status cpolar
服务正常以后,通过极空间主机 IP + 9200 进入 cpolar Web 管理界面。
当时页面里写的是:
http://ip:9200
Markdown 链接目标则是:
http://localhost:9200/
这两个写法本身不一致,我也继续按原记录保留。
登录以后,就可以开始给马里奥页面建隧道。
6. 先用随机公网地址试通
我在【隧道管理 → 创建隧道】里建了一条新隧道。
当时配置的是:
- 隧道名称:
mali - 协议:
http - 本地地址:
5000 - 域名类型:随机域名
- 地区:
China Top
这里也正好能看出为什么我前面没有擅自把 13378 改成“正确端口”——真正做公网访问时,我用的仍然是 5000。
创建完成后,我去在线隧道列表里拿公网地址。
之后换到其他设备上测试。
页面能正常打开。
这一刻比本地打开页面更有意思,因为它证明这台放在家里的极空间,已经不只是“家里的游戏页面”了。
我确实可以在其他网络里打开它。
7. 随机地址能玩,再换固定地址
随机域名已经能用,但如果准备长期玩,每次记新地址还是有点烦。
所以我又给它保留了一个固定二级子域名。
地区选择:
china Top
我当时用的二级子域名是:
malii
然后回到 cpolar Web UI,在隧道列表里找到对应隧道,点击编辑。
把域名类型改成二级子域名:
- 域名类型:二级子域名
Sub Domain:填写保留成功的二级子域名- 地区:
China Top
再打开在线隧道列表,可以看到地址已经从随机形式切换成固定二级子域名。
最后我再用固定公网地址打开一次页面。
可以正常进入游戏页面以后,这次折腾才算真正结束。
总结
这次本来只是整理极空间时冒出来的一个念头:
NAS 能不能顺手跑个马里奥?
结果我一路从 Docker 拉镜像,真的把页面跑了起来;又觉得只在家里玩不过瘾,于是继续把 5000 端口通过 cpolar 带到了公网,最后还给它配了固定地址。
整条过程说实话很简单:
SSH → Docker → 马里奥容器 → 本地页面 → cpolar → 随机公网地址 → malii 固定二级子域名。
这篇最重要的也不是“极空间还能跑游戏”这个噱头,而是我这次真的重新认识了这台机器。
以前我更多把它当存储设备。
这次以后,我更愿意把它理解成一台一直在线、还能继续被我折腾的小服务器。
只要 Docker 里有合适的东西,我总会忍不住想试试:
这个它还能不能跑?
至于原记录里“公司摸鱼、地铁继续玩、进度不丢”这些体验描述,我保留了这次远程访问的真实用方向,但没有继续扩大成所有网络、所有设备下都完全一致的性能结论。
还有一个技术差异也没有隐藏:
- 容器命令映射的是
5000:8080 - 后面浏览器访问记录写的是
极空间IP:13378 - cpolar 本地地址则使用
5000
对我来说,这篇真正成立的经验就是:
先把一个好玩的念头在本地跑起来,跑通以后,再想办法把它带到自己真正会使用的地方。
今天的内容大概就这些,实际开发中大家还会遇到更多细节,欢迎留言分享自己的经验。
评论 (0)
暂无评论