当前位置:   article > 正文

Ubuntu搭建原神3.7版本服务器_原神服务端

原神服务端

本文涉及知识点
linux基础命令|mongoDB服务端搭建及指令|Java环境搭建
为了学习以上提到的技术,本文只以元神私服做LINUX MongoDB java教学例子

写在前面

常识性问题

关于有部分读者反馈3.6下载地址打不开的问题,因为下载地址是GitHub的。如果你只是原神玩家,而发现打不开GitHub的话,可以参照我这篇文章https://mp.csdn.net/mp_blog/creation/editor/127619574。
如果你是同行,问我为什么Github打不开,那你就要反思一下自己平时都在干什么了,在这行属于常识性问题了

数据库安全(特别注意)

我数据库专门给这个原神装的,没设密码,所以被小鬼给删库了,我说数据库怎么老是消失呢,你们记得设好密码哈,我就放了一个原神,他删不删无所谓。懒得去专门处理了,就这样吧!
MongoDB的密码和MySQL的不一样,是单独一个库有独立的账号密码
特地修了一下,设置了下密码。
感谢@Yolan_133的补充
设置密码后链接数据库格式为

"databaseInfo": {
    "server": {
      "connectionUri": "mongodb://username:password@localhost:27017",
      "collection": "grasscutter"
    },
    "game": {
      "connectionUri": "mongodb://username:password@localhost:27017",
      "collection": "grasscutter"
    }
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

https://github.com/Grasscutters/Grasscutter/issues/1241
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

材料准备

  • Ubuntu
  • Mongodb
  • Grasscutters 地址GitHub

搭建方法

ssh登录你的服务器
进入一个目录创建一个文件夹储存服务端,推荐home

sudo cd home
sudo mkdir Grasscutter
  • 1
  • 2

将服务端放进去(服务端末尾提供)图为目录文件树,通过tree命令生成的

完整目录
配置Java环境,此处直接下载Java,然后启动时使用下载的Java,防止环境出问题不好修复
创建一个文件夹放Java,我这里放到了home文件夹

mkdir /home/java 
  • 1

进入这个目录

cd /home/java
  • 1

下载Java并解压

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

tar -zxvf jdk-17_linux-x64_bin.tar.gz 
  • 1
  • 2
  • 3

此时目录下会有一个jdk文件夹
在这里插入图片描述
java的可执行文件就在这里面,具体是在jdk-17.0.6/bin这里面

/home/java/jdk-17.0.6/bin
  • 1

安装MongoDB,直接用apt就好了

sudo apt-get install mongodb
  • 1

装好以后会自动运行mongod程序,可以通过命令查看进程是否已经启动

pgrep mongo -l
  • 1

已经启动了
输入mongo进入数据库操作界面再创建一个root用户,下面为创建管理员账户的命令

db.createUser({user: "root",pwd: "114514", roles: [ { role: "root", db: "admin" } ]})
  • 1

查看是否创建成功

db.auth("root", "114514") #返回1,则表示成功
  • 1

修改配置文件,使能够外网访问(这一步无所谓,主要是教怎么使用其他机子连接这个数据库,不改的话只能自己机子连127.0.0.1)

 nano /etc/mongodb.conf
  • 1

将bindip修改为0.0.0.0,然后ctrl+o保存 ctrl+x退出nano编辑器
到这里服务端环境配置完成
输入下面指令重启数据库以应用修改后的配置

sudo service mongodb restart
  • 1

可以见到
在这里插入图片描述
进去这个文件夹,可以见到resources文件内容都在里面
在这里插入图片描述

在配置文件那给资源文件路径换到你放的路径

如何偷懒

随便找个地方git一下这个resources文件,我这里放到了原神服务端文件夹
拉取仓库

git clone https://gitlab.com/YuukiPS/GC-Resources
  • 1

就是这样的,我这里放到了服务端目录,所以填的是相对路径

{
  "folderStructure": {
    "resources": "./GC-Resources/Resources",
    "data": "./data/",
    "packets": "./packets/",
    "scripts": "resources:Scripts/",
    "plugins": "./plugins/"
  },
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这个仓库我进去看了他一直在更新,应该会一直更新的吧?
更新版本时更新资源文件
进入GC-Resources 目录,拉取最新版本:

git pull
  • 1

在这里插入图片描述
学会偷懒

服务端启动方法

进入服务端目录

cd /home/Grasscutter
  • 1

执行服务端文件,用之前下载的java17

/home/java/jdk-17.0.6/bin/java -jar grasscutter-1.4.6.jar
  • 1

效果图

服务端配置文件的修改(目录下的config.json)

{
  "folderStructure": {
    "resources": "./resources/", //这里可以自定义resources路径,末尾会提到更方便的更新资源文件
    "data": "./data/",
    "packets": "./packets/",
    "scripts": "resources:Scripts/",
    "plugins": "./plugins/"
  },
  "databaseInfo": {
    "server": {
      "connectionUri": "mongodb://服务器ip:27017",//如果有设置密码参考引言
      "collection": "grasscutter"
    },
    "game": {
      "connectionUri": "mongodb://服务器ip:27017",
      "collection": "grasscutter"
    }
  },
  "language": {
    "language": "zh_CN",
    "fallback": "en_US",
    "document": "EN"
  },
  "account": {
    "autoCreate": true, 
    "EXPERIMENTAL_RealPassword": false,
    "defaultPermissions": [],
    "maxPlayer": -1
  },
  "server": {
    "debugWhitelist": [],
    "debugBlacklist": [],
    "runMode": "HYBRID",
    "logCommands": false,
    "http": {
      "bindAddress": "0.0.0.0",
      "bindPort": 连接端口我这里填的是是6443,
      "accessAddress": "你的服务器ip",
      "accessPort": 0,
      "encryption": {
        "useEncryption": true,
        "useInRouting": true,
        "keystore": "./keystore.p12",
        "keystorePassword": "123456"
      },
      "policies": {
        "cors": {
          "enabled": false,
          "allowedOrigins": [
            "*"
          ]
        }
      },
      "files": {
        "indexFile": "./index.html",
        "errorFile": "./404.html"
      }
    },
    "game": {
      "bindAddress": "0.0.0.0",
      "bindPort": 22102,
      "accessAddress": "你的服务器ip",
      "accessPort": 0,
      "loadEntitiesForPlayerRange": 100,
      "enableScriptInBigWorld": false,
      "enableConsole": true,
      "kcpInterval": 20,
      "logPackets": "NONE",
      "isShowPacketPayload": false,
      "isShowLoopPackets": false,
      "gameOptions": {
        "inventoryLimits": {
          "weapons": 2000,
          "relics": 2000,
          "materials": 2000,
          "furniture": 2000,
          "all": 30000
        },
        "avatarLimits": {
          "singlePlayerTeam": 40,
          "multiplayerTeam": 4
        },
        "sceneEntityLimit": 1000,
        "watchGachaConfig": false,
        "enableShopItems": true,
        "staminaUsage": true,
        "energyUsage": true,
        "fishhookTeleport": true,
        "resinOptions": {
          "resinUsage": false,
          "cap": 160,
          "rechargeTime": 480
        },
        "rates": {
          "adventureExp": 1.0,
          "mora": 1.0,
          "leyLines": 1.0
        }
      },
      "joinOptions": {
        "welcomeEmotes": [
          2007,
          1002,
          4010
        ],
        "welcomeMessage": "欢迎来到天理的世界",
        "welcomeMail": {
          "title": "这里填标题!",
          "content": "Hi there!\r\nFirst of all, welcome to Grasscutter. If you have any issues, please let us know so that Lawnmower can help you! \r\n\r\nCheck out our:\r\n\u003ctype\u003d\"browser\" text\u003d\"Discord\" href\u003d\"https://discord.gg/T5vZU6UyeG\"/\u003e\n",
          "sender": "Lawnmower",
          "items": [
            {
              "itemId": 13509,
              "itemCount": 1,
              "itemLevel": 1
            },
            {
              "itemId": 201,
              "itemCount": 99999,
              "itemLevel": 1
            }
          ]
        }
      },
      "serverAccount": {
        "avatarId": 10000007,
        "nameCardId": 210001,
        "adventureRank": 1,
        "worldLevel": 0,
        "nickName": "Server",
        "signature": "Welcome to Grasscutter!"
      }
    },
    "dispatch": {
      "regions": [],
      "defaultName": "Grasscutter",
      "logRequests": "NONE"
    },
    "debugMode": {
      "serverLoggerLevel": {
        "levelInt": 10000,
        "levelStr": "DEBUG"
      },
      "servicesLoggersLevel": {
        "levelInt": 20000,
        "levelStr": "INFO"
      },
      "logPackets": "ALL",
      "isShowPacketPayload": false,
      "isShowLoopPackets": false,
      "logRequests": "ALL"
    }
  },
  "version": 4
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155

如果你按照我的配置来,那么
MongoDB的管理员账户是root密码是114514,连接端口是27017
下载的Java17在这个目录下/home/java/jdk-17.0.6
原神服务端所在目录是/home/Grasscutter,私服连接到服务器的端口是6443

原神客户端连接,电脑版,没有手机版因为带不动

前置操作:先打补丁,将这个目录下的C:\Genshin Impact\Genshin Impact Game\mhypbase.dll这个文件替换成我给你的同名称的那个文件

方法一

这个是我在哪个群里面看到的,不记得了,有知道的请私信我项目地址,我会添加上的。
在这里插入图片描述
下载地址 原神代理转向
项目地址: 还没找到

方法二

打开Fiddler代理软件,点击tools
在这里插入图片描述
点击options
在这里插入图片描述
点击https并按照我图中一样打勾勾
在这里插入图片描述
返回主页面,点击右侧图中位置
在这里插入图片描述
将里面所有东西删掉,复制我的进去

/* Original script by NicknameGG, modified for Grasscutter by contributors. */
import System;
import System.Windows.Forms;
import Fiddler;
import System.Text.RegularExpressions;
 
class Handlers
{
    static function OnBeforeRequest(oS: Session) {
        if(oS.host.EndsWith(".yuanshen.com") || oS.host.EndsWith(".hoyoverse.com") || oS.host.EndsWith(".mihoyo.com")) {
            oS.host = "ip:6443"; // This can also be replaced with another IP address.(输入域名也可)
        }
        if(oS.uriContains("http://uspider.yuanshen.com:8888/log")){
            oS.oRequest.FailSession(200, "Blocked", "haha");
        }
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

点击save script保存,这时候代理就自动运行了在这里插入图片描述
进入C:\Genshin Impact\Genshin Impact Game,下面有个yuanshen.exe直接通过这个启动,成功进入服务器,进入游戏后界面是这个在这里插入图片描述

按我的配置文件来的,直接填用户名和密码就能够完成注册了。UID从10001开始排列,现在你就是天理!在这里插入图片描述

  • 提到的文件
    • 替换文件,代理,服务器管理文件
      https://caowater.lanzouw.com/b0bhpfy4h 密码:cbjr
    • 3.4服务端
      https://www.aliyundrive.com/s/iTUMtCd1Hvd
    • 更新服务端3.5 地址https://github.com/Grasscutters/Grasscutter/releases/download/v1.4.7/grasscutter-1.4.7.jar
    • 更新3.6服务端
      https://github.com/Grasscutters/Grasscutter/suites/12202277918/artifacts/644710117
    • 更新3.7服务端
      https://github.com/Grasscutters/Grasscutter/suites/13107749441/artifacts/711806262
    • 更新Resources文件地址
      https://gitlab.com/YuukiPS/GC-Resources

判断问题所在

这是我已经配置好的,版本是3.7,如果连不上,就说明是你本地出现了问题,以此类推!不过也可能是我给服务端关掉了 没设置密码,所以数据会经常消失,拿来测试用是最好的。

服务器关了

关于控制台显示无权限的问题(3.5出现)解决方法参照
https://github.com/jie65535/gc-opencommand-plugin/issues/27
可以解决此问题。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号