当前位置: 首页 > news >正文

硬盘里那个仙剑的文件夹,你多久没打开过了?DOCKER部署DOS怀旧模拟器,带你秒回童年!

前言

大概每个 80 后、90 后玩家的硬盘深处,都有一个仙剑的文件夹。

我也不例外。当年第一次通关,在苏州城里听到《仙剑奇侠传》的音乐响起来,整个人愣在屏幕前——那时候还不懂什么叫叙事,什么叫情感冲击,只觉得李逍遥和林月如最后没能在一起这件事,堵得慌。后来有了自己的电脑,第一件事就是把这个文件夹从老机器里拷出来,一路带着走,DOSBox 模拟器换了好几个版本,操作系统从 XP 升到 Win10,那个文件夹始终在。

但实话实说——最近三年,我一次都没打开过。

不是不想,是懒得折腾。DOSBox 要配、要调音效、要挂载镜像,每次想起来要玩,光是回忆怎么进游戏就要花十分钟。上周末翻到这个仓库 chinese-dos-games,发现有人把 40 多款经典 DOS 游戏做成了 Docker 镜像,在 NAS 上跑起来之后,浏览器直接打开就能玩,连仙剑都是完整版。

这大概是我见过最没有门槛的怀旧方案了。

1.Docker部署DOS

我本地是在linux上部署,大家不管什么系统只要有docker步骤都大同小异。

首先切换到root用户,然后输入以下命令创建安装目录:

sudo-imkdir-p/root/data/docker_data/gamescd/root/data/docker_data/games

创建部署脚本:

vimdocker-compose.yml

这边有两种搭建方式,因为36G的游戏做成docker的镜像太大了,所以我只是将40多个经典的DOS游戏封装到了docker的镜像里面,所以你的服务器如果硬盘不够大,可以直接用默认的方式安装。

安装40多个经典游戏:

version:'3.3'services:dosgame-web-docker:container_name:dosgameports:-'8090:262'#8090可以改成其他服务器没被占用的端口# volumes:# - '/root/data/docker_data/games/chinese-dos-games:/app/static/games'image:'oldiy/dosgame-web-docker:latest'

安装1989款游戏:

version:'3.3'services:dosgame-web-docker:container_name:dosgameports:-'8090:262'#8090可以改成其他服务器没被占用的端口volumes:-'/root/data/docker_data/games/chinese-dos-games:/app/static/games'image:'oldiy/dosgame-web-docker:latest'

在games目录下部署chinese-dos-games:

cd/root/data/docker_data/games/gitclone https://github.com/rwv/chinese-dos-games.git

若显示如下错误,证明还没有安装git,安装即可:

yum update-y

yuminstall-ygit

继续部署:

部署完成后,继续下面操作:

python3 download_data.py

若没有Python可以执行:

yum update-yyuminstall-ypython3

安装完以后统计bin目录中“普通文件”的数量,正常是1898(安装40多款经典游戏的):

ls-l/root/data/docker_data/games/chinese-dos-games/bin|grep"^-"|wc-l

继续切换到这个目录,启动并运行一个由 docker-compose.yml 定义的多容器应用:

cd/root/data/docker_data/gamesdocker-composeup-d

若是没有docker-compose,可以用下列命令安装:

sudocurl-L"https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-composesudochmod+x /usr/local/bin/docker-composedocker-compose--version

接下来使用linux的ip+8090端口就可以在Windows浏览器打开啦!

然后就可以玩专属于我们的青春回忆啦!

在复古计算环境中,DOS 系统虽已远离主流,但通过 DOSBox 等模拟器仍可运行经典游戏或程序。结合cpolar这类内网穿透工具,可以将本地运行的 DOS 应用暴露到公网,实现远程访问。例如,在本地启动一个 DOS 游戏网页界面后,可生成一个公网 URL,让他人通过浏览器实时体验“仙剑奇侠传”等怀旧游戏,无需复杂配置,实现“复古+互联”的趣味结合。

接下来跟我一起部署cpolar让你的朋友们也玩起来吧!

2.安装cpolar实现随时随地开发

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudocurlhttps://get.cpolar.sh|sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudosystemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://192.168.42.100:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

4.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:dos,注意不要与已有的隧道名称重复

  • 协议:http

  • 本地地址:8090

  • 域名类型:随机域名

  • 地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

4.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我这里演示使用的是doss,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道plex,点击右侧的编辑

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的DOS页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

这样,朋友也可以通过我们的链接来访问啦,是不是很方便呢~

总结

搭好之后,我花了一个晚上把仙剑从头又打了一遍。UI 是 DOSBox 的复古界面,网速不快但足够流畅,偶尔会卡一下,但不影响整体体验。

最后打赢了赵灵儿的母亲那一战——当年第一次打过去的时候激动得不行,现在再打一次,感觉完全不同。游戏还是那个游戏,但打游戏的这个人在二十多年里已经换了好几套装备、换了好几个身份。当年那个在纸上演算 IRQ 和 DMA 参数来配声卡的下午,现在想起来像是上辈子的事。

DOS 游戏没有丢,它只是被重新打包,跑在今天的服务器上,等着某个人有空的时候打开它。

怀旧这件事,有时候不需要多高的还原度,只需要一个能让你回到那个下午的入口就够了。

http://www.jsqmd.com/news/635062/

相关文章:

  • 聚焦实用需求,2026几个靠谱的健康一体机厂家推荐 - 品牌2026
  • AI 赋能 JS 逆向MCP+Skill+autoDecoder 全自动化落地加密自动Ai逆向
  • Modbus TCP vs RTU怎么选?从项目实战角度聊聊我的踩坑经验
  • 从降重到排版,这2款神器承包了我的整篇毕业论文
  • 手把手教你用C++11原子操作实现无锁队列(附compare_exchange_weak实战代码)
  • Verilog 进阶学习指南:从入门到精通的必备书单(附资源)
  • 数学周刊第15期(2026年04月07日-04月12日)
  • 2026年贵州智慧停车+安防一体化解决方案深度横评|鼎鸿盛官方联系电话与避坑指南 - 精选优质企业推荐榜
  • 别再复制粘贴了!手把手教你为STM32F103标准库工程添加printf串口打印(Keil MDK环境)
  • uni-app中H5页面通过web-view跳转小程序的完整解决方案
  • Niushop开源商城漏洞实战:从文件上传到CSRF攻击全解析
  • 别再手动调参了!用Accelerate+DeepSpeed配置文件,5分钟搞定多机多卡训练环境
  • 、SEATA分布式事务——XA模式磺
  • 一篇文章看懂MySQL数据库(中)
  • RTF文件中的多语言编码实战:从ANSI到Unicode的完整解析
  • 微软开源最前沿语音 AI!三合一家族:60分钟语音转文字 / 90分钟多角色合成 / 实时流式说话
  • 2026年贵州智慧停车与智能安防一站式解决方案深度指南|鼎鸿盛官方联系方式 - 精选优质企业推荐榜
  • Springboot 实现多数据源(PostgreSQL 和 SQL Server)连接匚
  • OpenCV 疲劳检测实战:用 dlib 计算眼睛纵横比 (EAR)
  • Gemini 3.1 国内使用教程(2026 最新实测)|无需复杂环境,稳定可用方案
  • IOFILE结构体的介绍与House of orange瓤
  • Python游戏音效实战:用Pygame混音器实现背景音乐循环播放(附常见问题解决)
  • 解决Ceres安装后absei缺失问题的完整指南
  • STC15单片机定时器/计数器:16位自动重装载模式实战解析
  • Python电子书处理终极指南:如何高效使用EbookLib库进行EPUB编程
  • 宝塔面板开机自启踩坑记:从手动重启到Systemd自动化,我总结了这几点经验
  • 精选五大优质 18 导心电图机厂家推荐,适配多场景医疗需求 - 品牌2026
  • 【实战篇】【设计指南】从波特图到带宽优化:放大电路频率响应的工程实践
  • Campus-Imaotai:基于Spring Boot的茅台自动化预约系统架构深度解析与实战部署指南
  • 如何免费解锁AI编程助手:三步终极指南