
前言
由于特殊时期,在香港部署的vps被封,所以教程先发在b站,后续会转载到个人博客上。
注意!! 本教程是给具有一定电脑操作能力的人使用,如果你单纯只是想玩私服,并不会使用电脑等工具来自行安装,那么你可以私聊本人,我会提供已经编译好私服文件的虚拟机和远程协助(有偿,远程协助需要协商时间) 要说明的是,虽然文件内容都是开源,但是官网的说明文档十分贫瘠且没有详尽的报错说明,本人提供有偿服务也只是防止泛滥传播
我们来介绍一下原神私服工具grasscutter的安装和部署,网上的攻略也有不少,但是有的问题并没有解决或者已经停止更新,对于一个时常更新的游戏来说过期的攻略等同于无效。
本文是基于 【本机使用grasscutter作为服务器+本机作为客户端】 的基础上的进一步实现 【局域网内原神私服联机】 但未做联机测试,原理上是可以进行的(客户端和服务端已经分离并且能在局域网互联)
先贴工具连接:

https://github.com/Grasscutters/Grasscutter
使用实例视频 发布于本教程前
服务端部署环境需求(这是官网的要求):

- 系统:Windows 10 或Windows Server2016以上(保险,但理论上只要系统高于Windows7即可)
- Java环境:JDK17 推荐17,并非17及以上,非17版本本人未做过测试,可以自行尝试
- python环境:mitmproxy可以通过执行python脚本的方式来代理流量,在grasscutter官网的文件中有提供代理脚本,python版本在3.6-3.9之间即可(推荐3.8或3.9)
- MongoDB数据库:高于4.0 (推荐5.0版本以上,6.0也可)
- proxy 代理:mitmproxy即可,后面会贴链接
简述原理:
总共分两个,客户端和服务端。
服务端要做的就是运行开源的grasscutter包的jar核心文件来启动私服,私服使用MongoDB来存储用户数据,mitmproxy来代理流量,将客户端发来的流量等代理到服务器文件上。
客户端要做的就是安装patch插件(原神在2.8版本后更新了一个小脚本,会检测客户端数据请求的url,如果不是米忽悠的域名,那么就会报错4214),使用第三方启动器来在客户端代理流量,将原本请求到原神官方url的请求转发到设定好的(私服)的位置去。
部署服务端
首先完成好前置要求的安装过程

我们需要安装如下程序,360驱动(修复潜在的dll文件缺失,可选)360压缩(如有其他可以不装)Firefox(浏览器而已,选装)jdk17(建议使用提供的版本)mitmproxy8.1.1(必装)MongoDB(选msi的,官网下载的zip格式的需要自己手动部署,更麻烦)navicat15(可选,这是MongoDB的数据库查看工具,安装MongoDB数据库本身会自带一个,可以不装)python3.9(必装)sublime(文本编辑器,选装,你可以用系统自带的记事本)
安装所需环境
有视频,不多做赘述
视频连接 : https://www.bilibili.com/video/BV1jd4y1i7Je/ 视频寄了,后续会补档,当然有啥不懂你可以问我(下方评论,邮箱,公众号后台提问)
开始下载服务器核心文件



下载好后如下所示,全部保留,然后将 release 位置的发行版文件同样下载,它是jar结尾的文件

将这个文件同样放到刚才下载好并且解压了的文件夹内

然后我们可以试运行,在文件夹内打开cmd命令行



发现是找不到MongoDB和proxy的文件目录,这个问题如果你环境部署的有问题,会时常困扰着你,不好解决(本人也是被这个搞了很久)
解决方法:看源码

我们可以看到,一个是私服作者给的一键启动脚本,另一个是它的配置文件,我们使用sublime看一下配置文件(start_config.cmd)的源码

注释前的文字是他原来的,注释后的是我给出的指定目录
这里set xxxx_PATH= 的意思就是设定所需文件的目录,就是依赖的数据库和代理软件
我们修改成%xxxxx% (这里%xxxx%是环境变量的表示方法,例如%JAVA_HOME%)

打开系统,高级系统设置中去修改环境变量


添加两个变量 MDB_HOME 和 MITMDUMP_HOME 值选择它的安装路径(你自己的)


使用 【浏览目录(D)…】能直接选择
选择好后我们还需要配置resource文件(服务器的文件核心,决定游戏版本的数据)
Grasscutter资源文件官方项目地址:https://github.com/tamilpp25/Grasscutter_Resources
(1.10日补档)资源文件挂了,官方更新了文件位置,目前为Grasscutters / Grasscutter Resources · GitLab (crepe.moe)
如果还是挂了,那可以去找grasscutter官方wiki Home · Grasscutters/Grasscutter Wiki (github.com)



同理下载好后,放到文件夹内

还有代理证书文件 注意一下是否存在(可能会影响) 如果没有请核验你下载的源码和官方给出的文件是否一致

核验MongoDB是否运行

win+R键 打开运行 输入services.msc查看

找到MongoDB服务,如果显示为正在运行,那没事了
自此,理论来说你的私服前置需求应该满足,如果还是出现未检测到MongoDB和proxy代理程序,那么请自行排障
这边是官方给出的过程

正常运行示范

附:
这边提供一个MongoDB的脚本 用于在一个自定义位置启动MongoDB来作为数据库存储位置
mongod --dbpath "C:\Users\GServer\Desktop\genshinRuntime\mongoDB"



以上仅为个人尝试,以前本人安装私服时(大概2.8版本的时候)并没有如上流程,自行尝试
放行防火墙(可选):
如果你和我一样,是部署在局域网上的服务器,那么这一步你必须得走,否则哪怕和客户端在同一子网,仍无法访问
以下是官网给出的方法:
Make sure to setup your operating system firewall settings 1.Windows: Make Sure To Allow Their Port On Windows Firewall Settings (80,443,8888, And 22102)
Linux: Make Sure To Write sudo ufw allow 22102 , sudo ufw allow 443 , sudo ufw allow 80 , And sudo ufw allow 8888 .
具体使用

配置config.json(可选):

这是服务器的配置目录,如果你是客户端和服务端分离,那么这一步也尤为重要


这样修改后就能允许子网内的其他ip访问,如果你是仅自己机器上(服务器和客户端同时运行在本机),那么不需要过多地更改即可
如果运行start.bat能成功显示出内容(服务器已成功运行balabala~),那么你就可以走到下一步,使用原神客户端来进行访问了
部署客户端
如果能走到这一步,那么你要解决的问题就很少了
- 下载原神国际服(建议使用国际服,国服的游戏文件不改动,你还可以正常访问国服的正版服)
- 使用提供的破解文件patch游戏文件
- 使用第三方启动器 grassclipper https://github.com/Grasscutters/GrassClipper
原神国际服下载完成后先不要使用第三方启动器来链接私服,先链接正版服务器更新游戏文件,可以不注册登录,能正常显示就行
使用 破解文件 替换客户端原有的dll文件

你可以到genkit百科里自行寻找 https://mihoyo-is-in.icu/
我这边也都提供了,可以私信我 (私人云盘寄了,原因可见前言)

当然,错误的补丁可能会导致游戏启动崩溃,无法正常启动等,这个就是需要你去到网上寻找资源了
最后是第三方启动器,这里我提供两个,一个是grassclipper,另一个则是官方网址上给出的Cultivation(照理来说这个应该能行,但是作者本人电脑使用报错了,启动不了)
Cultivation地址 https://github.com/Grasscutters/Cultivation

如果使用cultivation的话应该是可以不修改客户端文件了,但是本人使用的时候遇到点问题,就弃用了(你可以试试,我推荐使用这个)
grassclipper的使用建议如下

下载完grassclipper文件后,在exe那个程序上右键,新建快捷方式,后修改快捷方式最后目标一栏,添加 --mode=chrome 这样就能使用chrome方式启动软件(不知道为什么要这样,但是这样最稳定),如果你并没有安装chrome浏览器,可以试试不加(应该也没问题,具体看官方给出的文档)

你的一打开肯定是英文版,自行修改成中文

注意!需要安装一下代理程序,点击install即可下载(全自动,下载的代理就是之前服务端也用到的mitmproxy)
全部完成后基本可以正常运行了,如果还遇到问题,请看下面的问题一览(本文有些漏讲了的也写在里面了,推荐看一下)
常见问题
HTTPS并不能连接成功:
这是因为代理证书未安装,
前往服务端的 设置-网络-代理-手动设置代理 ,设置为 127.0.0.1:54321 后,使用浏览器访问 http://mitm.it 并选择相应证书下载,此证书需要下发给客户端所在机器安装,注意服务器 IP 更换后需要重新下载安装证书
如果服务端和游戏都跑在本机,不用手动安装证书,代理会自动安装
注意:这一步服务端开启代理只是为了便于下载证书 (当然你也可以直接去这里复制 %USERPROFILE%.mitmproxy\mitmproxy-ca-cert.cer ),下载完后请关闭服务端的系统代理,否则无法正常连接服务端
这是作者本人查到的,但是有更简便的方法,直接在服务器端打开浏览器,访问http://mitm.it

我们是Windows,所以直接选择Windows那个绿色的按钮就行

复制到桌面(如果你服务端和客户端未分离,那么直接双击就行),安装证书即可(一路确定)

完了一路下一步就行
服务端报错:
自行鉴别,如果是Java报错,那么可能性有很多,但不排除本身你下载的release文件他自己代码写错了(本人就遇到过,后来自己改了下代码打包成jar文件)
端口占用:
一般显示为 address already in use : bind 这个问题需要自己去把占用的端口找出来,然后禁用,这边给个百度的结果好了 https://www.php.cn/faq/467525.html 【端口被占用怎么解决】
连接服务器错误:
报错4206:
代理未正确配置,检查好代理是否正常运行,查看查看代理窗口的报错内容(需要一定能力)
开启代理后运行游戏,检查服务端和代理的日志,如果代理中
没有 mihoyo.com / hoyoverse.com 子域的请求或者没刷新任何日志,则为客户端代理配置错误
有 mihoyo.com / hoyoverse.com 子域的请求,但报 TLS handshake failed,则为客户端未安装对应服务端的证书,或服务端不能连接到相应域名
有 mihoyo.com / hoyoverse.com 子域的请求,但报拒绝连接等错误,可能是服务端网络问题导致无法连接米哈游服务器
报错4214:
服务器版本和客户端版本不一致(比如你服务器是3.0的你客户端却更新到了3.1) 客户端并未安装补丁,错误的域名指向导致程序自行报错(米忽悠在2.8版本修改了客户端的规则,防私服用的)
报错4201:
证书错误,一般是服务端那个keystore.p12文件出错了,但也不应该啊(本人没遇到过)
一切都成功后进门白屏,不显示:MongoDB的锅,你确定好是否开启了该服务,或者Java的锅,你确定好版本(也许你重来一遍又遇到了别的问题,那就是别的问题引起的)
报错502,4301,无法连接服务器:
你的问题,重新来过试试,检查好服务端
写在最后:
本文其实写的并不是很好,很多问题和过程都省略了,因为配置和环境这东西千人千面,你很难把握好,况且本人的技术并非多么高超,无法把全部过程和问题写清楚,讲明白。只是把自己安装的过程中踩过的坑,遇到过的问题简单说一下,网上相关的帖子也有不少,说的也都比我好,我会贴在下面,可以自己去看。开源分享者也分享过自己的一键整合包,如果感兴趣可以自己去试试,我还是比较依赖GitHub上所分享的,哪怕并不那么完美。
如果你仅仅是想玩私服的内容,那么你可以去找找更好的懒人包或者什么的,或者联系我我会发你我自己做好的服务器文件打包(有偿)。但是我搞私服的目的更多的不是什么想去玩私服,只是在享受折腾的这个过程罢了,哪怕很痛苦,哪怕没有结果(之前陆续搞了两个多月也没成,国庆期间有空了才解决问题)。
相关链接分享:
Grasscutter官方地址:https://grasscutter.io/
Grasscutter官方项目地址:https://github.com/Grasscutters/Grasscutter
Grasscutter资源文件官方项目地址:
https://github.com/tamilpp25/Grasscutter_ResourcesGrasscutter官方说明文档地址:Home · Grasscutters/Grasscutter Wiki (github.com)
茶靡博客:https://blog.tomys.top/2022-04/genshintj/ (不少内容参考了该作者写的,包括安装的时候也是看着他的来做,当然也参考了别人的,每个人每种方法,不能说绝对是最好的,只能自己看合不合适)
虚冇的避风港:https://memorz.top/archives/112 (当时看着教程做的,但自己搞还是有些差别)
后记:
如果能看到这里,那么感谢你的支持,如果我写的内容和我分享的能帮到你,那么请你给我的视频点赞三连支持下好不好捏
视频介绍:https://www.bilibili.com/video/BV1Me411T7rR
后续应该还会再做,但是没有像国庆这种大假了……
本文随时更新,其他平台发布的文章受不可抗力限制不能随意更改添加,所以你在别的地方看到的文章内容不保证是最新,请收藏我的博客好不好捏,我会更新更多有意思的东西……
文章评论
如果有问题可以在下方留言提问,我看到会去尽快回复,评论区可以互相交流经验探讨,同时也欢迎访问作者b站视频 https://www.bilibili.com/video/BV1Me411T7rR/
@Yiki安然 https://wwm.lanzouj.com/ibvqj0ddvtna
割草机小工具,可以帮你生成一些私服内的指令(生成物品,修改等级,产生实体,自定义圣遗物等)
@Yiki安然 另外补档了UA文件,客户端破解文件可以在公众号内输入关键字【原神】自提,回复魇亓云下载链接。文件均为网络资源,请注意甄别,且存在时效性,具体问题私信站长邮箱即可,24小时内会给予答复😘
@Yiki安然 楼主可以给个视频教程吗感谢
有没有4214的补丁?
@天命小猪
多了,可以去看我b站有个视频,有大佬打广告,那个群里有懒人包和补丁工具啥的,我这里就不引流了b站视频寄了,有需要的话发我邮箱邮件或者加我q,我直接发你(masteran@yanqi7.top)
服务器端搭好了,客户端能直接用安卓国际服的客户端登录吗,我用Fiddler转发的全都是“Tunnel to......443”,抓出来b站的请求也都是这样的,但是有的App就可以用,有什么解决方法吗
@迷天狐 换个代理软件试试,用grassclipper或者去看我b站视频里,有个大佬打广告,那个qq群里有大佬写的易语言代理程序,一般代理用mitdrump也行,fiddler的话没用过不是很清楚
搭建好了的话,朋友要怎么才能加进来一起玩
@科少 部署到公网服务器再配置好相应防火墙策略,或者做内网穿透映射端口。好友通过代理软件(软件内配置)或者修改host把所有指向米哈游的域名重定向到你的服务器域名或ip上(只能是公网服务器)
服务器有硬件要求吗
@liu2ye 4h8g起步吧……这还是人少的情况下
登陆之后进入游戏白屏,不加载,过段时间显示 网络响应超时, 用的是国服3.3版本,resources链接挂了,从别的地方下载的3.3的,登录器上写的版本是V3.2.0,是因为版本不对吗?
@1 核心版本和服务器resource一定得对上号的,连接挂了那我过段时间再补档一下或者再找替代好了
客户端游戏版本和服务器游戏版本一定得对上号的
@1 刚找到的resource连接,他们换掉之前那个私人仓库里的了
https://git.crepe.moe/grasscutters/Grasscutter_Resources
之后如果又有变动可以看grasscutter官方文档,慢慢找里头都有写的
好的,感谢大佬
[15:38:47] [INFO] Welcome to Grasscutter
[15:38:47] [INFO] To proper exit this console, use [Ctrl + C] and enter N not Y.
[15:38:47] [INFO]
[15:38:47] [INFO] Initializing...
[15:38:47] [ERROR] Server jar not found.
[15:38:47] [INFO] MongoDB daemon not started, no need to clean up.
[15:38:47] [INFO] Proxy daemon not started, no need to clean up.
[15:38:47] [INFO] See you again :)
大佬,请问这个是什么问题,是java版本的问题吗?
@321 没有指定java环境的位置,包括mongodb数据库也是,如果你是根据我的教程用的它给的start脚本启动的话,改一下另一个start.conf里面的配置就行,用记事本打开就能看启动代码了,自己手动指定位置
[16:57:15] [INFO]
[16:57:15] [INFO] Initializing...
[16:57:15] [WARN] mitmdump not found, server only mode.
[16:57:15] [WARN] MongoDB daemon not found, server only mode.
[16:57:15] [INFO] Starting server...
...............
[16:57:21] [INFO] Server stopped
[16:57:21] [INFO] MongoDB daemon not started, no need to clean up.
[16:57:21] [INFO] Proxy daemon not started, no need to clean up.
[16:57:21] [INFO] See you again :)
搞了一下午也找不出原因,求大佬指点
@jifenggege 韩信带净化,检查启动脚本conf指定的mongodb的位置,检查mongodb服务是否运行。至于那个proxy的话貌似是用不到的。还有问题的话再评论,我找找别的启动脚本供你参考下。mongodb的问题是挺严重的,我自己之前做的时候也是卡在这一步,他只需要你一个运行状态的空mongodb数据库即可,内容文件之类的grasscutter会自己建表填数据
有剧情吗
@qingq 有,需要手动输任务代码
[16:01:20] [INFO] Welcome to Grasscutter
[16:01:20] [INFO] To proper exit this console, use [Ctrl + C] and enter N not Y.
[16:01:20] [INFO]
[16:01:20] [INFO] Initializing...
[16:01:20] [ERROR] Server jar not found.
[16:01:20] [INFO] MongoDB daemon not started, no need to clean up.
[16:01:20] [INFO] Proxy daemon not started, no need to clean up.
[16:01:20] [INFO] See you again :)
兄我按着你上面的做给它指定位置还是显示这个怎么解决
@Suzuran
https://ycloud.yanqi7.top/123云盘/GenshinImpact/服务端3352版本(收集自网络).zip
启动脚本参考参考这个,我从网上找来的服务端核心,里面的启动.bat的脚本就能实现一键启动,对shell有研究的可以看看
放技能没配音怎么解决
@charlie 客户端那里手动添加语音包
grasscultter 3.4那个下载速度太慢大佬有网盘的嘛
@塞提亚 我邮件直接发你123云盘的分享链接
@Yanqi 4214的补丁有吗大佬
有4214补丁吗大佬
failed to load il2cpp 怎么解决
@VLC 百度出来的解决方案
你直接用原神客户端执行一下修复就行,试试看,你的客户端是3.4还是我云盘上的那个3.3的版本
大佬,我用的云盘里的 “服务端3352版本(收集自网络)”的服务器核心 正常启动了服务,然后又在云盘里拿了 “GenshinImpact_3.3.50_beta(客户端-收集自网络)”的客户端,账号创建没问题,但是登录后在“准备下载资源”界面报错4214。我查找代码发现是客户端与服务器版本不一致的错误。想请教一下,是不是我需要找一个3.3.52版本的客户端,又或者是其他的办法。请大佬指条明路,感谢大佬。
@shocora UA补丁换个试试/重新找个3.3的jar核心包/重新再找资源/等3.4私服完善 资源我是以前收集的一些分享群里的,现在那些群都不提供核心包之类的了,开始搞公益服自己玩闭源的了,不好找,如果实在不行的话你可以🧱外找找看,国内相关的私服群都把资源删掉了,我这边只能提供这些了😵💫
@Yanqi 谢谢大佬!我能进入世界了!但好像没有角色语音。我单下了个语音包放进去,然后设置-语音包管理里也能看到语音包包大小,但还是没有语音。怎么解。。。
@shocora 对应版本的语音包放进去也没用吗,那可能就是客户端自己的问题,少配置了或者被删掉了,不好解,实在需要语音的话可以去试试网盘里3.4的版本,我自己测试过都可以的
up,那啥这个下载一直显示操作频繁为啥?就3.4的那个自整理
@qshift 网盘同时访问过多吧……如果下载有问题可以到我微信公众号后台私信我私发你或者邮箱联系我
@qshift 补了123云盘的分享链接,3.4目录下头说明文档里,客户端本体挺大的下载可能不太友善,客户端我改天拆分开来,打成小包方便下载。
至于那个操作频繁……我不好说,有空了我研究下怎么解决🥲
@Yanqi 感谢大佬
你好,我配置好环境后,运行start.cmd之后出现了这样的报错,请问怎么解决嘞?
Caused by: java.io.IOException: keystore password was incorrect
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2159)
……
at io.javalin.Javalin.start(Javalin.java:174)
@xiaonai keystore 文件错了,检查下运行脚本所在目录下的文件对不对
@xiaonai 全称是keystore.p12 你去GitHub项目上download一个文件试试看能行不,要是不行的话去我的网盘(魇亓云)的123Pan那里找找我收集的grasscutter历史版本里面的keystore文件,找对应版本号的试试看能行不
@Yanqi 好,我试试,谢谢
@Yanqi 前面没问题了,但是最后运行那个Cultivation的时候,它提示我游戏版本太新了,需要下一个什么东西,
请问怎么解决嘞
Game version is too new for metadata patching. Please disable
metadata patching in the settings to launch the game.
NOTE: You will require a UA patch to play the game.
@xiaonai cultivation都不太常用了,他报错是因为没有新的UA破解文件了,建议用别的第三方启动器+手动破解客户端
你是3.几版本,3.5的话目前我还没找到(也没有人分享破解文件),如果是以前版本可以看我的云盘,里面有分享
@Yanqi 感谢大佬,我已经搞好了!
访问https://git.crepe.moe/grasscutters/Grasscutter_Resources提示需要登录???
如图也无法登录https://img.jerry.ink/9aMWzX.png
@Jerry 您的帐户正在等待GitLab管理员的批准,因此被阻止。如果您认为这是一个错误,请联系您的GitLab管理员。
可能是防滥用吧,只能等审批好咯
@Jerry 想玩也可以去我微信公众号获取3.4的资源,至于3.5版本的我没去找,最近没空🤧
现在都兴公益服垄断什么的,真正喜欢开源分享的都很少了,毕竟免费分享的东西之前被人拿去⭕️💰
大佬 我配置了环境变量 为啥还是这样啊
F:GenshinRunningGrasscutter-development>start.cmd
[12:06:03] [INFO] Welcome to Grasscutter
[12:06:03] [INFO] To proper exit this console, use [Ctrl + C] and enter N not Y.
[12:06:03] [INFO]
[12:06:03] [INFO] Initializing...
[12:06:03] [ERROR] Server jar not found.
[12:06:03] [INFO] MongoDB daemon not started, no need to clean up.
[12:06:03] [INFO] Proxy daemon not started, no need to clean up.
[12:06:03] [INFO] See you again :)
@唐学优 你这个直接连grasscutter.jar都没找到,记得改名crasscutter核心包文件或者改启动命令文件
如果不行请移步微信公众号,后台私信【原神】,有我自己收集整理的3.4的全部一键包
大佬,其他东西都搞好了,但是用cultivation登陆的时候一直显示系统错误,然后在外面create账号了也还是系统错误
@唐学优 那个不好用,还是使用代理助手,直接打开yuanshen.exe启动游戏就行
博主,你分享的recourses链接都失效了,请问哪里还能找到呀
@david 呃我刚测试发现确实没了,https://github.com/Grasscutters/Grasscutter/wiki/Running 这个是官方wiki上关于资源包的信息,你可以看看这个什么时候更新
目前还是使用我公众号上发布的一键包吧,同样是收集自网络,执行后本地一键启动,无需额外配置