手把手教程:使用开源项目在NAS上搭建私人H5棋牌游戏室

厌倦了公共棋牌平台的种种限制?想和朋友们在一个完全私密、公平、无后台干预的环境里畅玩?今天,我就带你一步步在自家的NAS上,部署一个功能完整的H5棋牌游戏平台。这个开源项目基于商用级架构,支持斗地主、麻将等多种游戏,无需安装任何客户端,在手机、电脑、平板的浏览器上打开就能玩,真正实现“私人游戏室”的自由。

给新手的核心建议:如果你是第一次尝试这类部署,请务必严格按照教程的步骤操作。先不要急着修改复杂的配置或配置外网访问,成功的第一步,是确保在内网环境下一切运行正常。稳扎稳打,我们开始吧。
第一步:获取与准备项目文件
- 下载源码:首先,访问该项目的GitHub仓库:
https://github.com/openinggame/qp,下载整个项目的ZIP压缩包。

- 创建项目目录:在你的NAS上,找一个合适的位置(比如Docker或共享文件夹下),新建一个名为
openinggame的文件夹。将下载好的ZIP文件放入其中。

- 解压与精简:解压ZIP文件。解压后你会看到很多文件和文件夹。为了部署清晰,我们只需要保留三个核心文件:
docker-compose.yml、mongo_data.tar.gz和mysql.tar.gz。其他文件可以暂时移走或删除,避免干扰。

- 解压数据库文件:分别解压
mongo_data.tar.gz和mysql.tar.gz这两个压缩包。解压后,你的openinggame文件夹结构应该大致如下,包含了数据库的预置数据目录。

* **`mongo_data` 目录**:里面存放的是MongoDB数据库的初始数据文件。

* **`mysql` 目录**:里面存放的是MySQL数据库的初始数据文件。

至此,文件准备工作就完成了。
第二步:通过Docker Compose部署
现在进入核心的部署环节。我们将使用Docker Compose来一键启动所有服务。
- 创建Docker项目/堆栈:打开你NAS上的Docker管理工具(如群晖的Docker套件、Portainer等)。找到创建“Stack”(堆栈)或“项目”的选项。
- 配置项目:
- 名称:可以命名为
openinggame。 - 路径:选择我们刚才准备好的
openinggame文件夹作为工作目录。 - 配置文件:将文件夹内的
docker-compose.yml文件内容粘贴或上传到配置编辑器中。
- 名称:可以命名为

-
理解并修改配置:原版
docker-compose.yml配置较全,但为了简化,我推荐使用下面这个调整过的版本。它主要做了两点优化:一是将数据卷挂载改为相对路径 (./),更易管理;二是移除了需要手动创建的外部网络,让Docker自动处理。你唯一需要修改的地方,就是下面配置中
web服务下的API_HOST环境变量。请将其中的192.168.31.90替换成你NAS在局域网内的实际IP地址。
services:
web:
container_name: web0
image: openinggame/web:v1
ports:
- "8080:80" # 将NAS的8080端口映射到容器的80端口
environment:
- API_HOST=192.168.31.90 # 【关键】请修改为你的NAS内网IP
depends_on:
- server
server:
container_name: server0
image: openinggame/server:v1
ports:
- "81:81"
depends_on:
- etcd
- kafka
- redis1
- mysql
- mongodb
mysql:
image: mysql:8.0.23
container_name: mysql0
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlconf:/etc/mysql/conf.d
redis0:
container_name: redis0
image: redis:latest
volumes:
- ./redisdata0:/data
command: redis-server --requirepass 123456
depends_on:
- etcd
redis1:
container_name: redis1
image: redis:latest
volumes:
- ./redisdata1:/data
command: redis-server --requirepass 123456
depends_on:
- etcd
redis2:
container_name: redis2
image: redis:latest
volumes:
- ./redisdata2:/data
command: redis-server --requirepass 123456
depends_on:
- mysql
- etcd
- redis1
zookeeper:
container_name: zookeeper
image: wurstmeister/zookeeper
restart: always
kafka:
container_name: kafka0
image: wurstmeister/kafka:2.12-2.3.0
environment:
- KAFKA_BROKER_ID=0
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka0:9092
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: always
depends_on:
- zookeeper
etcd:
image: quay.io/coreos/etcd:v3.2.32
container_name: etcd0
environment:
ETCDCTL_API: 3
command:
- etcd
- --name=etcd0
- --data-dir=/data/etcd-data
- --advertise-client-urls=http://etcd0:2379
- --listen-client-urls=http://0.0.0.0:2379
restart: always
volumes:
- ./etcd0_data:/etcd-data
mongodb:
container_name: mongodb0
image: mongo:4.4.4
restart: always
volumes:
- ./mongo_data:/data/db
- ./mongodb_logs:/data/logs
command: --auth
depends_on:
- etcd
-
启动项目:保存配置,然后启动这个堆栈。Docker会开始拉取镜像并创建容器。整个过程可能需要几分钟,取决于你的网络速度。
-
检查状态:启动完成后,在Docker容器列表中,你应该能看到一系列容器(
web0,server0,mysql0,redis0/1/2,mongodb0,etcd0,kafka0,zookeeper)的状态都变为“Up”(运行中)。

恭喜!后端服务已经部署成功了。
第三步:登录与开始游戏
- 访问游戏大厅:打开电脑或手机上的浏览器,在地址栏输入:
http://你的NAS内网IP:8080(例如http://192.168.31.90:8080)。

- 耐心等待初始化:第一次访问时,后台服务可能还在最终初始化,页面可能会显示“不可用”或加载较慢。请等待1-2分钟,或尝试在Docker中重启整个堆栈,然后刷新页面。

- 游客登录:页面正常加载后,点击首页的“游客登录”按钮。

- 处理弹窗并注册:随后可能会弹出一个模拟的广告窗口。注意:不要关闭这个弹窗,直接点击广告图下方的“注册”按钮。

- 完成账号绑定:在注册页面,需要填写一个11位手机号(格式正确即可,无需真实号码,通常以1开头)、昵称和密码等信息,完成账号创建。

- 进入游戏世界:注册成功后,你就正式进入了游戏大厅。这里提供了丰富的游戏选择,如斗地主、麻将、扑克等经典棋牌游戏。

第四步:游戏体验与高级功能
- 开始游戏:以“斗地主”为例,你可以根据想要的底分选择不同的游戏分区进入。

- 游戏界面:游戏体验与主流平台相似,支持与AI对战,有出牌提示,也具备聊天功能。值得一提的是,AI的智能程度不低,能提供有挑战性的对局。

- 关于积分:此开源版本缺少后台管理系统。如果你的游戏积分输光了,目前可能需要重新注册一个账号来获得初始积分。

- 创建私人房间:想和朋友单独玩?没问题。在大厅找到“开房”或“创建房间”选项,设置好房间密码和规则,然后将房间号分享给朋友即可。

- 跨设备畅玩:这是本项目的最大亮点之一。你可以在手机上用浏览器访问同一个NAS地址(
http://NAS-IP:8080),无需下载App,就能获得完整的游戏体验,操作流畅。


- 资源占用观察:由于同时运行了Web服务器、游戏逻辑服务器、多个数据库和中间件,该项目对内存的占用会比较高。CPU在空闲时则相对平稳。部署前请确保你的NAS有足够的内存资源(建议8GB或以上)。

总结与评价
总的来说,这个H5棋牌游戏开源项目为我们提供了一个非常有趣的私人娱乐解决方案。虽然项目已有一段时间未更新,但其核心功能稳定、游戏种类丰富。
优势:
- 完全私有化:数据掌握在自己手中,无平台监控。
- 跨平台免安装:纯网页操作,手机、电脑、平板即开即玩,极其方便。
- 功能完整:支持多人游戏、私人房间、AI对战等主流功能。
不足:
- 缺乏管理后台:无法重置积分、管理用户,积分耗尽后体验会受影响。
- 部署复杂度中等:需要启动的Docker服务较多,对新手有一定挑战。
- 资源消耗较大:对NAS的内存有一定要求。
综合评分:
- 推荐指数:⭐⭐⭐☆(非常适合寻求私密、定制化游戏体验的玩家和小团体)
- 使用体验:⭐⭐⭐(网页访问的便利性加分,但管理功能缺失扣分)
- 部署难度:⭐⭐⭐(遵循本教程可顺利完成,但需要一定的Docker基础)
如果你正在寻找一个能和朋友们安全、自由玩耍的线上棋牌室,并且不介意动动手部署,那么这个项目绝对值得一试。快搭建起来,邀请好友,开启你们的私人游戏时光吧!