云计算百科
云计算领域专业知识百科平台

想在 NAS 上玩推箱子?用 Docker 部署 Sokoban,手机也能远程打开

想在 NAS 上玩推箱子?用 Docker 部署 Sokoban,手机也能远程打开

前言

推箱子这种游戏有个很奇怪的地方:规则简单到几句话就能讲完,可真玩起来又很容易卡在某一关半天。小时候在文曲星、小霸王学习机上见过它的人,大概都对那种“差一步就通关”的感觉不陌生。现在再玩,我反而觉得它很适合放到 NAS 上:不用专门装客户端,也不用准备复杂运行环境,浏览器打开就能来一局,电脑、平板、手机都能用同一个入口。对一台本来就长期在线的 NAS 来说,这种小服务没必要搞得太重,能稳定跑、入口好记、想玩时随手打开,比“部署得多高级”更重要。

这次我直接在极空间上通过 SSH 和 Docker Compose 部署 Sokoban,使用 wbsu2003/sokoban 镜像,把容器 80 端口映射到宿主机 7180,先确认 http://极空间IP:7180 能正常打开游戏。局域网里玩通以后,再安装 cpolar,把 7180 页面提供到公网,先验证随机地址,最后配置固定二级子域名 sokoban。这样在家里用电脑打开,在外面用手机或平板访问,走的都是同一套 Web 页面。整条链我更关心的是部署够不够简单、浏览器能不能直接玩、远程访问是不是清楚,而不是把一个轻量小游戏包装成“摸鱼神器”。

image-20251203160900341

1. 先在极空间上准备 SSH 和 Docker

这次用 Docker 跑网页版推箱子,所以先确认极空间已经开启 SSH,同时 Docker 环境可用。

1.1 SSH 连接极空间

在极空间里开启 SSH 服务后,通过 Windows PowerShell 或 Mac Terminal 登录。

当前命令是:

ssh root@IP

如果还没有配置 SSH,可以先把极空间的 SSH 功能开启好。

957c00e3b3f0ce8aa95df96aa41b8715

1.2 检查 Docker

登录以后执行:

docker -v
systemctl status -v

当前记录里同时使用了 docker -v 和 systemctl status -v。

image-20251017103712618

这里先确认 Docker 可以正常使用,再继续创建 Sokoban 目录。

2. 创建 Sokoban 安装目录

执行:

sudo mkdir -p /docker/sokoban
cd /docker/sokoban

image-20251203161903532

当前目录使用:

/docker/sokoban

后面的 Compose 文件就在这里创建。

3. 创建 docker-compose.yml

在当前目录新建 docker-compose.yml,配置内容如下:

version: '3'
services:
sokoban:
image: wbsu2003/sokoban
container_name: sokoban
restart: unless-stopped
ports:
7180:80

这份配置很简单,核心只有几项:

  • 镜像:wbsu2003/sokoban
  • 容器名:sokoban
  • 端口:7180:80
  • 重启策略:unless-stopped

也就是说,后面浏览器访问的是宿主机上的:

7180

端口。

4. 启动 Sokoban

执行:

docker-compose up -d

f5d9b82d3c407b8a1b1edfd036b0f4cd

部署完成以后,在浏览器访问:

http://极空间IP:7180

8ba821fd2453994ada4e9337aaae88e7

页面能够正常打开以后,Sokoban 的本地服务就已经跑起来。

这一步真正验证的是:

极空间 Docker → Sokoban 容器 → 7180:80 → 浏览器打开游戏页面。

到这里,如果只是想在家里电脑、平板上玩,其实已经够用了。

5. 为什么还要做公网访问?

局域网里的 http://极空间IP:7180 只能在当前家庭网络中使用。

如果想从手机流量、公司电脑或者外部网络打开这个页面,就需要再增加一个公网入口。

这里 cpolar 的职责很明确:

只把极空间上 Sokoban 的 7180 Web 页面提供到公网。

游戏本身仍然由 Sokoban 容器运行,cpolar 不参与游戏逻辑,也不负责关卡内容。

6. 安装 cpolar

执行当前安装命令:

sudo curl https://get.cpolar.sh | sh

e464b045413a024674a93ea472511b0f

安装完成以后检查服务状态:

sudo systemctl status cpolar

aa03713b56d9eef12a4da6b99d2e46ac

服务正常以后,通过主机 IP + 9200 打开 cpolar Web 管理页面。

当前页面同时写到:

http://ip:9200

以及链接目标:

http://localhost:9200/

实际访问时,以当前环境真正能够打开的管理地址为准。

3af79ad708cc47c5bbea0b63c2c7230d

7. 给 Sokoban 创建随机公网地址

进入【隧道管理 → 创建隧道】。

当前配置为:

  • 隧道名称:sokoban
  • 协议:http
  • 本地地址:7180
  • 域名类型:随机域名
  • 地区:China Top

image-20251203163623941

创建成功以后,进入在线隧道列表查看生成的公网地址。

image-20251203163706984

从其他电脑或移动设备打开。

image-20251203163726562

页面能够正常访问。

这一层验证的是:

Sokoban 7180 → cpolar 随机公网地址 → 外部浏览器。

8. 长期使用再配置固定二级子域名

随机地址适合先验证公网访问。

如果希望以后一直用同一个地址打开游戏,再继续配置固定二级子域名。

进入预留页面。

image-20250918151358733

选择保留二级子域名。

当前记录为:

  • 地区:china Top
  • 二级子域名:sokoban

image-20251203170146643

然后回到【隧道管理 → 隧道列表】,找到对应隧道并点击编辑。

image-20251203170206908

修改为:

  • 域名类型:二级子域名
  • Sub Domain:填写已经保留的二级子域名
  • 地区:China Top

点击更新。

image-20251203170245949

更新以后,在线隧道列表中的随机地址会切换成固定二级子域名形式。

image-20251203170314873

最后再从其他设备访问。

image-20251203170332581

页面能够正常打开。

总结

这套 Sokoban 部署对我来说,最大的优点不是“几分钟做出一个摸鱼神器”,而是它足够简单:一个 Docker 容器、一个 7180 端口,打开浏览器就能玩。

这次实际跑通的主线是:

极空间 SSH → Docker → /docker/sokoban → wbsu2003/sokoban → 7180:80 → 本地浏览器访问 → cpolar → 随机公网 → 固定二级子域名 sokoban。

几个边界也很清楚:

  • Sokoban 负责游戏本身;
  • Docker 负责运行容器;
  • cpolar 只负责把 7180 Web 页面提供到公网;
  • 随机公网地址适合先测试,固定二级子域名适合长期使用;
  • 这篇实际验证的是网页能打开、游戏能玩以及外部访问链路,不需要再给一个简单小游戏堆太多“极客神器”的包装。

如果 NAS 本来就长期在线,这类小游戏很适合顺手部署几个。不是为了把服务器变成游戏平台,而是偶尔想玩的时候,知道打开哪个地址就行。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 想在 NAS 上玩推箱子?用 Docker 部署 Sokoban,手机也能远程打开
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!