YuukiPS / DockerGS

DockerGC is a container that run Grasscutter (anime game) with just a single command.
GNU Affero General Public License v3.0
553 stars 107 forks source link

PasswordAuthenticator #26

Closed 1995chen closed 2 years ago

1995chen commented 2 years ago

PasswordAuthenticator

I deployed it in kubernetes, genshin.local.domain is a private domain name, I go to the DNS at home, and the following is the yaml file 我在kubernetes里面部署的,genshin.local.domain是私有域名,走的家里的DNS,下面是yaml文件

Kubernetes Yaml

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: genshin
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: genshin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: genshin
  strategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: genshin
    spec:
      restartPolicy: Always
      nodeName: centos-01
      volumes:
      - name: genshin
        persistentVolumeClaim:
          claimName: genshin

      containers:
      - name: genshin
        imagePullPolicy: IfNotPresent
        image: siakbary/dockergc:alpine-Patch-2.7-93aabb3
        stdin: true
        tty: true
        resources:
          requests:
            cpu: 200m
        ports:
        - name: udp-port
          containerPort: 22102
          protocol: UDP
        - name: https-port
          containerPort: 443
          protocol: TCP
        - name: http-port
          containerPort: 80
          protocol: TCP
        args:
          - "-d"
          - "mongodb://root:123456@mongodb.mongodb:27017"
          - "-b"
          - "genshin.local.domain"
          - "-g"
          - "192.168.0.202"
          - "-f"
          - "yes"
          - "-l"
          - "zh-CN"
        env:
        - name: TZ
          value: "Asia/Shanghai"
        volumeMounts:
        - mountPath: /home/Grasscutter/resources
          name: genshin
          subPath: resources

---

apiVersion: v1
kind: Service
metadata:
  name: genshin
spec:
  ports:
  - port: 443
    targetPort: 443
    name: https-port
  - port: 80
    targetPort: 80
    name: http-port
  - port: 22102
    targetPort: 22102
    nodePort: 22102
    name: udp-port
  selector:
    app: genshin
  type: NodePort

---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: genshin.local.domain
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  rules:
  - host: genshin.local.domain
    http:
      paths:
      - backend:
          serviceName: genshin
          servicePort: 443
  tls:
  - hosts:
    - genshin.local.domain
    secretName: genshin

Problems Encountered

IMG_5374

Server Log

截屏2022-06-12 上午6 00 39

Use res 2.7
This system run with OS Alpine Linux
     intx CompilerThreadStackSize                  = 1024                                   {pd product} {default}
   size_t ErgoHeapSizeLimit                        = 0                                         {product} {default}
   size_t HeapSizePerGCThread                      = 43620760                                  {product} {default}
   size_t InitialHeapSize                          = 130023424                                 {product} {ergonomic}
   size_t LargePageHeapSizeThreshold               = 134217728                                 {product} {default}
   size_t MaxHeapSize                              = 2051014656                                {product} {ergonomic}
   size_t MinHeapSize                              = 8388608                                   {product} {ergonomic}
    uintx NonNMethodCodeHeapSize                   = 5826188                                {pd product} {ergonomic}
    uintx NonProfiledCodeHeapSize                  = 122916026                              {pd product} {ergonomic}
    uintx ProfiledCodeHeapSize                     = 122916026                              {pd product} {ergonomic}
   size_t SoftMaxHeapSize                          = 2051014656                             {manageable} {ergonomic}
     intx ThreadStackSize                          = 1024                                   {pd product} {default}
     intx VMThreadStackSize                        = 1024                                   {pd product} {default}
openjdk version "17.0.3" 2022-04-19
OpenJDK Runtime Environment Temurin-17.0.3+7 (build 17.0.3+7)
OpenJDK 64-Bit Server VM Temurin-17.0.3+7 (build 17.0.3+7, mixed mode, sharing)
BinOutput       Readable        Subtitle
ExcelBinOutput  Scripts         TextMap
Resources folder already exists...
No config file was found, try to use from command file
05:15:03 <INFO:Grasscutter> config.json could not be found. Generating a default configuration ...
05:15:04 <INFO:Grasscutter> Boot DockerGC
05:15:04 <INFO:GameServer> Exit with code 0 | exitEarly
Server Web Public: genshin.local.domain
Server Ip Game: 192.168.0.202
Server Game Port: 22102
Server MongoDB: mongodb://root:123456@mongodb.mongodb:27017
05:15:05 <INFO:Grasscutter> Starting Grasscutter...
05:15:05 <INFO:Grasscutter> Game version: 2.7.0
05:15:06 <INFO:ResourceLoader> Loaded 4246 FetterDatas.
05:15:06 <INFO:ResourceLoader> Loaded 411 AvatarSkillDatas.
05:15:06 <INFO:ResourceLoader> Loaded 49 FetterCharacterCardDatas.
05:15:06 <INFO:ResourceLoader> Loaded 312 AvatarTalentDatas.
05:15:06 <INFO:ResourceLoader> Loaded 31 ForgeDatas.
05:15:06 <INFO:ResourceLoader> Loaded 668 RewardPreviewDatas.
05:15:06 <INFO:ResourceLoader> Loaded 168 MonsterDescribeDatas.
05:15:06 <INFO:ResourceLoader> Loaded 75 AvatarSkillDepotDatas.
05:15:06 <INFO:ResourceLoader> Loaded 2516 ProudSkillDatas.
05:15:06 <INFO:ResourceLoader> Loaded 297 CombineDatas.
05:15:06 <INFO:ResourceLoader> Loaded 200 MonsterCurveDatas.
05:15:06 <INFO:ResourceLoader> Loaded 497 CodexMaterialDatas.
05:15:06 <INFO:ResourceLoader> Loaded 350 AvatarPromoteDatas.
05:15:06 <INFO:ResourceLoader> Loaded 42 ReliquarySetDatas.
05:15:06 <INFO:ResourceLoader> Loaded 11420 QuestDatas.
05:15:06 <INFO:ResourceLoader> Loaded 49 TowerScheduleDatas.
05:15:06 <INFO:ResourceLoader> Loaded 734 SceneDatas.
05:15:06 <INFO:ResourceLoader> Loaded 3093 NpcDatas.
05:15:06 <INFO:ResourceLoader> Loaded 9 AvatarFlycloakDatas.
05:15:06 <INFO:ResourceLoader> Loaded 335 ReliquaryAffixDatas.
05:15:06 <INFO:ResourceLoader> Loaded 6868 GadgetDatas.
05:15:06 <INFO:ResourceLoader> Loaded 749 EquipAffixDatas.
05:15:06 <INFO:ResourceLoader> Loaded 101 ReliquaryLevelDatas.
05:15:06 <INFO:ResourceLoader> Loaded 8 WorldLevelDatas.
05:15:06 <INFO:ResourceLoader> Loaded 60 PlayerLevelDatas.
05:15:06 <INFO:ResourceLoader> Loaded 123 TowerLevelDatas.
05:15:07 <INFO:ResourceLoader> Loaded 59 AvatarCostumeDatas.
05:15:07 <INFO:ResourceLoader> Loaded 100 WeaponCurveDatas.
05:15:07 <INFO:ResourceLoader> Loaded 1230 ShopGoodsDatas.
05:15:07 <INFO:ResourceLoader> Loaded 66 ReliquaryMainPropDatas.
05:15:07 <INFO:ResourceLoader> Loaded 208 CodexQuestDatas.
05:15:07 <INFO:ResourceLoader> Loaded 814 DungeonDatas.
05:15:07 <INFO:ResourceLoader> Loaded 4182 RewardDatas.
05:15:07 <INFO:ResourceLoader> Loaded 100 AvatarCurveDatas.
05:15:07 <INFO:ResourceLoader> Loaded 90 AvatarLevelDatas.
05:15:07 <INFO:ResourceLoader> Loaded 41 TowerFloorDatas.
05:15:07 <INFO:ResourceLoader> Loaded 24 DailyDungeonDatas.
05:15:07 <INFO:ResourceLoader> Loaded 137 CodexWeaponDatas.
05:15:07 <INFO:ResourceLoader> Loaded 953 WeaponPromoteDatas.
05:15:07 <INFO:ResourceLoader> Loaded 6943 ItemDatas.
05:15:07 <INFO:ResourceLoader> Loaded 10 AvatarFetterLevelDatas.
05:15:07 <INFO:ResourceLoader> Loaded 233 CodexAnimalDatas.
05:15:07 <INFO:ResourceLoader> Loaded 90 WeaponLevelDatas.
05:15:07 <INFO:ResourceLoader> Loaded 81 CodexReliquaryDatas.
05:15:07 <INFO:ResourceLoader> Loaded 39 EnvAnimalGatherConfigDatas.
05:15:07 <INFO:ResourceLoader> Loaded 569 MonsterDatas.
05:15:07 <INFO:ResourceLoader> Loaded 80 AvatarDatas.
05:15:08 <INFO:ResourceLoader> Loaded 1508 MainQuestDatas.
05:15:09 <INFO:EnergyManager> Energy drop data successfully loaded.
05:15:09 <INFO:EnergyManager> Skill particle generation data successfully loaded.
05:15:09 <INFO:SLF4JLogger> Cluster created with settings {hosts=[mongodb.mongodb:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms'}
05:15:09 <INFO:SLF4JLogger> Opened connection [connectionId{localValue:2, serverValue:67}] to mongodb.mongodb:27017
05:15:09 <INFO:SLF4JLogger> Monitor thread successfully connected to server with description ServerDescription{address=mongodb.mongodb:27017, type=STANDALONE, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=null, roundTripTimeNanos=16049438}
05:15:09 <INFO:SLF4JLogger> Opened connection [connectionId{localValue:1, serverValue:66}] to mongodb.mongodb:27017
05:15:09 <INFO:SLF4JLogger> Opened connection [connectionId{localValue:3, serverValue:68}] to mongodb.mongodb:27017
05:15:09 <INFO:Log> Logging initialized @4931ms to org.eclipse.jetty.util.log.Slf4jLog
05:15:09 <INFO:GameServerPacketHandler> Registered 130 PacketHandlers
05:15:09 <INFO:GachaManager> Banners 38 successfully loaded.
05:15:09 <INFO:GachaManager> Banners 803 | GachaShowPanel_A022
05:15:09 <INFO:GachaManager> Banners 903 | GachaShowPanel_A081
05:15:09 <INFO:GachaManager> Banners 923 | GachaShowPanel_A082
05:15:09 <INFO:GachaManager> Banners 913 | GachaShowPanel_A083
05:15:09 <INFO:ShopManager> Shop data successfully loaded.
05:15:09 <INFO:ShopManager> ShopChest data successfully loaded.
05:15:09 <INFO:ShopManager> ShopChestBatchUse data successfully loaded.
05:15:09 <INFO:StdSchedulerFactory> Using default implementation for ThreadExecutor
05:15:09 <INFO:SimpleThreadPool> Job execution threads will use class loader of thread: main
05:15:09 <INFO:SchedulerSignalerImpl> Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
05:15:09 <INFO:QuartzScheduler> Quartz Scheduler v.2.3.2 created.
05:15:09 <INFO:RAMJobStore> RAMJobStore initialized.
05:15:09 <INFO:QuartzScheduler> Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
05:15:09 <INFO:StdSchedulerFactory> Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
05:15:09 <INFO:StdSchedulerFactory> Quartz scheduler version: 2.3.2
05:15:09 <INFO:MoonCard> [Task] MoonCard task enabled.
05:15:09 <INFO:Banner> [Task] Banner task enabled.
05:15:09 <INFO:QuartzScheduler> Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
05:15:10 <INFO:DropManager> Drop data successfully loaded.
05:15:10 <INFO:ExpeditionManager> Expedition reward successfully loaded.
05:15:14 <INFO:Server> jetty-9.4.35.v20201120; built: 2020-11-20T21:17:03.964Z; git: bdc54f03a5e0a7e280fab27f55c3c75ee8da89fb; jvm 17.0.3+7
05:15:14 <INFO:SslContextFactory> x509=X509@4a105556(keystore_entry,h=[mydomain.com, localhost],w=[]) for Server@3a72e2e8[provider=null,keyStore=file:///home/Grasscutter/keystore.p12,trustStore=null]
05:15:14 <INFO:AbstractConnector> Started ServerConnector@4703c998{SSL, (ssl, http/1.1)}{0.0.0.0:443}
05:15:14 <INFO:Server> Started @9706ms
05:15:14 <INFO:Express> Server listening on http://0.0.0.0:443
05:15:14 <INFO:HttpServer> [Dispatch] Dispatch server started on port 443
05:15:14 <INFO:Grasscutter> Done! For help, type "help"
=>....
05:15:14 <INFO:GameServer> Grasscutter is FREE software. If you have paid for this, you may have been scammed. Homepage: https://github.com/Grasscutters/Grasscutter
>....
05:15:14 <INFO:GameServer> Game Server started on port 22102
>....
05:20:00 <INFO:GachaManager> Banners Event Now (1013) UI_GACHA_SHOW_PANEL_A056_TITLE successfully loaded. Next 1654982700
>....
05:20:00 <INFO:GachaManager> Banners Weapons Now (1123 ) UI_GACHA_SHOW_PANEL_A035_TITLE successfully loaded. Next 1654982700
>....
05:21:16 <INFO:HttpServer$UnhandledRequestRouter> [Dispatch] Potential unhandled GET request: https://genshin.local.domain/authentication/login.
>....
05:23:37 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
05:25:00 <INFO:GachaManager> Banners Event Now (833) UI_GACHA_SHOW_PANEL_A018_TITLE successfully loaded. Next 1654983000
>....
05:25:00 <INFO:GachaManager> Banners Weapons Now (1113 ) UI_GACHA_SHOW_PANEL_A064_TITLE successfully loaded. Next 1654983000
>....
05:30:00 <INFO:GachaManager> Banners Event Now (1063) UI_GACHA_SHOW_PANEL_A065_TITLE successfully loaded. Next 1654983300
>....
05:30:00 <INFO:GachaManager> Banners Weapons Now (1173 ) UI_GACHA_SHOW_PANEL_A078_TITLE successfully loaded. Next 1654983300
>....
05:35:00 <INFO:GachaManager> Banners Event Now (973) UI_GACHA_SHOW_PANEL_A048_TITLE successfully loaded. Next 1654983600
>....
05:35:00 <INFO:GachaManager> Banners Weapons Now (1153 ) UI_GACHA_SHOW_PANEL_A075_TITLE successfully loaded. Next 1654983600
>....
05:40:00 <INFO:GachaManager> Banners Event Now (1043) UI_GACHA_SHOW_PANEL_A062_TITLE successfully loaded. Next 1654983900
>....
05:40:00 <INFO:GachaManager> Banners Weapons Now (1123 ) UI_GACHA_SHOW_PANEL_A035_TITLE successfully loaded. Next 1654983900
>....
05:45:00 <INFO:GachaManager> Banners Event Now (1063) UI_GACHA_SHOW_PANEL_A065_TITLE successfully loaded. Next 1654984200
>....
05:45:00 <INFO:GachaManager> Banners Weapons Now (1153 ) UI_GACHA_SHOW_PANEL_A075_TITLE successfully loaded. Next 1654984200
>....
05:50:00 <INFO:GachaManager> Banners Event Now (973) UI_GACHA_SHOW_PANEL_A048_TITLE successfully loaded. Next 1654984500
>....
05:50:00 <INFO:GachaManager> Banners Weapons Now (1153 ) UI_GACHA_SHOW_PANEL_A075_TITLE successfully loaded. Next 1654984500
>....
05:52:48 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
05:55:00 <INFO:GachaManager> Banners Event Now (1073) UI_GACHA_SHOW_PANEL_A028_TITLE successfully loaded. Next 1654984800
>....
05:55:00 <INFO:GachaManager> Banners Weapons Now (1173 ) UI_GACHA_SHOW_PANEL_A078_TITLE successfully loaded. Next 1654984800
>....
06:00:00 <INFO:GachaManager> Banners Event Now (953) UI_GACHA_SHOW_PANEL_A044_TITLE successfully loaded. Next 1654985100
>....
06:00:00 <INFO:GachaManager> Banners Weapons Now (1173 ) UI_GACHA_SHOW_PANEL_A078_TITLE successfully loaded. Next 1654985100
>....
06:00:21 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:00:22 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:00:23 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:00:23 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:05:00 <INFO:GachaManager> Banners Event Now (863) UI_GACHA_SHOW_PANEL_A027_TITLE successfully loaded. Next 1654985400
>....
06:05:00 <INFO:GachaManager> Banners Weapons Now (1103 ) UI_GACHA_SHOW_PANEL_A038_TITLE successfully loaded. Next 1654985400
>....
06:05:14 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:05:18 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:05:21 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:05:22 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:05:23 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:05:24 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:05:26 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:06:28 <INFO:HttpServer$UnhandledRequestRouter> [Dispatch] Potential unhandled GET request: https://genshin.local.domain/favicon.ico.
>....
06:09:18 <INFO:RegionHandler> Client 192.168.0.55 (CNRELiOS2.7.0) (930af1f03222b44f) request: query_cur_region/os_usa
>....
06:09:18 <INFO:RegionHandler> https://genshin.local.domain/query_cur_region/os_usa?version=CNRELiOS2.7.0&lang=2&platform=1&binary=1&time=284&channel_id=1&sub_channel_id=0&account_type=1&dispatchSeed=930af1f03222b44f
>....
06:10:00 <INFO:GachaManager> Banners Event Now (1083) UI_GACHA_SHOW_PANEL_A071_TITLE successfully loaded. Next 1654985700
>....
06:10:00 <INFO:GachaManager> Banners Weapons Now (1153 ) UI_GACHA_SHOW_PANEL_A075_TITLE successfully loaded. Next 1654985700
>....
06:15:00 <INFO:GachaManager> Banners Event Now (973) UI_GACHA_SHOW_PANEL_A048_TITLE successfully loaded. Next 1654986000
>....
06:15:00 <INFO:GachaManager> Banners Weapons Now (1133 ) UI_GACHA_SHOW_PANEL_A070_TITLE successfully loaded. Next 1654986000
>....
06:15:16 <INFO:HttpServer$UnhandledRequestRouter> [Dispatch] Potential unhandled GET request: https://genshin.local.domain/hk4e_cn/combo/granter/api/compareProtocolVersion.
>....
06:15:16 <INFO:RegionHandler> [Dispatch] Client 192.168.0.55 request: query_region_list
>....
06:15:17 <INFO:HttpServer$UnhandledRequestRouter> [Dispatch] Potential unhandled GET request: https://genshin.local.domain/admin/mi18n/plat_oversea/m202003048/m202003048-zh-cn.json.
>....
06:15:17 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:15:44 <INFO:HttpServer$UnhandledRequestRouter> [Dispatch] Potential unhandled GET request: https://genshin.local.domain/hk4e_cn/combo/granter/api/compareProtocolVersion.
>....
06:15:44 <INFO:RegionHandler> [Dispatch] Client 192.168.0.55 request: query_region_list
>....
06:15:45 <INFO:HttpServer$UnhandledRequestRouter> [Dispatch] Potential unhandled GET request: https://genshin.local.domain/admin/mi18n/plat_oversea/m202003048/m202003048-zh-cn.json.
>....
06:15:56 <INFO:HttpServer$UnhandledRequestRouter> [Dispatch] Potential unhandled GET request: https://genshin.local.domain/hk4e_cn/combo/granter/api/compareProtocolVersion.
>....
06:16:30 <INFO:DispatchHandler> [Dispatch] Client 192.168.0.55 is trying to log in.
>....
06:16:52 <INFO:RegionHandler> Client 192.168.0.226 (CNRELiOS2.7.0) (930af1f03222b44f) request: query_cur_region/os_usa
>....
06:16:52 <INFO:RegionHandler> https://genshin.local.domain/query_cur_region/os_usa?version=CNRELiOS2.7.0&lang=2&platform=1&binary=1&time=284&channel_id=1&sub_channel_id=0&account_type=1&dispatchSeed=930af1f03222b44f

Access on mobile

IMG_5375

akbaryahya commented 2 years ago

it seems to be missing headers data if you are using nginx try using this:

ignore_invalid_headers off;
location / { 
    proxy_pass https://$server:$port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass_request_headers on;
}
1995chen commented 2 years ago

thank you ,now i can login,but another question,I get white screen when i success login. i will create a new issue, thank you. my full yaml bellow:

# doc: https://github.com/akbaryahya/DockerGC/blob/main/docker-compose.yml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: genshin
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: genshin
spec:
  replicas: 1
  selector:
    matchLabels:
      app: genshin
  strategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: genshin
    spec:
      restartPolicy: Always
      nodeName: centos-01
      volumes:
      - name: genshin
        persistentVolumeClaim:
          claimName: genshin

      containers:
      - name: mongodb
        imagePullPolicy: IfNotPresent
        image: mongo
        ports:
        - name: tcp-port
          containerPort: 27017
          protocol: TCP
        env:
        - name: TZ
          value: "Asia/Shanghai"
        - name: MONGO_INITDB_ROOT_USERNAME
          value: "nani"
        - name: MONGO_INITDB_ROOT_PASSWORD
          value: "moemoekyu"
        volumeMounts:
        - mountPath: /data/db
          name: genshin
          subPath: db
      - name: genshin
        imagePullPolicy: IfNotPresent
        image: siakbary/dockergc:alpine-Patch-2.7-245e196
        stdin: true
        tty: true
        ports:
        - name: udp-port
          containerPort: 22102
          protocol: UDP
        - name: https-port
          containerPort: 443
          protocol: TCP
        - name: http-port
          containerPort: 80
          protocol: TCP
        args:
          - "-d"
          - "mongodb://nani:moemoekyu@127.0.0.1:27017"
          - "-b"
          - "genshin.local.domain"
          - "-g"
          - "0.0.0.0"
          - "-f"
          - "yes"
        env:
        - name: TZ
          value: "Asia/Shanghai"
        volumeMounts:
        - mountPath: /home/Grasscutter/resources
          name: genshin
          subPath: resources

---

apiVersion: v1
kind: Service
metadata:
  name: genshin
spec:
  ports:
  - port: 443
    targetPort: 443
    name: https-port
  - port: 80
    targetPort: 80
    name: http-port
  - port: 22102
    targetPort: 22102
    nodePort: 22102
    name: udp-port
  selector:
    app: genshin
  type: NodePort

---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: genshin.local.domain
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_pass_request_headers on;
spec:
  rules:
  - host: genshin.local.domain
    http:
      paths:
      - backend:
          serviceName: genshin
          servicePort: 443
  tls:
  - hosts:
    - genshin.local.domain
    secretName: genshin

attention: change ingress configmap

ignore-invalid-headers: false