Emulatorjs Docker

EmulatorJs与Docker结合的技术方案是一种通过容器化部署实现Web端复古游戏模拟器的解决方案,其核心是通过Docker容器快速搭建EmulatorJs模拟器环境,支持多平台游戏运行及高效管理。

不想搭建可加群,使用群主服务器

由于维护成本须赞助5元,即可使用服务器,感谢您的理解与支持,付款后截图+Q群1039905535
未标题-1-1743148947130

镜像源网站

输入网址或者点击此处跳转linuxserver/emulatorjs(无法访问须开魔法)

https://hub.docker.com/r/linuxserver/emulatorjs

image-1742890638253

docker 安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

fjava_VdMbvanrci

启动docker并设置开机自启

sudo systemctl start docker
sudo systemctl enable docker

更换docker镜像源

由于镜像源服务器在国外,国内服务器访问可能会非常慢或者失败,所以在拉取镜像前最好换源

nano /etc/docker/daemon.json

输入后会打开一个空白页面
image
接着将下面的内容粘贴至文件里

{
  "registry-mirrors": [
    "https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com",
    "https://mirror.ccs.tencentyun.com",
    "https://0dj0t5fb.mirror.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://6kx4zyno.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "https://akchsmlh.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn", 
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

image-1742878138523
接着按Ctrl+X
image-1742878232256
弹出提示,按y,再回车确定
image-1742878285063
image-1742878302190
image-1742878334132

确认系统内核获取相关镜像(非必要命令)

输入命令获取系统内核,特定内核需要拉取专门的镜像文件

uname -m

这里展示两个
image-1742878606914
image-1742878641953

输出架构
i386, i686i386
x86_64amd64
arm, armelarm_garbage
armv7l, armhfarmv7
aarch64, armv8larm64
mipsmips
mips64mips64

大部分情况下都是x86架构的,对比标签使用即可
image-1742879371276
image-1742879237971
若是如上图输出armv7l,通过百度可得知armv7 为32位
image-1742879630468
接下来再镜像网站搜索arm32即可找到对应镜像
image-1742880606280

拉取镜像并部署

首先创建两个文件夹,用于存放容器后台用户数据(存档之类)和游戏room

mkdir -p /up/emulatorjs/config && mkdir /up/emulatorjs/data

image-1742881241822
为了方便后续容器操作我们可以修改文件夹权限

sudo chown -R 1111:1111 /up

image-1742881473710
准备工作完毕,输入以下命令

docker run -d --name emulatorjs -e PUID=1111 -e PGID=1111 -e TZ=Asia/Shanghai -p 5555:80 -p 3000:3000 -v /up/emulatorjs/config:/config -v /up/emulatorjs/data:/data linuxserver/emulatorjs:1.9.2

参数说明:

-d: 后台运行容器
--name: 为容器指定一个名称
-e PUID -e PGID:指定用户和用户组解决可能会发生的权限问题
-e TZ:修改时区
-p: 端口映射,格式为 主机(宿主)端口:容器端口 
-v: 工作目录映射。形式为:-v 宿主机路径:/config,-v 宿主机路径:/data,后者不能修改。

image-1742882203544
完成后输入,确定容器是否运行,可以看到容器已正常运行

docker ps

image-1742882331992

如何使用

后台

首先访问后台,浏览器输入:本地ip:3000(云服务器输入ipv4地址:3000,若无法访则还需在安全组中添加放行端口)进入后台管理面板,进入后点击图2 Download,下载必备文件
image-1742882616595
image-1742882820432
image-1742882936942
出现下图Downloaded All Files,表示下载完毕
image-1742883106221
刷新网页,如下图所示
image-1742883615567

File Management(room文件上传)

image-1742883925890
选择你需要上传游戏的模拟器,选择文件,打开就上传到服务器端了
image-1742884057109
image-1742884252439
image-1742884324424
image-1742884383526
dsaa4
然后点击Rom Management,这里以gba为例,点击Scan
image-1742885866829
image-1742885933425
image-1742886043953
image-1742886157569
image-1742886252502
最后显示如图表示成功,每次上传新游戏都须如此操作
image-1742886279045

Profile Management(用户管理)

创建用户
image-1742886695357
image-1742886716365
打开我们会发现什么都没有,因为还没游玩上传存档
image-1742886773513
正常上传后会是
image-1742886914964
删除用户(谨慎操作,以防数据丢失),选择用户后delete即可删除
image-1742887001558

前端正式使用

后端准备完毕可以进行访问游玩了,浏览器输入:本地ip:5555(云服务器输入ipv4地址:5555,若无法访则还需在安全组中添加放行端口)
image-1742887411296
1
先登录用户输入我们之前创建好的用户名与密码
image-1742887524799
image-1742887548928
因为还没存过档所以没有文件内容,我去拿一个存过档的来举例
未标题-1-1742894911464
怎么存档呢,我们打开任意一个游戏,进入游戏后按下F1
image-1742895011294
image-1742895240594

操作更改,按z键返回(x键确定)如图找到Input,依次打开即可修改按键映射,有手柄更推荐用手柄玩,也是完美支持的
image-1742888493310
image-1742888562587
image-1742888638224
image-1742888894622image-1742888917313image-1742888937560

游戏展示

PC

image-1742889163068
image-1742889233595
image-1742889302739
image-1742889343910
image-1742889491625

安卓

9f908918865c41a18e4989575fb89d5

外网访问

云服务器ipv4+端口直接外网访问即可
本地服务器,无ipv4地址可考虑内网穿透实现外网访问,如图内网穿透访问
image-1742947413946
若须域名访问,国内推荐使用云服务器(国内云服务器,域名须备案)

如果这篇文章对你有启发,欢迎请我喝杯咖啡~ 你的支持会让我有动力分享更多优质内容 (๑•̀ㅂ•́)و✧

未标题-1-1743148947130