@underpostnet/cyberia 3.3.0 → 3.3.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/.dockerignore +1 -0
  2. package/.env.example +17 -5
  3. package/.github/workflows/coverall.cyberia.ci.yml +39 -14
  4. package/.github/workflows/cyberia-client.cd.yml +5 -0
  5. package/.github/workflows/cyberia-server.cd.yml +5 -0
  6. package/.github/workflows/docker-image.cyberia-client.ci.yml +8 -5
  7. package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +8 -3
  8. package/.github/workflows/docker-image.cyberia-server.ci.yml +8 -5
  9. package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +8 -5
  10. package/.github/workflows/docker-image.engine-cyberia.ci.yml +15 -1
  11. package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +15 -1
  12. package/.github/workflows/engine-cyberia.cd.yml +3 -0
  13. package/.github/workflows/engine-cyberia.ci.yml +4 -5
  14. package/.github/workflows/ghpkg.ci.yml +35 -20
  15. package/.github/workflows/hardhat.ci.yml +12 -11
  16. package/.github/workflows/npmpkg.ci.yml +17 -15
  17. package/.github/workflows/publish.cyberia.ci.yml +44 -0
  18. package/.github/workflows/pwa-microservices-template-test.ci.yml +2 -2
  19. package/.github/workflows/release.cd.yml +1 -0
  20. package/.prettierignore +1 -0
  21. package/AGENTS.md +96 -0
  22. package/CHANGELOG.md +653 -2513
  23. package/CLI-HELP.md +323 -157
  24. package/Dockerfile +25 -9
  25. package/Dockerfile.dev +25 -9
  26. package/Dockerfile.test +5 -5
  27. package/README.md +48 -28
  28. package/bin/build.js +86 -41
  29. package/bin/build.template.js +8 -3
  30. package/bin/cyberia.js +1494 -1403
  31. package/bin/deploy.js +18 -104
  32. package/bin/index.js +1494 -1403
  33. package/compose.env +17 -5
  34. package/conf.js +98 -7
  35. package/deploy/cyberia-client/deploy.sh +46 -0
  36. package/deploy/cyberia-client/package.sh +17 -0
  37. package/deploy/cyberia-client/state.sh +15 -0
  38. package/deploy/cyberia-server/deploy.sh +46 -0
  39. package/deploy/cyberia-server/package.sh +17 -0
  40. package/deploy/cyberia-server/state.sh +15 -0
  41. package/deploy/dd-cyberia/deploy.sh +9 -29
  42. package/deploy/dd-cyberia/init.sh +38 -45
  43. package/deploy/dd-cyberia/package.sh +16 -0
  44. package/deploy/dd-cyberia/state.sh +14 -0
  45. package/deploy/dd-cyberia/sync-deploy.sh +133 -147
  46. package/deploy/lib/config.sh +29 -0
  47. package/deploy/lib/github-actions-logging.sh +610 -0
  48. package/deploy/lib/host.sh +194 -0
  49. package/deploy/lib/state.sh +65 -0
  50. package/deploy/pwa-microservices-template/deploy.sh +17 -42
  51. package/deploy/release/deploy.sh +9 -41
  52. package/deployment.yaml +7 -2
  53. package/docker-compose.yml +23 -17
  54. package/examples/static-page/README.md +19 -19
  55. package/examples/static-page/ssr-components/CustomPage.js +2 -2
  56. package/hardhat/hardhat.config.js +1 -6
  57. package/hardhat/package-lock.json +101 -40
  58. package/hardhat/package.json +2 -2
  59. package/manifests/alertmanager/deployment.yaml +81 -0
  60. package/manifests/blackbox-exporter/deployment.yaml +75 -0
  61. package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +32 -7
  62. package/manifests/cronjobs/dd-cron/dd-cron-vultr.yaml +32 -7
  63. package/manifests/deployment/dd-cyberia-development/deployment.yaml +7 -2
  64. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  65. package/manifests/deployment/mongo-express/deployment.yaml +46 -27
  66. package/manifests/deployment/mongo-express/kustomization.yaml +9 -0
  67. package/manifests/deployment/mongo-express/mongo-express-nodeport.yaml +18 -0
  68. package/manifests/deployment/mongo-express/service.yaml +16 -0
  69. package/manifests/deployment/mongo-express-no-auth/disable-mongodb-auth.yaml +16 -0
  70. package/manifests/deployment/mongo-express-no-auth/kustomization.yaml +16 -0
  71. package/manifests/grafana/deployment.yaml +26 -7
  72. package/manifests/grafana/kustomization.yaml +1 -0
  73. package/manifests/grafana/service.yaml +6 -1
  74. package/manifests/mariadb/pv.yaml +1 -0
  75. package/manifests/mongodb/statefulset.yaml +9 -2
  76. package/manifests/mysql/pv-pvc.yaml +14 -1
  77. package/manifests/postgresql/pv.yaml +12 -1
  78. package/manifests/postgresql/pvc.yaml +1 -0
  79. package/manifests/prometheus/deployment.yaml +18 -22
  80. package/package.json +87 -12
  81. package/scripts/event-monitor.sh +56 -0
  82. package/scripts/k3s-node-setup.sh +27 -14
  83. package/scripts/kubeadm-node-setup.sh +31 -11
  84. package/scripts/maas-setup.sh +8 -8
  85. package/scripts/selinux-normalize.sh +907 -0
  86. package/scripts/shutdown-machine.sh +843 -0
  87. package/scripts/test-monitor.sh +5 -5
  88. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +15 -10
  89. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +36 -5
  90. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +7 -2
  91. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +90 -186
  92. package/src/api/core/core.controller.js +1 -1
  93. package/src/api/core/core.router.js +2 -2
  94. package/src/api/core/core.service.js +2 -2
  95. package/src/api/crypto/crypto.controller.js +1 -1
  96. package/src/api/crypto/crypto.service.js +1 -1
  97. package/src/api/cyberia-action/cyberia-action.controller.js +1 -1
  98. package/src/api/cyberia-action/cyberia-action.router.js +3 -3
  99. package/src/api/cyberia-action/cyberia-action.service.js +5 -6
  100. package/src/api/cyberia-audio/cyberia-audio.controller.js +6 -0
  101. package/src/api/cyberia-audio/cyberia-audio.model.js +61 -0
  102. package/src/api/cyberia-audio/cyberia-audio.router.js +21 -0
  103. package/src/api/cyberia-audio/cyberia-audio.service.js +220 -0
  104. package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +2 -4
  105. package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +10 -19
  106. package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +13 -35
  107. package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +17 -34
  108. package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +1 -1
  109. package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +1 -1
  110. package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +2 -2
  111. package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +2 -2
  112. package/src/api/cyberia-entity/cyberia-entity.controller.js +1 -1
  113. package/src/api/cyberia-entity/cyberia-entity.model.js +2 -0
  114. package/src/api/cyberia-entity/cyberia-entity.router.js +1 -1
  115. package/src/api/cyberia-entity/cyberia-entity.service.js +3 -3
  116. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +8 -2
  117. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +31 -20
  118. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +17 -2
  119. package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +468 -5
  120. package/src/api/cyberia-instance/cyberia-fallback-capture.js +502 -0
  121. package/src/api/cyberia-instance/cyberia-fallback-world.js +29 -40
  122. package/src/api/cyberia-instance/cyberia-instance-boot.service.js +5 -5
  123. package/src/api/cyberia-instance/cyberia-instance-items.js +98 -0
  124. package/src/api/cyberia-instance/cyberia-instance-map.service.js +35 -142
  125. package/src/api/cyberia-instance/cyberia-instance.controller.js +2 -5
  126. package/src/api/cyberia-instance/cyberia-instance.model.js +0 -14
  127. package/src/api/cyberia-instance/cyberia-instance.router.js +5 -18
  128. package/src/api/cyberia-instance/cyberia-instance.service.js +5 -45
  129. package/src/api/cyberia-instance/cyberia-world-generator.js +8 -13
  130. package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +1 -1
  131. package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +49 -75
  132. package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +1 -1
  133. package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +76 -3
  134. package/src/api/cyberia-map/cyberia-map.controller.js +1 -1
  135. package/src/api/cyberia-map/cyberia-map.router.js +1 -1
  136. package/src/api/cyberia-map/cyberia-map.service.js +8 -4
  137. package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.controller.js +31 -0
  138. package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.model.js +56 -0
  139. package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.router.js +33 -0
  140. package/src/api/cyberia-map-audio-conf/cyberia-map-audio-conf.service.js +189 -0
  141. package/src/api/cyberia-quest/cyberia-quest.controller.js +1 -1
  142. package/src/api/cyberia-quest/cyberia-quest.router.js +4 -4
  143. package/src/api/cyberia-quest/cyberia-quest.service.js +5 -5
  144. package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +1 -1
  145. package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +1 -1
  146. package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +1 -1
  147. package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +2 -2
  148. package/src/api/cyberia-saga/cyberia-saga.controller.js +1 -1
  149. package/src/api/cyberia-saga/cyberia-saga.router.js +1 -1
  150. package/src/api/cyberia-saga/cyberia-saga.service.js +2 -2
  151. package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +403 -214
  152. package/src/api/cyberia-skill/cyberia-skill.controller.js +1 -1
  153. package/src/api/cyberia-skill/cyberia-skill.model.js +6 -6
  154. package/src/api/cyberia-skill/cyberia-skill.router.js +1 -1
  155. package/src/api/cyberia-skill/cyberia-skill.service.js +2 -2
  156. package/src/api/default/default.controller.js +1 -1
  157. package/src/api/default/default.router.js +1 -1
  158. package/src/api/default/default.service.js +2 -2
  159. package/src/api/document/document.controller.js +1 -1
  160. package/src/api/document/document.router.js +1 -1
  161. package/src/api/document/document.service.js +2 -2
  162. package/src/api/file/file.controller.js +1 -1
  163. package/src/api/file/file.ref.js +153 -0
  164. package/src/api/file/file.ref.json +11 -2
  165. package/src/api/file/file.router.js +1 -1
  166. package/src/api/file/file.service.js +2 -2
  167. package/src/api/instance/instance.controller.js +1 -1
  168. package/src/api/instance/instance.router.js +1 -1
  169. package/src/api/instance/instance.service.js +2 -2
  170. package/src/api/ipfs/ipfs.controller.js +1 -1
  171. package/src/api/ipfs/ipfs.router.js +2 -2
  172. package/src/api/ipfs/ipfs.service.js +2 -2
  173. package/src/api/object-layer/object-layer.controller.js +1 -1
  174. package/src/api/object-layer/object-layer.model.js +47 -12
  175. package/src/api/object-layer/object-layer.router.js +12 -5
  176. package/src/api/object-layer/object-layer.service.js +116 -123
  177. package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +1 -1
  178. package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +1 -1
  179. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +2 -2
  180. package/src/api/test/test.controller.js +1 -1
  181. package/src/api/test/test.service.js +1 -1
  182. package/src/api/user/guest.service.js +3 -3
  183. package/src/api/user/user.controller.js +1 -1
  184. package/src/api/user/user.router.js +2 -2
  185. package/src/api/user/user.service.js +4 -4
  186. package/src/api.js +5 -9
  187. package/src/cli/app.js +402 -0
  188. package/src/cli/baremetal.js +30 -35
  189. package/src/cli/client.js +306 -0
  190. package/src/cli/cloud-init.js +3 -3
  191. package/src/cli/cluster.js +191 -82
  192. package/src/cli/db.js +120 -68
  193. package/src/cli/deploy.js +157 -75
  194. package/src/cli/docker-compose.js +5 -5
  195. package/src/cli/domains.js +184 -0
  196. package/src/cli/dotenv-store.js +143 -0
  197. package/src/cli/event.js +2281 -0
  198. package/src/cli/fs-selection.js +115 -0
  199. package/src/cli/fs.js +159 -343
  200. package/src/cli/host.js +672 -0
  201. package/src/cli/image.js +4 -6
  202. package/src/cli/index.js +343 -151
  203. package/src/cli/ipfs.js +34 -30
  204. package/src/cli/kickstart.js +1 -1
  205. package/src/cli/kubectl.js +218 -41
  206. package/src/cli/lxd.js +3 -3
  207. package/src/cli/monitor.js +1359 -26
  208. package/src/cli/package.js +90 -0
  209. package/src/cli/release.js +16 -12
  210. package/src/cli/repository.js +586 -363
  211. package/src/cli/run.js +398 -843
  212. package/src/cli/secrets.js +2158 -964
  213. package/src/cli/ssh.js +478 -279
  214. package/src/cli/state.js +394 -0
  215. package/src/cli/static.js +2 -2
  216. package/src/cli/system.js +1 -1
  217. package/src/cli/test.js +203 -125
  218. package/src/cli/vultr.js +61 -21
  219. package/src/cli/wireguard.js +1112 -306
  220. package/src/client/components/core/CalendarCore.js +53 -96
  221. package/src/client/components/core/Docs.js +327 -303
  222. package/src/client/components/core/FileExplorer.js +0 -21
  223. package/src/client/components/core/Modal.js +56 -1
  224. package/src/client/components/core/PanelForm.js +4 -4
  225. package/src/client/components/core/Repository.js +56 -0
  226. package/src/client/components/core/Translate.js +7 -0
  227. package/src/client/components/core/{FullScreen.js → ViewModeController.js} +42 -39
  228. package/src/client/components/core/Wallet.js +0 -11
  229. package/src/client/components/core/Worker.js +7 -1
  230. package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +2 -2
  231. package/src/client/components/cyberia/ActionEngineCyberia.js +12 -36
  232. package/src/client/components/cyberia/EntityEngineCyberia.js +492 -121
  233. package/src/client/components/cyberia/InstanceEngineCyberia.js +129 -160
  234. package/src/client/components/cyberia/InstanceSelectionView.js +7 -1
  235. package/src/client/components/cyberia/MapEngineCyberia.js +175 -69
  236. package/src/client/components/cyberia/ObjectLayerEngine.js +1011 -97
  237. package/src/client/components/cyberia/ObjectLayerEngineModal.js +81 -155
  238. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +113 -98
  239. package/src/client/components/cyberia/SharedDefaultsCyberia.js +215 -56
  240. package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +2 -35
  241. package/src/client/components/cyberia-portal/CssCyberiaPortal.js +1 -1
  242. package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +712 -76
  243. package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +2 -2
  244. package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +0 -4
  245. package/src/client/components/default/AppShellDefault.js +1 -1
  246. package/src/client/components/default/SettingsDefault.js +2 -2
  247. package/src/client/components/itemledger/SettingsItemledger.js +2 -2
  248. package/src/client/components/underpost/AppShellUnderpost.js +3 -2
  249. package/src/client/components/underpost/SettingsUnderpost.js +2 -2
  250. package/src/client/public/cyberia-docs/ARCHITECTURE.md +15 -15
  251. package/src/client/public/cyberia-docs/CYBERIA-CLI.md +313 -30
  252. package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +51 -29
  253. package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +52 -53
  254. package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +16 -11
  255. package/src/client/public/cyberia-docs/CYBERIA.md +48 -28
  256. package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +11 -5
  257. package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +23 -6
  258. package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
  259. package/src/client/public/cyberia-docs/STATS-PROGRESSION.md +217 -0
  260. package/src/client/public/cyberia-docs/WHITE-PAPER.md +20 -12
  261. package/src/client/public/default/android-chrome-144x144.png +0 -0
  262. package/src/client/public/default/android-chrome-192x192.png +0 -0
  263. package/src/client/public/default/android-chrome-256x256.png +0 -0
  264. package/src/client/public/default/android-chrome-36x36.png +0 -0
  265. package/src/client/public/default/android-chrome-384x384.png +0 -0
  266. package/src/client/public/default/android-chrome-48x48.png +0 -0
  267. package/src/client/public/default/android-chrome-512x512.png +0 -0
  268. package/src/client/public/default/android-chrome-72x72.png +0 -0
  269. package/src/client/public/default/android-chrome-96x96.png +0 -0
  270. package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
  271. package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
  272. package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
  273. package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
  274. package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
  275. package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
  276. package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
  277. package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
  278. package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
  279. package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
  280. package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
  281. package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
  282. package/src/client/public/default/apple-touch-icon.png +0 -0
  283. package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
  284. package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
  285. package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
  286. package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
  287. package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
  288. package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
  289. package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
  290. package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
  291. package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
  292. package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
  293. package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
  294. package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
  295. package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
  296. package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
  297. package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
  298. package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
  299. package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
  300. package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
  301. package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
  302. package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
  303. package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
  304. package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
  305. package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
  306. package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
  307. package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
  308. package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
  309. package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
  310. package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
  311. package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
  312. package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
  313. package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
  314. package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
  315. package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
  316. package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
  317. package/src/client/public/default/assets/background/white.jpg +0 -0
  318. package/src/client/public/default/browserconfig.xml +1 -1
  319. package/src/client/public/default/favicon-16x16.png +0 -0
  320. package/src/client/public/default/favicon-32x32.png +0 -0
  321. package/src/client/public/default/favicon-48x48.png +0 -0
  322. package/src/client/public/default/favicon.ico +0 -0
  323. package/src/client/public/default/manifest.webmanifest +5 -5
  324. package/src/client/public/default/mstile-144x144.png +0 -0
  325. package/src/client/public/default/mstile-150x150.png +0 -0
  326. package/src/client/public/default/mstile-310x150.png +0 -0
  327. package/src/client/public/default/mstile-310x310.png +0 -0
  328. package/src/client/public/default/mstile-70x70.png +0 -0
  329. package/src/client/public/default/yandex-browser-50x50.png +0 -0
  330. package/src/client/public/default/yandex-browser-manifest.json +1 -1
  331. package/src/client/services/cyberia-audio/cyberia-audio.service.js +99 -0
  332. package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +38 -0
  333. package/src/client/services/cyberia-instance/cyberia-instance.management.js +5 -4
  334. package/src/client/services/cyberia-instance/cyberia-instance.service.js +0 -40
  335. package/src/client/services/cyberia-map/cyberia-map.management.js +5 -4
  336. package/src/client/services/cyberia-map-audio-conf/cyberia-map-audio-conf.service.js +138 -0
  337. package/src/client/services/object-layer/object-layer.management.js +6 -10
  338. package/src/client/services/object-layer/object-layer.service.js +3 -1
  339. package/src/client/ssr/RootDocument.js +1 -1
  340. package/src/client/ssr/body/404.js +1 -1
  341. package/src/client/ssr/body/500.js +1 -1
  342. package/src/client/ssr/body/CacheControl.js +1 -1
  343. package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +1 -1
  344. package/src/client/ssr/body/DefaultSplashScreen.js +1 -1
  345. package/src/client/ssr/body/SwaggerDarkMode.js +1 -1
  346. package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +1 -1
  347. package/src/client/ssr/head/CryptokoynScripts.js +1 -1
  348. package/src/client/ssr/head/Css.js +1 -1
  349. package/src/client/ssr/head/CyberiaPortalScripts.js +1 -1
  350. package/src/client/ssr/head/DefaultScripts.js +1 -1
  351. package/src/client/ssr/head/ItemledgerScripts.js +1 -1
  352. package/src/client/ssr/head/Microdata.js +1 -1
  353. package/src/client/ssr/head/Production.js +1 -1
  354. package/src/client/ssr/head/Pwa.js +1 -1
  355. package/src/client/ssr/head/PwaItemledger.js +1 -1
  356. package/src/client/ssr/head/Seo.js +1 -1
  357. package/src/client/ssr/head/UnderpostScripts.js +1 -1
  358. package/src/client/ssr/mailer/DefaultRecoverEmail.js +1 -1
  359. package/src/client/ssr/mailer/DefaultVerifyEmail.js +1 -1
  360. package/src/client/ssr/views/Cyberia404.js +7 -5
  361. package/src/client/ssr/views/CyberiaServerMetrics.js +1 -1
  362. package/src/client/ssr/views/Maintenance.js +1 -1
  363. package/src/client/ssr/views/NoNetworkConnection.js +1 -1
  364. package/src/client/ssr/views/Test.js +1 -1
  365. package/src/client/sw/core.sw.js +20 -14
  366. package/src/client-builder/client-build-docs.js +92 -77
  367. package/src/client-builder/client-build-live.js +2 -2
  368. package/src/client-builder/client-build.js +105 -74
  369. package/src/client-builder/client-bundle.js +347 -0
  370. package/src/client-builder/client-dev-server.js +3 -3
  371. package/src/client-builder/client-icons.js +2 -2
  372. package/src/client-builder/ssr.js +3 -3
  373. package/src/client.build.js +3 -6
  374. package/src/client.dev.js +3 -6
  375. package/src/db/DataBaseProvider.js +186 -3
  376. package/src/db/mariadb/MariaDB.js +3 -2
  377. package/src/db/mongo/MongoBootstrap.js +273 -101
  378. package/src/db/mongo/MongoExpress.js +187 -0
  379. package/src/db/mongo/MongooseDB.js +7 -8
  380. package/src/{server/valkey.js → db/valkey/Valkey.js} +5 -4
  381. package/src/grpc/cyberia/grpc-server.js +6 -8
  382. package/src/index.js +79 -23
  383. package/src/mailer/EmailRender.js +2 -2
  384. package/src/mailer/MailerInterceptor.js +87 -0
  385. package/src/mailer/MailerProvider.js +50 -6
  386. package/src/projects/cyberia/atlas-sprite-sheet-generator.js +144 -147
  387. package/src/projects/cyberia/atlas-sprite-sheet-store.js +391 -0
  388. package/src/projects/cyberia/besu-genesis-generator.js +8 -17
  389. package/src/projects/cyberia/boot-contract-fixtures.js +32 -0
  390. package/src/projects/cyberia/catalog-cyberia.js +54 -10
  391. package/src/projects/cyberia/gemini-client.js +4 -4
  392. package/src/projects/cyberia/generate-saga.js +5 -12
  393. package/src/projects/cyberia/hot-reload-trigger.js +18 -29
  394. package/src/projects/cyberia/instance-backup.js +210 -0
  395. package/src/projects/cyberia/instance-data.js +178 -258
  396. package/src/projects/cyberia/ipfs-client.js +4 -4
  397. package/src/projects/cyberia/map-preview-generator.js +33 -69
  398. package/src/projects/cyberia/object-layer.js +153 -320
  399. package/src/projects/cyberia/seed-audio.js +139 -0
  400. package/src/projects/cyberia/semantic-layer-generator-skin.js +2 -8
  401. package/src/projects/cyberia/semantic-layer-generator.js +3 -19
  402. package/src/projects/cyberia/stat-balance.js +81 -0
  403. package/src/projects/cyberia/stat-commands.js +23 -0
  404. package/src/projects/cyberia/stat-contract-generator.js +101 -0
  405. package/src/projects/underpost/catalog-underpost.js +9 -1
  406. package/src/proxy.js +4 -7
  407. package/src/runtime/cyberia-client/Dockerfile +17 -8
  408. package/src/runtime/cyberia-client/Dockerfile.dev +13 -4
  409. package/src/runtime/cyberia-server/Dockerfile +18 -6
  410. package/src/runtime/cyberia-server/Dockerfile.dev +16 -3
  411. package/src/runtime/engine-cyberia/Dockerfile +25 -9
  412. package/src/runtime/engine-cyberia/Dockerfile.dev +25 -9
  413. package/src/runtime/engine-cyberia/Dockerfile.test +5 -5
  414. package/src/runtime/engine-cyberia/compose.env +17 -5
  415. package/src/runtime/engine-cyberia/docker-compose.yml +23 -17
  416. package/src/runtime/express/Express.js +32 -27
  417. package/src/runtime/lampp/Lampp.js +22 -70
  418. package/src/runtime/nginx/Nginx.js +1 -1
  419. package/src/runtime/wp/Wp.js +16 -48
  420. package/src/server/{catalog.js → build/catalog.js} +15 -5
  421. package/src/server/build/coverage.js +188 -0
  422. package/src/server/build/execution.js +402 -0
  423. package/src/server/build/package.js +508 -0
  424. package/src/server/build/testing.js +578 -0
  425. package/src/server/{dns.js → network/dns.js} +144 -11
  426. package/src/server/{forward-proxy.js → network/forward-proxy.js} +10 -18
  427. package/src/server/{middlewares.js → network/middlewares.js} +11 -5
  428. package/src/server/network/node-capability.js +98 -0
  429. package/src/server/{peer.js → network/peer.js} +3 -3
  430. package/src/server/{proxy.js → network/proxy.js} +7 -13
  431. package/src/server/network/router.js +356 -0
  432. package/src/server/{tls.js → network/tls.js} +2 -2
  433. package/src/server/{underpost-compression.js → network/underpost-compression.js} +1 -1
  434. package/src/server/{underpost-gateway.js → network/underpost-gateway.js} +7 -7
  435. package/src/server/{underpost-ingress.js → network/underpost-ingress.js} +2 -2
  436. package/src/server/{cri.js → ops/cri.js} +2 -2
  437. package/src/server/{cron.js → ops/cron.js} +349 -74
  438. package/src/server/ops/event-notification.js +284 -0
  439. package/src/server/{logger.js → ops/logger.js} +143 -23
  440. package/src/server/ops/monitoring.js +1724 -0
  441. package/src/server/{systemd.js → ops/systemd.js} +55 -1
  442. package/src/server/{conf.js → runtime/conf.js} +516 -423
  443. package/src/server/runtime/config-scope.js +215 -0
  444. package/src/server/runtime/environment.js +149 -0
  445. package/src/server/{process.js → runtime/process.js} +153 -12
  446. package/src/server/{runtime-status.js → runtime/runtime-status.js} +155 -16
  447. package/src/server/{runtime.js → runtime/runtime.js} +12 -8
  448. package/src/server/{start.js → runtime/start.js} +128 -39
  449. package/src/server/{auth.js → security/auth.js} +7 -8
  450. package/src/server/security/container-storage.js +382 -0
  451. package/src/server/{crypto.js → security/crypto.js} +1 -1
  452. package/src/server/{selinux.js → security/selinux.js} +1 -1
  453. package/src/server/{backup.js → storage/backup.js} +17 -8
  454. package/src/server/{data-query.js → storage/data-query.js} +17 -1
  455. package/src/server/storage/downloader.js +121 -0
  456. package/src/server/storage/repository.js +68 -0
  457. package/src/server/storage/zip.js +153 -0
  458. package/src/server.js +4 -7
  459. package/src/ws/IoInterface.js +1 -1
  460. package/src/ws/IoServer.js +1 -1
  461. package/src/ws/core/core.ws.connection.js +1 -1
  462. package/src/ws/core/core.ws.emit.js +1 -1
  463. package/src/ws/core/core.ws.server.js +1 -1
  464. package/src/ws/default/default.ws.connection.js +1 -1
  465. package/src/ws/default/default.ws.emit.js +1 -1
  466. package/src/ws/default/default.ws.server.js +1 -1
  467. package/test/e2e/event-e2e-public-ingress-down.js +45 -0
  468. package/test/e2e/event-e2e-wireguard-server-down.js +38 -0
  469. package/test/e2e/event-e2e-wireguard-spoke-down.js +40 -0
  470. package/test/{api.test.js → integration/app/api.test.js} +33 -14
  471. package/test/integration/app/cyberia/atlas-sprite-sheet-store.test.js +402 -0
  472. package/test/integration/app/cyberia/atlas-sprite-sheet.test.js +86 -0
  473. package/test/integration/app/cyberia/cyberia-cli-plain-reads.test.js +64 -0
  474. package/test/integration/app/cyberia/cyberia-entity-type-default.test.js +842 -0
  475. package/test/integration/app/cyberia/cyberia-instance-conf-coerce.test.js +53 -0
  476. package/test/{cyberia-instance-conf-defaults.test.js → integration/app/cyberia/cyberia-instance-conf-defaults.test.js} +17 -23
  477. package/test/integration/app/cyberia/cyberia-instance-items.test.js +90 -0
  478. package/test/integration/app/cyberia/cyberia-load.test.js +466 -0
  479. package/test/integration/app/cyberia/cyberia-map-audio-conf.test.js +256 -0
  480. package/test/integration/app/cyberia/cyberia-stats.test.js +150 -0
  481. package/test/integration/app/cyberia/fallback-world-capture.test.js +338 -0
  482. package/test/integration/app/cyberia/object-layer-item-id.test.js +327 -0
  483. package/test/integration/app/cyberia/object-layer-item-selection.test.js +56 -0
  484. package/test/integration/app/cyberia/object-layer-natural-key.test.js +32 -0
  485. package/test/integration/app/cyberia/seed-audio.test.js +275 -0
  486. package/test/{shape-generator.test.js → integration/app/cyberia/shape-generator.test.js} +1 -1
  487. package/test/integration/infra/1-security/config-scope.test.js +305 -0
  488. package/test/integration/infra/1-security/container-storage.test.js +356 -0
  489. package/test/integration/infra/1-security/in-pod-cli-surface.test.js +86 -0
  490. package/test/integration/infra/1-security/secret-onboarding.test.js +930 -0
  491. package/test/{selinux.test.js → integration/infra/1-security/selinux.test.js} +2 -4
  492. package/test/{sops-secret-store.test.js → integration/infra/1-security/sops-secret-store.test.js} +415 -61
  493. package/test/integration/infra/1-security/systemd-service.test.js +70 -0
  494. package/test/integration/infra/1-security/underpost-config-secret.test.js +367 -0
  495. package/test/integration/infra/2-network/dns-firewall.test.js +566 -0
  496. package/test/integration/infra/2-network/node-capability.test.js +182 -0
  497. package/test/integration/infra/2-network/wireguard-cli.test.js +1187 -0
  498. package/test/{wireguard-edge.test.js → integration/infra/2-network/wireguard-edge.test.js} +649 -55
  499. package/test/{cluster-instances.test.js → integration/infra/3-cluster/cluster-instances.test.js} +11 -15
  500. package/test/{deploy-node-placement.test.js → integration/infra/3-cluster/deploy-node-placement.test.js} +3 -3
  501. package/test/integration/infra/3-cluster/docker-compose-stack.test.js +313 -0
  502. package/test/integration/infra/3-cluster/mongo-express-deploy.test.js +156 -0
  503. package/test/integration/infra/4-ingress/api-cross-origin.test.js +79 -0
  504. package/test/integration/infra/4-ingress/deploy-routes.test.js +379 -0
  505. package/test/integration/infra/4-ingress/gateway-static-assets.test.js +453 -0
  506. package/test/{instance-traffic-plan.test.js → integration/infra/4-ingress/instance-traffic-plan.test.js} +10 -6
  507. package/test/{underpost-gateway.test.js → integration/infra/4-ingress/underpost-gateway.test.js} +6 -6
  508. package/test/{underpost-ingress.test.js → integration/infra/4-ingress/underpost-ingress.test.js} +4 -4
  509. package/test/integration/infra/5-observability/cron-jobs.test.js +652 -0
  510. package/test/{deploy-monitor.test.js → integration/infra/5-observability/deploy-monitor.test.js} +29 -31
  511. package/test/integration/infra/5-observability/event-notification.test.js +197 -0
  512. package/test/integration/infra/5-observability/event-remediation.test.js +502 -0
  513. package/test/integration/infra/5-observability/event-targets.test.js +1174 -0
  514. package/test/integration/infra/5-observability/monitoring-stack.test.js +902 -0
  515. package/test/support/shell-harness.js +73 -0
  516. package/test/unit/build-template.test.js +97 -0
  517. package/test/unit/build-workflow-offline.test.js +132 -0
  518. package/test/unit/catalog.test.js +71 -0
  519. package/test/unit/client-build-docs.test.js +361 -0
  520. package/test/unit/client-bundle.test.js +313 -0
  521. package/test/unit/conf-loading.test.js +303 -0
  522. package/test/unit/conf-resolution.test.js +996 -0
  523. package/test/unit/coverage-artifact.test.js +221 -0
  524. package/test/{crypto.test.js → unit/crypto.test.js} +1 -1
  525. package/test/unit/cyberia/instance-backup.test.js +183 -0
  526. package/test/unit/cyberia/instance-object-layer-items.test.js +46 -0
  527. package/test/unit/cyberia/publish-workflow.test.js +22 -0
  528. package/test/unit/cyberia/stat-balance.test.js +69 -0
  529. package/test/unit/deploy-env-resolution.test.js +38 -0
  530. package/test/unit/deploy-log-table.test.js +518 -0
  531. package/test/unit/downloader-integrity.test.js +98 -0
  532. package/test/unit/execution-profiles.test.js +219 -0
  533. package/test/unit/file-reference-registry.test.js +141 -0
  534. package/test/unit/fleet-sync-source.test.js +149 -0
  535. package/test/unit/fs-storage-paths.test.js +596 -0
  536. package/test/unit/logger-redaction.test.js +141 -0
  537. package/test/unit/package.test.js +457 -0
  538. package/test/unit/prepare-host.test.js +382 -0
  539. package/test/unit/process-environment.test.js +18 -0
  540. package/test/unit/propagation-message.test.js +78 -0
  541. package/test/unit/redeploy-plan.test.js +24 -0
  542. package/test/unit/release-bump.test.js +474 -0
  543. package/test/unit/ssh-output-redaction.test.js +28 -0
  544. package/test/unit/start-options.test.js +46 -0
  545. package/test/unit/test-tiers.test.js +220 -0
  546. package/test/unit/zip-archive.test.js +142 -0
  547. package/vitest.config.js +66 -0
  548. package/.nycrc +0 -9
  549. package/deploy/lib/logging.sh +0 -96
  550. package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +0 -48
  551. package/manifests/mongodb/pv-pvc.yaml +0 -59
  552. package/scripts/coverall-test-cyberia.sh +0 -24
  553. package/scripts/coverall-test.sh +0 -24
  554. package/scripts/link-local-underpost-cli.sh +0 -6
  555. package/src/api/cyberia-instance/cyberia-fallback-default-items.js +0 -63
  556. package/src/api/user/user.build.js +0 -16
  557. package/src/cli/env.js +0 -177
  558. package/src/client/components/core/Blockchain.js +0 -41
  559. package/src/client/components/core/Blog.js +0 -9
  560. package/src/client/components/core/KeyboardAvoidance.js +0 -145
  561. package/src/client/components/cyberia/FallbackWorldEngineCyberia.js +0 -368
  562. package/src/client/public/default/assets/background/dark.jpg +0 -0
  563. package/src/client/public/default/assets/background/white0-min.jpg +0 -0
  564. package/src/client/public/default/assets/background/white0.jpg +0 -0
  565. package/src/client/public/doc/favicon.ico +0 -0
  566. package/src/client/public/doc/sitemap +0 -148
  567. package/src/server/downloader.js +0 -73
  568. package/src/server/environment.js +0 -98
@@ -4,6 +4,7 @@ metadata:
4
4
  name: mongo-express
5
5
  labels:
6
6
  app: mongo-express
7
+ group: db
7
8
  spec:
8
9
  replicas: 1
9
10
  selector:
@@ -13,25 +14,27 @@ spec:
13
14
  metadata:
14
15
  labels:
15
16
  app: mongo-express
17
+ group: db
16
18
  spec:
17
19
  containers:
18
20
  - name: mongo-express
19
- image: mongo-express
21
+ image: mongo-express:1.0.2
20
22
  ports:
21
23
  - containerPort: 8081
22
24
  env:
23
- # - name: ME_CONFIG_MONGODB_ADMINUSERNAME
24
- # valueFrom:
25
- # secretKeyRef:
26
- # name: mongodb-secret
27
- # key: username
28
- # - name: ME_CONFIG_MONGODB_ADMINPASSWORD
29
- # valueFrom:
30
- # secretKeyRef:
31
- # name: mongodb-secret
32
- # key: password
33
- - name: ME_CONFIG_SITE_BASEURL
34
- value: '/mongo/'
25
+ # Both credential pairs come from the one `mongodb-secret` the StatefulSet already
26
+ # consumes: the UI authenticates to mongod with the root credentials, and gates its
27
+ # own session behind the same pair rather than the image's admin/pass defaults.
28
+ - name: ME_CONFIG_MONGODB_ADMINUSERNAME
29
+ valueFrom:
30
+ secretKeyRef:
31
+ name: mongodb-secret
32
+ key: username
33
+ - name: ME_CONFIG_MONGODB_ADMINPASSWORD
34
+ valueFrom:
35
+ secretKeyRef:
36
+ name: mongodb-secret
37
+ key: password
35
38
  - name: ME_CONFIG_BASICAUTH_USERNAME
36
39
  valueFrom:
37
40
  secretKeyRef:
@@ -42,21 +45,37 @@ spec:
42
45
  secretKeyRef:
43
46
  name: mongodb-secret
44
47
  key: password
48
+ - name: ME_CONFIG_SITE_BASEURL
49
+ value: '/mongo/'
50
+ # In-cluster identity of the first replica, identical under Kind, Kubeadm and K3s.
51
+ # The driver reads the replica set config from it and reaches the remaining members
52
+ # through the same headless service.
45
53
  - name: ME_CONFIG_MONGODB_SERVER
46
54
  value: 'mongodb-0.mongodb-service'
47
- # - name: ME_CONFIG_MONGODB_ENABLE_ADMIN
48
- # value: 'true'
49
55
  - name: ME_CONFIG_MONGODB_PORT
50
56
  value: '27017'
51
- ---
52
- apiVersion: v1
53
- kind: Service
54
- metadata:
55
- name: mongo-express-service
56
- spec:
57
- selector:
58
- app: mongo-express
59
- ports:
60
- - protocol: TCP
61
- port: 8081
62
- targetPort: 8081
57
+ - name: ME_CONFIG_MONGODB_AUTH_DATABASE
58
+ value: 'admin'
59
+ # Without this the UI only lists the databases named in its config; the point of the
60
+ # deployment is browsing whatever collections the StatefulSet actually holds.
61
+ - name: ME_CONFIG_MONGODB_ENABLE_ADMIN
62
+ value: 'true'
63
+ readinessProbe:
64
+ tcpSocket:
65
+ port: 8081
66
+ initialDelaySeconds: 10
67
+ periodSeconds: 10
68
+ timeoutSeconds: 5
69
+ livenessProbe:
70
+ tcpSocket:
71
+ port: 8081
72
+ initialDelaySeconds: 30
73
+ periodSeconds: 20
74
+ timeoutSeconds: 5
75
+ resources:
76
+ requests:
77
+ cpu: '50m'
78
+ memory: '128Mi'
79
+ limits:
80
+ cpu: '500m'
81
+ memory: '256Mi'
@@ -0,0 +1,9 @@
1
+ ---
2
+ # kubectl apply -k manifests/deployment/mongo-express/.
3
+ apiVersion: kustomize.config.k8s.io/v1beta1
4
+ kind: Kustomization
5
+ resources:
6
+ # mongo-express-nodeport.yaml is intentionally absent: host/public exposure of an admin UI is
7
+ # opt-in, applied by `cluster --mongo-express --node-port` once the pod reports Ready.
8
+ - deployment.yaml
9
+ - service.yaml
@@ -0,0 +1,18 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ name: mongo-express-nodeport
5
+ labels:
6
+ app: mongo-express
7
+ group: db
8
+ spec:
9
+ type: NodePort
10
+ externalTrafficPolicy: Cluster
11
+ selector:
12
+ app: mongo-express
13
+ ports:
14
+ - name: mongo-express
15
+ protocol: TCP
16
+ port: 8081
17
+ targetPort: 8081
18
+ nodePort: 32081
@@ -0,0 +1,16 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ name: mongo-express-service
5
+ labels:
6
+ app: mongo-express
7
+ group: db
8
+ spec:
9
+ type: ClusterIP
10
+ selector:
11
+ app: mongo-express
12
+ ports:
13
+ - name: mongo-express
14
+ protocol: TCP
15
+ port: 8081
16
+ targetPort: 8081
@@ -0,0 +1,16 @@
1
+ apiVersion: apps/v1
2
+ kind: Deployment
3
+ metadata:
4
+ name: mongo-express
5
+ spec:
6
+ template:
7
+ spec:
8
+ containers:
9
+ - name: mongo-express
10
+ env:
11
+ - name: ME_CONFIG_MONGODB_ADMINUSERNAME
12
+ $patch: delete
13
+ - name: ME_CONFIG_MONGODB_ADMINPASSWORD
14
+ $patch: delete
15
+ - name: ME_CONFIG_MONGODB_AUTH_DATABASE
16
+ $patch: delete
@@ -0,0 +1,16 @@
1
+ ---
2
+ # kubectl apply -k manifests/deployment/mongo-express-no-auth/.
3
+ # Overlay of manifests/deployment/mongo-express for a mongod started without --auth
4
+ # (manifests/mongodb-4.4). Credentials sent to a server that enforces none are not ignored: the
5
+ # driver still runs SCRAM and the handshake fails, so the admin pair is dropped rather than left
6
+ # resolving against a secret the server never checks. `cluster --mongo-express` selects between
7
+ # this overlay and the base from the deployed StatefulSet's own mongod arguments.
8
+ #
9
+ # A sibling of the base rather than a child of it: kustomize rejects an overlay nested inside the
10
+ # root it extends as a cycle.
11
+ apiVersion: kustomize.config.k8s.io/v1beta1
12
+ kind: Kustomization
13
+ resources:
14
+ - ../mongo-express
15
+ patches:
16
+ - path: disable-mongodb-auth.yaml
@@ -6,6 +6,9 @@ metadata:
6
6
  app: grafana
7
7
  name: grafana
8
8
  spec:
9
+ # Never run two Grafana processes against the same local data directory.
10
+ strategy:
11
+ type: Recreate
9
12
  selector:
10
13
  matchLabels:
11
14
  app: grafana
@@ -21,13 +24,11 @@ spec:
21
24
  containers:
22
25
  - name: grafana
23
26
  image: grafana/grafana:latest
24
- env:
25
- # - name: GF_SERVER_ROOT_URL
26
- # value: '{{GF_SERVER_ROOT_URL}}'
27
- - name: GF_SERVER_ROOT_URL
28
- value: '/grafana'
29
- - name: GF_SERVER_SERVE_FROM_SUB_PATH
30
- value: 'true'
27
+ # GF_SERVER_ROOT_URL and GF_SERVER_SERVE_FROM_SUB_PATH are deliberately
28
+ # absent: Grafana builds every asset link and redirect from them, so
29
+ # their value depends on how it is published. `monitor --observability`
30
+ # sets both from the resolved exposure, which is the one place that
31
+ # knows.
31
32
  imagePullPolicy: IfNotPresent
32
33
  ports:
33
34
  - containerPort: 3000
@@ -58,7 +59,25 @@ spec:
58
59
  volumeMounts:
59
60
  - mountPath: /var/lib/grafana
60
61
  name: grafana-pv
62
+ - mountPath: /etc/grafana/provisioning/datasources
63
+ name: grafana-datasources
64
+ readOnly: true
65
+ - mountPath: /etc/grafana/provisioning/dashboards
66
+ name: grafana-dashboard-provider
67
+ readOnly: true
68
+ - mountPath: /var/lib/grafana/dashboards
69
+ name: grafana-dashboards
70
+ readOnly: true
61
71
  volumes:
62
72
  - name: grafana-pv
63
73
  persistentVolumeClaim:
64
74
  claimName: grafana-pvc
75
+ - name: grafana-datasources
76
+ configMap:
77
+ name: grafana-datasources
78
+ - name: grafana-dashboard-provider
79
+ configMap:
80
+ name: grafana-dashboard-provider
81
+ - name: grafana-dashboards
82
+ configMap:
83
+ name: grafana-dashboards
@@ -5,3 +5,4 @@ resources:
5
5
  - storage-class.yaml
6
6
  - pvc.yaml
7
7
  - service.yaml
8
+ - deployment.yaml
@@ -11,4 +11,9 @@ spec:
11
11
  selector:
12
12
  app: grafana
13
13
  sessionAffinity: None
14
- type: LoadBalancer
14
+ # ClusterIP: this Service is what Prometheus' provisioned datasource and the
15
+ # edge route resolve. Browser access is a separate decision, published by
16
+ # `monitor --grafana-host` (edge route) or `--node-port` (LAN), so a cluster
17
+ # with no LoadBalancer controller does not sit on a Service that never gets an
18
+ # address.
19
+ type: ClusterIP
@@ -10,3 +10,4 @@ spec:
10
10
  - ReadWriteOnce
11
11
  hostPath:
12
12
  path: /data/mariadb
13
+ type: DirectoryOrCreate
@@ -55,6 +55,12 @@ spec:
55
55
  - '--keyFile'
56
56
  - '/opt/mongodb/mongodb-keyfile'
57
57
  - '--bind_ip_all'
58
+ # Pinned, not inferred. mongod sizes its cache from the cgroup limit and lands on
59
+ # the 256MB floor, which leaves no headroom for a `mongodump` running in this same
60
+ # container — the dump gets OOM-killed (exit 137), the container restarts, and the
61
+ # replica set re-elects mid-backup.
62
+ - '--wiredTigerCacheSizeGB'
63
+ - '0.25'
58
64
 
59
65
  ports:
60
66
  - containerPort: 27017
@@ -91,10 +97,11 @@ spec:
91
97
  resources:
92
98
  requests:
93
99
  cpu: '100m'
94
- memory: '256Mi'
100
+ memory: '512Mi'
95
101
  limits:
96
102
  cpu: '500m'
97
- memory: '512Mi'
103
+ # 256MB WiredTiger cache + connections + an in-container mongodump/mongorestore.
104
+ memory: '1536Mi'
98
105
  volumes:
99
106
  - name: raw-secret-keyfile-volume
100
107
  secret:
@@ -1,4 +1,9 @@
1
1
  # pv-pvc.yaml
2
+ # The host path lives under /data, the node storage root this platform owns and labels
3
+ # `container_file_t`; a path outside it (the previous '/mnt/data') carries the policy default and
4
+ # is unreadable to the unprivileged container. `claimRef` pins the volume to exactly one claim —
5
+ # without it this PV and postgres-pv-volume were interchangeable `manual`-class volumes over the
6
+ # same directory, so either database could bind either one and both could land on one data tree.
2
7
  apiVersion: v1
3
8
  kind: PersistentVolume
4
9
  metadata:
@@ -7,12 +12,19 @@ metadata:
7
12
  type: local
8
13
  spec:
9
14
  storageClassName: manual
15
+ persistentVolumeReclaimPolicy: Retain
10
16
  capacity:
11
17
  storage: 20Gi
12
18
  accessModes:
13
19
  - ReadWriteOnce
20
+ claimRef:
21
+ apiVersion: v1
22
+ kind: PersistentVolumeClaim
23
+ namespace: default
24
+ name: mysql-pv-claim
14
25
  hostPath:
15
- path: '/mnt/data'
26
+ path: '/data/mysql'
27
+ type: DirectoryOrCreate
16
28
  ---
17
29
  apiVersion: v1
18
30
  kind: PersistentVolumeClaim
@@ -20,6 +32,7 @@ metadata:
20
32
  name: mysql-pv-claim
21
33
  spec:
22
34
  storageClassName: manual
35
+ volumeName: mysql-pv
23
36
  accessModes:
24
37
  - ReadWriteOnce
25
38
  resources:
@@ -1,3 +1,7 @@
1
+ # The host path lives under /data, the node storage root this platform owns and labels
2
+ # `container_file_t`. `claimRef` pins the volume to exactly one claim: this PV and mysql-pv were
3
+ # previously interchangeable `manual`-class volumes over the same '/mnt/data' directory, so either
4
+ # database could bind either one and both could end up writing one data tree.
1
5
  kind: PersistentVolume
2
6
  apiVersion: v1
3
7
  metadata:
@@ -7,9 +11,16 @@ metadata:
7
11
  app: postgres
8
12
  spec:
9
13
  storageClassName: manual
14
+ persistentVolumeReclaimPolicy: Retain
10
15
  capacity:
11
16
  storage: 5Gi
12
17
  accessModes:
13
18
  - ReadWriteMany
19
+ claimRef:
20
+ apiVersion: v1
21
+ kind: PersistentVolumeClaim
22
+ namespace: default
23
+ name: postgres-pv-claim
14
24
  hostPath:
15
- path: '/mnt/data'
25
+ path: '/data/postgresql'
26
+ type: DirectoryOrCreate
@@ -6,6 +6,7 @@ metadata:
6
6
  app: postgres
7
7
  spec:
8
8
  storageClassName: manual
9
+ volumeName: postgres-pv-volume
9
10
  accessModes:
10
11
  - ReadWriteMany
11
12
  resources:
@@ -1,25 +1,3 @@
1
- ---
2
- apiVersion: v1
3
- kind: ConfigMap
4
- metadata:
5
- name: prometheus-config
6
- labels:
7
- app: prometheus
8
- data:
9
- prometheus.yml: |
10
- global:
11
- scrape_interval: 30s
12
- evaluation_interval: 30s
13
-
14
- scrape_configs:
15
- - job_name: 'scraper'
16
- metrics_path: /metrics
17
- scheme: https
18
- static_configs:
19
- - targets: []
20
- # tls_config:
21
- # insecure_skip_verify: true
22
-
23
1
  ---
24
2
  apiVersion: apps/v1
25
3
  kind: Deployment
@@ -37,6 +15,7 @@ spec:
37
15
  labels:
38
16
  app: prometheus
39
17
  spec:
18
+ serviceAccountName: prometheus
40
19
  containers:
41
20
  - name: prometheus
42
21
  image: prom/prometheus:latest
@@ -51,8 +30,22 @@ spec:
51
30
  volumeMounts:
52
31
  - name: prometheus-config
53
32
  mountPath: /etc/prometheus/
33
+ - name: prometheus-rules
34
+ mountPath: /etc/prometheus/rules/
54
35
  - name: prometheus-data
55
36
  mountPath: /prometheus
37
+ readinessProbe:
38
+ httpGet:
39
+ path: /-/ready
40
+ port: 9090
41
+ initialDelaySeconds: 10
42
+ periodSeconds: 15
43
+ livenessProbe:
44
+ httpGet:
45
+ path: /-/healthy
46
+ port: 9090
47
+ initialDelaySeconds: 30
48
+ periodSeconds: 20
56
49
  resources:
57
50
  requests:
58
51
  memory: '200Mi'
@@ -61,6 +54,9 @@ spec:
61
54
  - name: prometheus-config
62
55
  configMap:
63
56
  name: prometheus-config
57
+ - name: prometheus-rules
58
+ configMap:
59
+ name: prometheus-rules
64
60
  - name: prometheus-data
65
61
  emptyDir: {}
66
62
 
package/package.json CHANGED
@@ -2,13 +2,13 @@
2
2
  "type": "module",
3
3
  "main": "src/index.js",
4
4
  "name": "@underpostnet/cyberia",
5
- "version": "3.3.0",
5
+ "version": "3.3.76",
6
6
  "description": "Cyberia CLI — toolchain for the Cyberia MMO data layer, content pipeline, persistence, gRPC services, and ERC-1155 lifecycle on Hyperledger Besu.",
7
7
  "scripts": {
8
8
  "start": "node --max-old-space-size=8192 src/server",
9
9
  "build": "node bin client",
10
- "test": "NODE_ENV=test c8 mocha",
11
- "test:monitor": "NODE_ENV=test c8 mocha test/deploy-monitor.test.js",
10
+ "test": "node bin test",
11
+ "test:coverage": "COVERAGE_ENFORCE=1 node bin test unit,infra,app,cyberia",
12
12
  "dev": "NODE_ENV=development nodemon src/server",
13
13
  "dev:container": "NODE_ENV=development node src/server",
14
14
  "prod:container": "NODE_ENV=production node src/server",
@@ -17,7 +17,7 @@
17
17
  "dev:proxy": "NODE_ENV=development node src/proxy proxy",
18
18
  "docs": "typedoc --options typedoc.json",
19
19
  "install:global": "npm install -g prettier",
20
- "install:test": "npm install -g mocha && npm install -g c8 && npm install -g coveralls-next",
20
+ "install:test": "npm install -g coveralls-next",
21
21
  "install": "npm run install:global && npm run install:test",
22
22
  "prettier": "prettier --write .",
23
23
  "fix": "npm audit fix --force && npm audit",
@@ -26,7 +26,6 @@
26
26
  "security:secrets:ci": "gitleaks detect --source . --config .gitleaks.toml --redact=1",
27
27
  "security:deps": "npm audit",
28
28
  "security": "npm run security:secrets:ci && npm run security:deps",
29
- "clean": "node bin env clean && node bin run clean",
30
29
  "docker:generate": "node bin docker-compose --generate --deploy-id dd-cyberia --docker-compose-id cyberia",
31
30
  "docker:up": "node bin docker-compose --up --deploy-id dd-cyberia --docker-compose-id cyberia",
32
31
  "docker:up:build": "node bin docker-compose --up --build --deploy-id dd-cyberia --docker-compose-id cyberia",
@@ -41,7 +40,8 @@
41
40
  "docker:reset": "node bin docker-compose --reset --deploy-id dd-cyberia --docker-compose-id cyberia"
42
41
  },
43
42
  "bin": {
44
- "cyberia": "bin/index.js"
43
+ "cyberia": "bin/index.js",
44
+ "underpost": "bin/index.js"
45
45
  },
46
46
  "repository": {
47
47
  "type": "git",
@@ -72,12 +72,11 @@
72
72
  },
73
73
  "homepage": "https://github.com/underpostnet/engine-cyberia#readme",
74
74
  "dependencies": {
75
- "underpost": "^3.3.0",
76
- "adm-zip": "^0.6.0",
75
+ "underpost": "^3.3.76",
77
76
  "maxrects-packer": "^2.7.3",
78
77
  "pngjs": "^7.0.0",
79
78
  "jimp": "^1.6.0",
80
- "sharp": "^0.34.5",
79
+ "sharp": "^0.35.4",
81
80
  "ethers": "~6.16.0"
82
81
  },
83
82
  "publishConfig": {
@@ -90,12 +89,88 @@
90
89
  "minimatch": "^10.2.2",
91
90
  "glob": "^11.0.0",
92
91
  "diff": ">=8.0.3",
93
- "js-yaml": ">=3.14.2",
92
+ "js-yaml": "$js-yaml",
94
93
  "debug": ">=4.3.6",
95
94
  "serialize-javascript": ">=7.0.5",
96
95
  "router": {
97
96
  "path-to-regexp": ">=8.4.0"
98
97
  },
99
- "ws": "^8.20.2"
98
+ "ws": "^8.20.2",
99
+ "qs": ">=6.16.0",
100
+ "sharp": "^0.35.4"
101
+ },
102
+ "devDependencies": {
103
+ "@fortawesome/fontawesome-free": "^7.3.1",
104
+ "@fullcalendar/rrule": "^7.1.0",
105
+ "@grpc/grpc-js": "^1.14.4",
106
+ "@grpc/proto-loader": "^0.8.1",
107
+ "@neodrag/vanilla": "^2.3.1",
108
+ "@vitest/coverage-v8": "5.0.0",
109
+ "ag-grid-community": "^36.1.0",
110
+ "allure-vitest": "3.12.0",
111
+ "axios": "^1.20.0",
112
+ "bumpp": "^12.3.0",
113
+ "chai": "^6.2.2",
114
+ "clipboardy": "^5.3.2",
115
+ "cloudinary": "^2.11.0",
116
+ "colors": "^1.4.0",
117
+ "commander": "^15.0.0",
118
+ "compression": "^1.7.4",
119
+ "cookie-parser": "^1.4.7",
120
+ "cors": "^2.8.6",
121
+ "d3": "^7.9.0",
122
+ "dexie": "^4.4.5",
123
+ "dotenv": "^17.4.2",
124
+ "easymde": "^2.21.0",
125
+ "esbuild": "^0.28.2",
126
+ "escape-string-regexp": "^5.0.0",
127
+ "express": "^5.2.1",
128
+ "express-fileupload": "^1.4.3",
129
+ "express-rate-limit": "^8.7.0",
130
+ "express-slow-down": "^3.1.1",
131
+ "fast-json-stable-stringify": "^2.1.0",
132
+ "favicons": "^7.3.1",
133
+ "fs-extra": "^11.4.0",
134
+ "fullcalendar": "^7.1.0",
135
+ "helmet": "^8.3.0",
136
+ "html-minifier-terser": "^7.2.0",
137
+ "http-proxy-middleware": "^4.2.0",
138
+ "ignore-walk": "^9.0.0",
139
+ "iovalkey": "^0.4.0",
140
+ "js-yaml": "^5.4.1",
141
+ "json-colorizer": "^3.0.1",
142
+ "jsonwebtoken": "^9.0.3",
143
+ "jszip": "^3.10.2",
144
+ "mariadb": "^3.5.4",
145
+ "marked": "^18.0.11",
146
+ "mongoose": "^9.9.5",
147
+ "morgan": "^1.12.0",
148
+ "nodemailer": "^10.0.0",
149
+ "nodemon": "^3.0.1",
150
+ "peer": "^1.0.2",
151
+ "peerjs": "^1.5.5",
152
+ "prom-client": "^15.1.2",
153
+ "read": "^6.0.0",
154
+ "rrule": "^2.8.1",
155
+ "shelljs": "^0.10.0",
156
+ "sitemap": "^9.0.1",
157
+ "socket.io": "^4.8.3",
158
+ "sortablejs": "^1.15.0",
159
+ "split-file": "^2.3.0",
160
+ "swagger-autogen": "^2.23.7",
161
+ "swagger-ui-express": "^5.0.0",
162
+ "typedoc": "^0.28.20",
163
+ "typescript": "6.0.3",
164
+ "validator": "^13.15.35",
165
+ "vanilla-jsoneditor": "^3.13.0",
166
+ "vitest": "5.0.0",
167
+ "winston": "^3.19.0",
168
+ "workbox-background-sync": "^7.4.1",
169
+ "workbox-cacheable-response": "^7.4.1",
170
+ "workbox-core": "^7.4.1",
171
+ "workbox-expiration": "^7.4.1",
172
+ "workbox-precaching": "^7.4.1",
173
+ "workbox-routing": "^7.4.1",
174
+ "workbox-strategies": "^7.4.1"
100
175
  }
101
- }
176
+ }
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ NAMESPACE="${NAMESPACE:-default}"
5
+ TARGET_URL="${TARGET_URL:-https://underpost.net/}"
6
+ ENVOY_NAMESPACE="${ENVOY_NAMESPACE:-envoy-gateway-system}"
7
+
8
+ COLOR_CYAN='\033[0;36m'
9
+ COLOR_GREEN='\033[0;32m'
10
+ COLOR_YELLOW='\033[1;33m'
11
+ COLOR_RED='\033[0;31m'
12
+ COLOR_NC='\033[0m'
13
+
14
+ echo -e "${COLOR_CYAN}=== 1. Active Probes Status (Prometheus Instant Query) ===${COLOR_NC}"
15
+ kubectl exec -n "$NAMESPACE" deployment/prometheus -c prometheus -- \
16
+ promtool query instant http://localhost:9090 'probe_success' || true
17
+
18
+ echo -e "\n${COLOR_CYAN}=== 2. Currently Firing Alerts ===${COLOR_NC}"
19
+ kubectl exec -n "$NAMESPACE" deployment/prometheus -c prometheus -- \
20
+ promtool query instant http://localhost:9090 'ALERTS{alertstate="firing"}' || true
21
+
22
+ echo -e "\n${COLOR_CYAN}=== 3. Blackbox Exporter Live Test (${TARGET_URL}) ===${COLOR_NC}"
23
+ ENCODED_URL=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$TARGET_URL', safe=''))" 2>/dev/null || echo "https%3A%2F%2Funderpost.net%2F")
24
+ kubectl get --raw "/api/v1/namespaces/$NAMESPACE/services/blackbox-exporter:9115/proxy/probe?module=http_2xx&target=${ENCODED_URL}" | grep -E "probe_success|probe_http_status_code" || true
25
+
26
+ echo -e "\n${COLOR_CYAN}=== 4. Prometheus Logs (Rule Evaluation & Scraping) ===${COLOR_NC}"
27
+ kubectl logs -n "$NAMESPACE" -l app=prometheus --tail=50 --all-containers=true
28
+
29
+ echo -e "\n${COLOR_CYAN}=== 5. Alertmanager Logs (Notifications & Dispatch) ===${COLOR_NC}"
30
+ kubectl logs -n "$NAMESPACE" -l app=alertmanager --tail=50 --all-containers=true
31
+
32
+ echo -e "\n${COLOR_CYAN}=== 6. Blackbox Exporter Logs (ICMP/HTTP Probes Execution) ===${COLOR_NC}"
33
+ kubectl logs -n "$NAMESPACE" -l app=blackbox-exporter --tail=50 --all-containers=true
34
+
35
+ echo -e "\n${COLOR_CYAN}=== 7. WireGuard Interface Status ===${COLOR_NC}"
36
+ if command -v wg &> /dev/null; then
37
+ echo -e "${COLOR_YELLOW}[Host WireGuard Status]${COLOR_NC}"
38
+ wg show || true
39
+
40
+ echo -e "\n${COLOR_YELLOW}[WireGuard Systemd Services]${COLOR_NC}"
41
+ systemctl list-units --type=service 'wg-quick*' --no-pager || true
42
+ else
43
+ echo -e "${COLOR_YELLOW}'wg' CLI tool is not installed on the host.${COLOR_NC}"
44
+ fi
45
+
46
+ echo -e "\n${COLOR_CYAN}=== 8. Ingress & Gateway Diagnostics ===${COLOR_NC}"
47
+ if kubectl get ns "$ENVOY_NAMESPACE" &>/dev/null; then
48
+ echo -e "${COLOR_YELLOW}[Targeting namespace: ${ENVOY_NAMESPACE}]${COLOR_NC}"
49
+ kubectl get pods -n "$ENVOY_NAMESPACE" || true
50
+ else
51
+ echo -e "${COLOR_YELLOW}[Namespace '${ENVOY_NAMESPACE}' not found. Searching cluster-wide for Ingress/Envoy resources...]${COLOR_NC}"
52
+ kubectl get pods -A -l "app.kubernetes.io/name in (envoy-gateway, envoy, ingress-nginx, ingress)" 2>/dev/null || \
53
+ kubectl get pods -A | grep -E "envoy|ingress|gateway" || true
54
+ fi
55
+
56
+ echo -e "\n${COLOR_GREEN}Done checking cluster monitoring state.${COLOR_NC}"