@underpostnet/cyberia 3.2.80
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.
- package/.dockerignore +14 -0
- package/.env.example +144 -0
- package/.github/workflows/cyberia-client.cd.yml +40 -0
- package/.github/workflows/cyberia-server.cd.yml +40 -0
- package/.github/workflows/docker-image.cyberia-client.ci.yml +71 -0
- package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +70 -0
- package/.github/workflows/docker-image.cyberia-server.ci.yml +71 -0
- package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +71 -0
- package/.github/workflows/docker-image.engine-cyberia.ci.yml +53 -0
- package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +53 -0
- package/.github/workflows/engine-cyberia.cd.yml +157 -0
- package/.github/workflows/engine-cyberia.ci.yml +125 -0
- package/.github/workflows/ghpkg.ci.yml +160 -0
- package/.github/workflows/gitlab.ci.yml +20 -0
- package/.github/workflows/hardhat.ci.yml +82 -0
- package/.github/workflows/npmpkg.ci.yml +126 -0
- package/.github/workflows/publish.ci.yml +87 -0
- package/.github/workflows/publish.cyberia.ci.yml +79 -0
- package/.github/workflows/pwa-microservices-template-page.cd.yml +65 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +33 -0
- package/.github/workflows/release.cd.yml +46 -0
- package/.nycrc +9 -0
- package/.prettierignore +12 -0
- package/.prettierrc +9 -0
- package/.vscode/extensions.json +10 -0
- package/.vscode/settings.json +26 -0
- package/CHANGELOG.md +2516 -0
- package/CLI-HELP.md +1099 -0
- package/Dockerfile +161 -0
- package/Dockerfile.dev +161 -0
- package/Dockerfile.test +165 -0
- package/LICENSE +21 -0
- package/README.md +259 -0
- package/baremetal/commission-workflows.json +211 -0
- package/baremetal/packer-workflows.json +24 -0
- package/bin/build.js +261 -0
- package/bin/build.template.js +33 -0
- package/bin/cyberia.js +5627 -0
- package/bin/deploy.js +1547 -0
- package/bin/index.js +5627 -0
- package/bump.config.js +27 -0
- package/compose.env +144 -0
- package/conf.js +952 -0
- package/deployment.yaml +418 -0
- package/docker-compose.yml +434 -0
- package/examples/static-page/README.md +150 -0
- package/examples/static-page/ssr-components/CustomPage.js +554 -0
- package/examples/static-page/static-config-example.json +57 -0
- package/hardhat/.env.example +31 -0
- package/hardhat/contracts/ObjectLayerToken.sol +391 -0
- package/hardhat/deployments/.gitkeep +0 -0
- package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
- package/hardhat/hardhat.config.js +136 -0
- package/hardhat/ignition/modules/.gitkeep +0 -0
- package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
- package/hardhat/networks/besu-object-layer.network.json +138 -0
- package/hardhat/package-lock.json +2871 -0
- package/hardhat/package.json +43 -0
- package/hardhat/scripts/deployObjectLayerToken.js +98 -0
- package/hardhat/test/ObjectLayerToken.js +696 -0
- package/hardhat/types/ethers-contracts/ObjectLayerToken.ts +690 -0
- package/hardhat/types/ethers-contracts/common.ts +92 -0
- package/hardhat/types/ethers-contracts/factories/ObjectLayerToken__factory.ts +1055 -0
- package/hardhat/types/ethers-contracts/factories/index.ts +4 -0
- package/hardhat/types/ethers-contracts/hardhat.d.ts +47 -0
- package/hardhat/types/ethers-contracts/index.ts +6 -0
- package/ipfs/configure-ipfs.sh +13 -0
- package/jsconfig.json +9 -0
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +48 -0
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +48 -0
- package/manifests/deployment/adminer/deployment.yaml +32 -0
- package/manifests/deployment/adminer/kustomization.yaml +7 -0
- package/manifests/deployment/adminer/service.yaml +13 -0
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +418 -0
- package/manifests/deployment/dd-cyberia-development/grpc-service.yaml +17 -0
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +189 -0
- package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +164 -0
- package/manifests/deployment/dd-default-development/deployment.yaml +163 -0
- package/manifests/deployment/dd-default-development/proxy.yaml +46 -0
- package/manifests/deployment/fastapi/backend-deployment.yml +120 -0
- package/manifests/deployment/fastapi/backend-service.yml +19 -0
- package/manifests/deployment/fastapi/frontend-deployment.yml +54 -0
- package/manifests/deployment/fastapi/frontend-service.yml +15 -0
- package/manifests/deployment/fastapi/initial_data.sh +8 -0
- package/manifests/deployment/kafka/deployment.yaml +67 -0
- package/manifests/deployment/mongo-express/deployment.yaml +62 -0
- package/manifests/deployment/phpmyadmin/deployment.yaml +54 -0
- package/manifests/deployment/playwright/deployment.yaml +52 -0
- package/manifests/deployment/spark/spark-pi-py.yaml +20 -0
- package/manifests/deployment/tensorflow/tf-gpu-test.yaml +63 -0
- package/manifests/envoy-service-nodeport.yaml +22 -0
- package/manifests/grafana/deployment.yaml +64 -0
- package/manifests/grafana/kustomization.yaml +7 -0
- package/manifests/grafana/pvc.yaml +12 -0
- package/manifests/grafana/service.yaml +14 -0
- package/manifests/grafana/storage-class.yaml +9 -0
- package/manifests/ipfs/configmap.yaml +64 -0
- package/manifests/ipfs/headless-service.yaml +35 -0
- package/manifests/ipfs/kustomization.yaml +8 -0
- package/manifests/ipfs/statefulset.yaml +149 -0
- package/manifests/ipfs/storage-class.yaml +9 -0
- package/manifests/kind-config-dev.yaml +20 -0
- package/manifests/kind-config.yaml +12 -0
- package/manifests/kubeadm-calico-config.yaml +14 -0
- package/manifests/letsencrypt-prod.yaml +14 -0
- package/manifests/lxd/lxd-admin-profile.yaml +26 -0
- package/manifests/lxd/lxd-preseed.yaml +30 -0
- package/manifests/mariadb/kustomization.yaml +9 -0
- package/manifests/mariadb/pv.yaml +12 -0
- package/manifests/mariadb/pvc.yaml +10 -0
- package/manifests/mariadb/service.yaml +10 -0
- package/manifests/mariadb/statefulset.yaml +56 -0
- package/manifests/mariadb/storage-class.yaml +10 -0
- package/manifests/mongodb/headless-service.yaml +10 -0
- package/manifests/mongodb/kustomization.yaml +11 -0
- package/manifests/mongodb/pv-pvc.yaml +59 -0
- package/manifests/mongodb/statefulset.yaml +113 -0
- package/manifests/mongodb/storage-class.yaml +9 -0
- package/manifests/mongodb-4.4/headless-service.yaml +10 -0
- package/manifests/mongodb-4.4/kustomization.yaml +9 -0
- package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +19 -0
- package/manifests/mongodb-4.4/service-deployment.yaml +61 -0
- package/manifests/mongodb-4.4/statefulset.yaml +79 -0
- package/manifests/mongodb-4.4/storage-class.yaml +9 -0
- package/manifests/mysql/kustomization.yaml +7 -0
- package/manifests/mysql/pv-pvc.yaml +27 -0
- package/manifests/mysql/statefulset.yaml +55 -0
- package/manifests/postgresql/configmap.yaml +9 -0
- package/manifests/postgresql/kustomization.yaml +10 -0
- package/manifests/postgresql/pv.yaml +15 -0
- package/manifests/postgresql/pvc.yaml +13 -0
- package/manifests/postgresql/service.yaml +10 -0
- package/manifests/postgresql/statefulset.yaml +37 -0
- package/manifests/prometheus/deployment.yaml +82 -0
- package/manifests/pv-pvc-dd.yaml +34 -0
- package/manifests/valkey/kustomization.yaml +7 -0
- package/manifests/valkey/service.yaml +10 -0
- package/manifests/valkey/statefulset.yaml +37 -0
- package/manifests/valkey/valkey-nodeport.yaml +17 -0
- package/mongodb/entrypoint.sh +76 -0
- package/nginx.conf +128 -0
- package/nodemon.json +6 -0
- package/package.json +101 -0
- package/packer/images/Rocky9Amd64/Makefile +62 -0
- package/packer/images/Rocky9Amd64/QUICKSTART.md +113 -0
- package/packer/images/Rocky9Amd64/README.md +122 -0
- package/packer/images/Rocky9Amd64/http/rocky9.ks.pkrtpl.hcl +114 -0
- package/packer/images/Rocky9Amd64/rocky9.pkr.hcl +164 -0
- package/packer/images/Rocky9Arm64/Makefile +69 -0
- package/packer/images/Rocky9Arm64/README.md +122 -0
- package/packer/images/Rocky9Arm64/http/rocky9.ks.pkrtpl.hcl +114 -0
- package/packer/images/Rocky9Arm64/rocky9.pkr.hcl +171 -0
- package/packer/scripts/fuse-nbd +64 -0
- package/packer/scripts/fuse-tar-root +63 -0
- package/proxy.yaml +189 -0
- package/pv-pvc.yaml +164 -0
- package/scripts/device-scan.sh +65 -0
- package/scripts/disk-clean.sh +182 -0
- package/scripts/disk-devices.sh +13 -0
- package/scripts/gen-fqdns.sh +14 -0
- package/scripts/gpu-diag.sh +19 -0
- package/scripts/ip-info.sh +118 -0
- package/scripts/ipxe-setup.sh +200 -0
- package/scripts/k3s-node-setup.sh +124 -0
- package/scripts/kubeadm-node-setup.sh +317 -0
- package/scripts/link-local-underpost-cli.sh +6 -0
- package/scripts/lxd-vm-setup.sh +208 -0
- package/scripts/maas-nat-firewalld.sh +145 -0
- package/scripts/maas-setup.sh +135 -0
- package/scripts/maas-upload-boot-resource.sh +183 -0
- package/scripts/nat-iptables.sh +111 -0
- package/scripts/nvim.sh +91 -0
- package/scripts/packer-init-vars-file.sh +40 -0
- package/scripts/packer-setup.sh +289 -0
- package/scripts/ports-ls.sh +33 -0
- package/scripts/quick-tftp.sh +19 -0
- package/scripts/rhel-grpc-setup.sh +56 -0
- package/scripts/rocky-kickstart.sh +986 -0
- package/scripts/rocky-pwa.sh +200 -0
- package/scripts/rocky-setup.sh +106 -0
- package/scripts/rpmfusion-ffmpeg-setup.sh +32 -0
- package/scripts/ssl.sh +170 -0
- package/scripts/test-monitor.sh +248 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +30 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +155 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +39 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +382 -0
- package/src/api/core/core.controller.js +8 -0
- package/src/api/core/core.model.js +11 -0
- package/src/api/core/core.router.js +23 -0
- package/src/api/core/core.service.js +30 -0
- package/src/api/crypto/crypto.controller.js +10 -0
- package/src/api/crypto/crypto.model.js +23 -0
- package/src/api/crypto/crypto.router.js +23 -0
- package/src/api/crypto/crypto.service.js +64 -0
- package/src/api/cyberia-action/cyberia-action.controller.js +8 -0
- package/src/api/cyberia-action/cyberia-action.model.js +79 -0
- package/src/api/cyberia-action/cyberia-action.router.js +21 -0
- package/src/api/cyberia-action/cyberia-action.service.js +58 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +27 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +100 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +70 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +8 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +36 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +20 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +57 -0
- package/src/api/cyberia-entity/cyberia-entity.controller.js +6 -0
- package/src/api/cyberia-entity/cyberia-entity.model.js +25 -0
- package/src/api/cyberia-entity/cyberia-entity.router.js +17 -0
- package/src/api/cyberia-entity/cyberia-entity.service.js +42 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +6 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +67 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +17 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +46 -0
- package/src/api/cyberia-instance/cyberia-fallback-world.js +337 -0
- package/src/api/cyberia-instance/cyberia-instance-boot.service.js +57 -0
- package/src/api/cyberia-instance/cyberia-instance-map.service.js +583 -0
- package/src/api/cyberia-instance/cyberia-instance.controller.js +42 -0
- package/src/api/cyberia-instance/cyberia-instance.model.js +117 -0
- package/src/api/cyberia-instance/cyberia-instance.router.js +75 -0
- package/src/api/cyberia-instance/cyberia-instance.service.js +190 -0
- package/src/api/cyberia-instance/cyberia-portal-connector.js +260 -0
- package/src/api/cyberia-instance/cyberia-world-generator.js +618 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +6 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +200 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +17 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +46 -0
- package/src/api/cyberia-map/cyberia-map.controller.js +6 -0
- package/src/api/cyberia-map/cyberia-map.model.js +33 -0
- package/src/api/cyberia-map/cyberia-map.router.js +19 -0
- package/src/api/cyberia-map/cyberia-map.service.js +76 -0
- package/src/api/cyberia-quest/cyberia-quest.controller.js +9 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +26 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +97 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +6 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +21 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/cyberia-saga/cyberia-saga.controller.js +6 -0
- package/src/api/cyberia-saga/cyberia-saga.model.js +59 -0
- package/src/api/cyberia-saga/cyberia-saga.router.js +17 -0
- package/src/api/cyberia-saga/cyberia-saga.service.js +42 -0
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +1076 -0
- package/src/api/cyberia-skill/cyberia-skill.controller.js +6 -0
- package/src/api/cyberia-skill/cyberia-skill.model.js +50 -0
- package/src/api/cyberia-skill/cyberia-skill.router.js +17 -0
- package/src/api/cyberia-skill/cyberia-skill.service.js +42 -0
- package/src/api/default/default.controller.js +6 -0
- package/src/api/default/default.model.js +20 -0
- package/src/api/default/default.router.js +21 -0
- package/src/api/default/default.service.js +42 -0
- package/src/api/document/document.controller.js +9 -0
- package/src/api/document/document.model.js +95 -0
- package/src/api/document/document.router.js +32 -0
- package/src/api/document/document.service.js +633 -0
- package/src/api/file/file.controller.js +15 -0
- package/src/api/file/file.model.js +127 -0
- package/src/api/file/file.ref.json +39 -0
- package/src/api/file/file.router.js +36 -0
- package/src/api/file/file.service.js +499 -0
- package/src/api/instance/instance.controller.js +8 -0
- package/src/api/instance/instance.model.js +34 -0
- package/src/api/instance/instance.router.js +27 -0
- package/src/api/instance/instance.service.js +75 -0
- package/src/api/ipfs/ipfs.controller.js +8 -0
- package/src/api/ipfs/ipfs.model.js +77 -0
- package/src/api/ipfs/ipfs.router.js +26 -0
- package/src/api/ipfs/ipfs.service.js +145 -0
- package/src/api/object-layer/object-layer.controller.js +18 -0
- package/src/api/object-layer/object-layer.model.js +200 -0
- package/src/api/object-layer/object-layer.router.js +729 -0
- package/src/api/object-layer/object-layer.service.js +894 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +6 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +93 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +17 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +46 -0
- package/src/api/test/test.controller.js +14 -0
- package/src/api/test/test.model.js +14 -0
- package/src/api/test/test.router.js +23 -0
- package/src/api/test/test.service.js +35 -0
- package/src/api/types.js +24 -0
- package/src/api/user/guest.service.js +100 -0
- package/src/api/user/postman_collection.json +216 -0
- package/src/api/user/user.build.js +16 -0
- package/src/api/user/user.controller.js +35 -0
- package/src/api/user/user.model.js +142 -0
- package/src/api/user/user.router.js +367 -0
- package/src/api/user/user.service.js +582 -0
- package/src/api.js +23 -0
- package/src/cli/baremetal.js +3947 -0
- package/src/cli/cloud-init.js +673 -0
- package/src/cli/cluster.js +1395 -0
- package/src/cli/db.js +1533 -0
- package/src/cli/deploy.js +1542 -0
- package/src/cli/docker-compose.js +802 -0
- package/src/cli/env.js +177 -0
- package/src/cli/fs.js +380 -0
- package/src/cli/image.js +389 -0
- package/src/cli/index.js +1059 -0
- package/src/cli/ipfs.js +182 -0
- package/src/cli/kickstart.js +271 -0
- package/src/cli/kubectl.js +214 -0
- package/src/cli/lxd.js +1232 -0
- package/src/cli/monitor.js +659 -0
- package/src/cli/release.js +595 -0
- package/src/cli/repository.js +1969 -0
- package/src/cli/run.js +3326 -0
- package/src/cli/secrets.js +151 -0
- package/src/cli/ssh.js +975 -0
- package/src/cli/static.js +653 -0
- package/src/cli/system.js +332 -0
- package/src/cli/test.js +176 -0
- package/src/client/Cryptokoyn.index.js +30 -0
- package/src/client/CyberiaPortal.index.js +31 -0
- package/src/client/Default.index.js +77 -0
- package/src/client/Itemledger.index.js +35 -0
- package/src/client/Underpost.index.js +31 -0
- package/src/client/components/core/404.js +20 -0
- package/src/client/components/core/500.js +20 -0
- package/src/client/components/core/Account.js +630 -0
- package/src/client/components/core/AgGrid.js +238 -0
- package/src/client/components/core/Alert.js +76 -0
- package/src/client/components/core/AppStore.js +69 -0
- package/src/client/components/core/Auth.js +353 -0
- package/src/client/components/core/Badge.js +26 -0
- package/src/client/components/core/Blockchain.js +41 -0
- package/src/client/components/core/Blog.js +9 -0
- package/src/client/components/core/BtnIcon.js +109 -0
- package/src/client/components/core/CalendarCore.js +437 -0
- package/src/client/components/core/Chat.js +62 -0
- package/src/client/components/core/ClientEvents.js +163 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/CommonJs.js +1014 -0
- package/src/client/components/core/Content.js +349 -0
- package/src/client/components/core/Css.js +1134 -0
- package/src/client/components/core/CssCore.js +881 -0
- package/src/client/components/core/D3Chart.js +44 -0
- package/src/client/components/core/Docs.js +478 -0
- package/src/client/components/core/DropDown.js +321 -0
- package/src/client/components/core/EventBus.js +96 -0
- package/src/client/components/core/EventsUI.js +130 -0
- package/src/client/components/core/FileExplorer.js +1406 -0
- package/src/client/components/core/FullScreen.js +201 -0
- package/src/client/components/core/Input.js +537 -0
- package/src/client/components/core/Keyboard.js +80 -0
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +152 -0
- package/src/client/components/core/LogIn.js +212 -0
- package/src/client/components/core/LogOut.js +72 -0
- package/src/client/components/core/Logger.js +22 -0
- package/src/client/components/core/Modal.js +2956 -0
- package/src/client/components/core/NotificationManager.js +80 -0
- package/src/client/components/core/Pagination.js +252 -0
- package/src/client/components/core/Panel.js +1308 -0
- package/src/client/components/core/PanelForm.js +915 -0
- package/src/client/components/core/Polyhedron.js +947 -0
- package/src/client/components/core/PublicProfile.js +895 -0
- package/src/client/components/core/Recover.js +211 -0
- package/src/client/components/core/Responsive.js +146 -0
- package/src/client/components/core/RichText.js +33 -0
- package/src/client/components/core/Router.js +523 -0
- package/src/client/components/core/Scroll.js +76 -0
- package/src/client/components/core/SearchBox.js +1007 -0
- package/src/client/components/core/SignUp.js +153 -0
- package/src/client/components/core/SocketIo.js +163 -0
- package/src/client/components/core/SocketIoHandler.js +75 -0
- package/src/client/components/core/Stream.js +161 -0
- package/src/client/components/core/ToggleSwitch.js +89 -0
- package/src/client/components/core/ToolTip.js +78 -0
- package/src/client/components/core/Translate.js +694 -0
- package/src/client/components/core/Validator.js +140 -0
- package/src/client/components/core/VanillaJs.js +485 -0
- package/src/client/components/core/Wallet.js +95 -0
- package/src/client/components/core/WebComponent.js +44 -0
- package/src/client/components/core/Webhook.js +58 -0
- package/src/client/components/core/Worker.js +313 -0
- package/src/client/components/core/windowGetDimensions.js +269 -0
- package/src/client/components/cryptokoyn/AppShellCryptokoyn.js +352 -0
- package/src/client/components/cryptokoyn/AppStoreCryptokoyn.js +5 -0
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +212 -0
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +16 -0
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +12 -0
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +16 -0
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +11 -0
- package/src/client/components/cryptokoyn/SocketIoCryptokoyn.js +6 -0
- package/src/client/components/cyberia/ActionEngineCyberia.js +1867 -0
- package/src/client/components/cyberia/EntityEngineCyberia.js +585 -0
- package/src/client/components/cyberia/InstanceEngineCyberia.js +1088 -0
- package/src/client/components/cyberia/InstanceSelectionView.js +900 -0
- package/src/client/components/cyberia/MapEngineCyberia.js +1976 -0
- package/src/client/components/cyberia/ObjectLayerEngine.js +1540 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +2420 -0
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +1522 -0
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +528 -0
- package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +772 -0
- package/src/client/components/cyberia-portal/AppStoreCyberiaPortal.js +5 -0
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +254 -0
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +21 -0
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +16 -0
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +518 -0
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +72 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +16 -0
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +13 -0
- package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +6 -0
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +48 -0
- package/src/client/components/default/AppShellDefault.js +765 -0
- package/src/client/components/default/AppStoreDefault.js +5 -0
- package/src/client/components/default/CommonDefault.js +29 -0
- package/src/client/components/default/CssDefault.js +27 -0
- package/src/client/components/default/LogInDefault.js +16 -0
- package/src/client/components/default/LogOutDefault.js +12 -0
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +16 -0
- package/src/client/components/default/SignUpDefault.js +11 -0
- package/src/client/components/default/SocketIoDefault.js +6 -0
- package/src/client/components/default/TranslateDefault.js +7 -0
- package/src/client/components/itemledger/AppShellItemledger.js +353 -0
- package/src/client/components/itemledger/AppStoreItemledger.js +5 -0
- package/src/client/components/itemledger/CssItemledger.js +212 -0
- package/src/client/components/itemledger/LogInItemledger.js +17 -0
- package/src/client/components/itemledger/LogOutItemledger.js +12 -0
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +16 -0
- package/src/client/components/itemledger/SignUpItemledger.js +11 -0
- package/src/client/components/itemledger/SocketIoItemledger.js +6 -0
- package/src/client/components/itemledger/TranslateItemledger.js +7 -0
- package/src/client/components/underpost/AppShellUnderpost.js +691 -0
- package/src/client/components/underpost/AppStoreUnderpost.js +5 -0
- package/src/client/components/underpost/CssUnderpost.js +281 -0
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +879 -0
- package/src/client/components/underpost/DocumentSearchProvider.js +448 -0
- package/src/client/components/underpost/LabGalleryUnderpost.js +79 -0
- package/src/client/components/underpost/LogInUnderpost.js +25 -0
- package/src/client/components/underpost/LogOutUnderpost.js +17 -0
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +16 -0
- package/src/client/components/underpost/SignUpUnderpost.js +11 -0
- package/src/client/components/underpost/SocketIoUnderpost.js +6 -0
- package/src/client/components/underpost/TranslateUnderpost.js +10 -0
- package/src/client/public/cryptokoyn/assets/banner/koyn-social.png +0 -0
- package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
- package/src/client/public/cryptokoyn/assets/logo/cryptokoyn.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-192x192.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-256x256.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-36x36.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-48x48.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-72x72.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-96x96.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-114x114-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-120x120-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-144x144-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-152x152-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-180x180-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-57x57-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-60x60-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-72x72-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-76x76-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/favicon-16x16.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/favicon-32x32.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-150x150.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-310x150.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-310x310.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-70x70.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/safari-pinned-tab.svg +42 -0
- package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
- package/src/client/public/cryptokoyn/favicon.ico +0 -0
- package/src/client/public/cryptokoyn/microdata.json +85 -0
- package/src/client/public/cryptokoyn/site.webmanifest +57 -0
- package/src/client/public/cryptokoyn/sitemap +148 -0
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +307 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +309 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +204 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +341 -0
- package/src/client/public/cyberia-docs/CYBERIA-LORE.md +84 -0
- package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +394 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +294 -0
- package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +242 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +309 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +228 -0
- package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
- package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +740 -0
- package/src/client/public/default/android-chrome-144x144.png +0 -0
- package/src/client/public/default/android-chrome-192x192.png +0 -0
- package/src/client/public/default/android-chrome-256x256.png +0 -0
- package/src/client/public/default/android-chrome-36x36.png +0 -0
- package/src/client/public/default/android-chrome-384x384.png +0 -0
- package/src/client/public/default/android-chrome-48x48.png +0 -0
- package/src/client/public/default/android-chrome-512x512.png +0 -0
- package/src/client/public/default/android-chrome-72x72.png +0 -0
- package/src/client/public/default/android-chrome-96x96.png +0 -0
- package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/default/assets/background/dark.jpg +0 -0
- package/src/client/public/default/assets/background/dark.svg +557 -0
- package/src/client/public/default/assets/background/white.jpg +0 -0
- package/src/client/public/default/assets/background/white0-min.jpg +0 -0
- package/src/client/public/default/assets/background/white0.jpg +0 -0
- package/src/client/public/default/assets/logo/base-icon.png +0 -0
- package/src/client/public/default/assets/logo/underpost.gif +0 -0
- package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-default-avatar.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
- package/src/client/public/default/browserconfig.xml +12 -0
- package/src/client/public/default/favicon-16x16.png +0 -0
- package/src/client/public/default/favicon-32x32.png +0 -0
- package/src/client/public/default/favicon-48x48.png +0 -0
- package/src/client/public/default/favicon.ico +0 -0
- package/src/client/public/default/manifest.webmanifest +69 -0
- package/src/client/public/default/mstile-144x144.png +0 -0
- package/src/client/public/default/mstile-150x150.png +0 -0
- package/src/client/public/default/mstile-310x150.png +0 -0
- package/src/client/public/default/mstile-310x310.png +0 -0
- package/src/client/public/default/mstile-70x70.png +0 -0
- package/src/client/public/default/safari-pinned-tab.svg +24 -0
- package/src/client/public/default/site.webmanifest +69 -0
- package/src/client/public/default/sitemap +148 -0
- package/src/client/public/default/yandex-browser-50x50.png +0 -0
- package/src/client/public/default/yandex-browser-manifest.json +9 -0
- package/src/client/public/doc/favicon.ico +0 -0
- package/src/client/public/doc/sitemap +148 -0
- package/src/client/public/itemledger/android-chrome-144x144.png +0 -0
- package/src/client/public/itemledger/android-chrome-192x192.png +0 -0
- package/src/client/public/itemledger/android-chrome-256x256.png +0 -0
- package/src/client/public/itemledger/android-chrome-36x36.png +0 -0
- package/src/client/public/itemledger/android-chrome-384x384.png +0 -0
- package/src/client/public/itemledger/android-chrome-48x48.png +0 -0
- package/src/client/public/itemledger/android-chrome-512x512.png +0 -0
- package/src/client/public/itemledger/android-chrome-72x72.png +0 -0
- package/src/client/public/itemledger/android-chrome-96x96.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/itemledger/assets/logo/base-icon.png +0 -0
- package/src/client/public/itemledger/browserconfig.xml +12 -0
- package/src/client/public/itemledger/favicon-16x16.png +0 -0
- package/src/client/public/itemledger/favicon-32x32.png +0 -0
- package/src/client/public/itemledger/favicon-48x48.png +0 -0
- package/src/client/public/itemledger/favicon.ico +0 -0
- package/src/client/public/itemledger/manifest.webmanifest +69 -0
- package/src/client/public/itemledger/microdata.json +71 -0
- package/src/client/public/itemledger/mstile-144x144.png +0 -0
- package/src/client/public/itemledger/mstile-150x150.png +0 -0
- package/src/client/public/itemledger/mstile-310x150.png +0 -0
- package/src/client/public/itemledger/mstile-310x310.png +0 -0
- package/src/client/public/itemledger/mstile-70x70.png +0 -0
- package/src/client/public/itemledger/sitemap +148 -0
- package/src/client/public/itemledger/yandex-browser-50x50.png +0 -0
- package/src/client/public/itemledger/yandex-browser-manifest.json +9 -0
- package/src/client/public/test/favicon.ico +0 -0
- package/src/client/public/test/sitemap +148 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +137 -0
- package/src/client/services/core/core.service.js +309 -0
- package/src/client/services/crypto/crypto.service.js +68 -0
- package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
- package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +99 -0
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +57 -0
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +99 -0
- package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +99 -0
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +194 -0
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +137 -0
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +99 -0
- package/src/client/services/cyberia-map/cyberia-map.management.js +193 -0
- package/src/client/services/cyberia-map/cyberia-map.service.js +120 -0
- package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
- package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
- package/src/client/services/cyberia-saga/cyberia-saga.service.js +99 -0
- package/src/client/services/cyberia-skill/cyberia-skill.service.js +99 -0
- package/src/client/services/default/default.management.js +1015 -0
- package/src/client/services/default/default.service.js +99 -0
- package/src/client/services/document/document.service.js +134 -0
- package/src/client/services/file/file.service.js +94 -0
- package/src/client/services/instance/instance.management.js +78 -0
- package/src/client/services/instance/instance.service.js +107 -0
- package/src/client/services/ipfs/ipfs.service.js +118 -0
- package/src/client/services/object-layer/object-layer.management.js +414 -0
- package/src/client/services/object-layer/object-layer.service.js +208 -0
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +99 -0
- package/src/client/services/test/test.service.js +68 -0
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +51 -0
- package/src/client/services/user/user.service.js +106 -0
- package/src/client/ssr/RootDocument.js +237 -0
- package/src/client/ssr/body/404.js +77 -0
- package/src/client/ssr/body/500.js +76 -0
- package/src/client/ssr/body/CacheControl.js +117 -0
- package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +97 -0
- package/src/client/ssr/body/DefaultSplashScreen.js +97 -0
- package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +90 -0
- package/src/client/ssr/head/CryptokoynScripts.js +4 -0
- package/src/client/ssr/head/Css.js +241 -0
- package/src/client/ssr/head/CyberiaPortalScripts.js +6 -0
- package/src/client/ssr/head/DefaultScripts.js +6 -0
- package/src/client/ssr/head/ItemledgerScripts.js +4 -0
- package/src/client/ssr/head/Microdata.js +11 -0
- package/src/client/ssr/head/Production.js +1 -0
- package/src/client/ssr/head/Pwa.js +146 -0
- package/src/client/ssr/head/PwaItemledger.js +197 -0
- package/src/client/ssr/head/Seo.js +15 -0
- package/src/client/ssr/head/UnderpostScripts.js +6 -0
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +20 -0
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +16 -0
- package/src/client/ssr/views/Cyberia404.js +328 -0
- package/src/client/ssr/views/CyberiaServerMetrics.js +1070 -0
- package/src/client/ssr/views/Maintenance.js +64 -0
- package/src/client/ssr/views/NoNetworkConnection.js +68 -0
- package/src/client/ssr/views/Test.js +199 -0
- package/src/client/sw/core.sw.js +274 -0
- package/src/client-builder/client-build-docs.js +493 -0
- package/src/client-builder/client-build-live.js +100 -0
- package/src/client-builder/client-build.js +1092 -0
- package/src/client-builder/client-dev-server.js +88 -0
- package/src/client-builder/client-formatted.js +170 -0
- package/src/client-builder/client-icons.js +108 -0
- package/src/client-builder/ssr.js +124 -0
- package/src/client.build.js +17 -0
- package/src/client.dev.js +21 -0
- package/src/db/DataBaseProvider.js +213 -0
- package/src/db/mariadb/MariaDB.js +72 -0
- package/src/db/mongo/MongoBootstrap.js +657 -0
- package/src/db/mongo/MongooseDB.js +199 -0
- package/src/grpc/cyberia/grpc-server.js +162 -0
- package/src/index.js +357 -0
- package/src/mailer/EmailRender.js +116 -0
- package/src/mailer/MailerProvider.js +213 -0
- package/src/projects/cyberia/atlas-sprite-sheet-generator.js +413 -0
- package/src/projects/cyberia/besu-genesis-generator.js +1630 -0
- package/src/projects/cyberia/catalog-cyberia.js +90 -0
- package/src/projects/cyberia/gemini-client.js +175 -0
- package/src/projects/cyberia/generate-saga.js +2137 -0
- package/src/projects/cyberia/hot-reload-trigger.js +163 -0
- package/src/projects/cyberia/instance-data.js +719 -0
- package/src/projects/cyberia/ipfs-client.js +599 -0
- package/src/projects/cyberia/map-preview-generator.js +304 -0
- package/src/projects/cyberia/object-layer.js +978 -0
- package/src/projects/cyberia/semantic-layer-generator-floor.js +319 -0
- package/src/projects/cyberia/semantic-layer-generator-resource.js +259 -0
- package/src/projects/cyberia/semantic-layer-generator-skin.js +1164 -0
- package/src/projects/cyberia/semantic-layer-generator.js +753 -0
- package/src/projects/cyberia/shape-generator.js +1060 -0
- package/src/projects/underpost/catalog-underpost.js +60 -0
- package/src/proxy.js +19 -0
- package/src/runtime/cyberia-client/Dockerfile +49 -0
- package/src/runtime/cyberia-client/Dockerfile.dev +75 -0
- package/src/runtime/cyberia-server/Dockerfile +43 -0
- package/src/runtime/cyberia-server/Dockerfile.dev +56 -0
- package/src/runtime/engine-cyberia/Dockerfile +161 -0
- package/src/runtime/engine-cyberia/Dockerfile.dev +161 -0
- package/src/runtime/engine-cyberia/Dockerfile.test +165 -0
- package/src/runtime/engine-cyberia/compose.env +144 -0
- package/src/runtime/engine-cyberia/docker-compose.yml +434 -0
- package/src/runtime/engine-cyberia/ipfs/configure-ipfs.sh +13 -0
- package/src/runtime/engine-cyberia/mongodb/entrypoint.sh +76 -0
- package/src/runtime/engine-cyberia/nginx.conf +128 -0
- package/src/runtime/express/Dockerfile +45 -0
- package/src/runtime/express/Express.js +285 -0
- package/src/runtime/lampp/Dockerfile +62 -0
- package/src/runtime/lampp/Lampp.js +359 -0
- package/src/runtime/nginx/Nginx.js +250 -0
- package/src/runtime/wp/Dockerfile +62 -0
- package/src/runtime/wp/Wp.js +642 -0
- package/src/server/auth.js +713 -0
- package/src/server/backup.js +102 -0
- package/src/server/catalog.js +72 -0
- package/src/server/conf.js +2316 -0
- package/src/server/cron.js +476 -0
- package/src/server/crypto.js +210 -0
- package/src/server/data-query.js +461 -0
- package/src/server/dns.js +553 -0
- package/src/server/downloader.js +73 -0
- package/src/server/logger.js +229 -0
- package/src/server/middlewares.js +152 -0
- package/src/server/peer.js +75 -0
- package/src/server/process.js +299 -0
- package/src/server/proxy.js +139 -0
- package/src/server/runtime-status.js +252 -0
- package/src/server/runtime.js +183 -0
- package/src/server/start.js +272 -0
- package/src/server/tls.js +254 -0
- package/src/server/valkey.js +201 -0
- package/src/server.js +25 -0
- package/src/ws/IoInterface.js +129 -0
- package/src/ws/IoServer.js +68 -0
- package/src/ws/core/channels/core.ws.chat.js +68 -0
- package/src/ws/core/channels/core.ws.mailer.js +116 -0
- package/src/ws/core/channels/core.ws.stream.js +90 -0
- package/src/ws/core/core.ws.connection.js +41 -0
- package/src/ws/core/core.ws.emit.js +37 -0
- package/src/ws/core/core.ws.server.js +44 -0
- package/src/ws/default/channels/default.ws.main.js +57 -0
- package/src/ws/default/default.ws.connection.js +35 -0
- package/src/ws/default/default.ws.emit.js +14 -0
- package/src/ws/default/default.ws.server.js +39 -0
- package/test/api.test.js +53 -0
- package/test/crypto.test.js +117 -0
- package/test/cyberia-instance-conf-defaults.test.js +140 -0
- package/test/deploy-monitor.test.js +267 -0
- package/test/shape-generator.test.js +463 -0
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +31 -0
- package/typedoc.json +31 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Underpost platform content catalog — the base `pwa-microservices-template`.
|
|
3
|
+
*
|
|
4
|
+
* @module src/projects/underpost/catalog-underpost.js
|
|
5
|
+
* @namespace UnderpostCatalog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Workflow + service files re-added to the template after the engine-only strip.
|
|
10
|
+
* @constant {string[]}
|
|
11
|
+
* @memberof UnderpostCatalog
|
|
12
|
+
*/
|
|
13
|
+
const TEMPLATE_RESTORE_PATHS = [
|
|
14
|
+
`./.github/workflows/pwa-microservices-template-page.cd.yml`,
|
|
15
|
+
`./.github/workflows/pwa-microservices-template-test.ci.yml`,
|
|
16
|
+
`./.github/workflows/npmpkg.ci.yml`,
|
|
17
|
+
`./.github/workflows/ghpkg.ci.yml`,
|
|
18
|
+
`./.github/workflows/gitlab.ci.yml`,
|
|
19
|
+
`./.github/workflows/publish.ci.yml`,
|
|
20
|
+
`./.github/workflows/release.cd.yml`,
|
|
21
|
+
`./src/client/services/user/guest.service.js`,
|
|
22
|
+
'./src/api/user/guest.service.js',
|
|
23
|
+
'./src/ws/IoInterface.js',
|
|
24
|
+
'./src/ws/IoServer.js',
|
|
25
|
+
'./manifests/deployment/dd-default-development',
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* npm keywords for the standalone Underpost platform / template package.
|
|
30
|
+
* @constant {string[]}
|
|
31
|
+
* @memberof UnderpostCatalog
|
|
32
|
+
*/
|
|
33
|
+
const TEMPLATE_KEYWORDS = [
|
|
34
|
+
'underpost',
|
|
35
|
+
'underpost-platform',
|
|
36
|
+
'cli',
|
|
37
|
+
'toolchain',
|
|
38
|
+
'ci-cd',
|
|
39
|
+
'devops',
|
|
40
|
+
'kubernetes',
|
|
41
|
+
'k3s',
|
|
42
|
+
'kubeadm',
|
|
43
|
+
'lxd',
|
|
44
|
+
'baremetal',
|
|
45
|
+
'container-orchestration',
|
|
46
|
+
'image-management',
|
|
47
|
+
'pwa',
|
|
48
|
+
'workbox',
|
|
49
|
+
'microservices',
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* npm description for the standalone Underpost platform / template package.
|
|
54
|
+
* @constant {string}
|
|
55
|
+
* @memberof UnderpostCatalog
|
|
56
|
+
*/
|
|
57
|
+
const TEMPLATE_DESCRIPTION =
|
|
58
|
+
'Underpost Platform — end-to-end CI/CD and application-delivery toolchain CLI. Covers bare metal, Kubernetes, K3s, kubeadm, LXD, container/image orchestration, secrets, databases, cron jobs, monitoring, SSH, runners, PWA + Workbox delivery, and release orchestration. Extensible via downstream CLIs.';
|
|
59
|
+
|
|
60
|
+
export { TEMPLATE_RESTORE_PATHS, TEMPLATE_KEYWORDS, TEMPLATE_DESCRIPTION };
|
package/src/proxy.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// https://nodejs.org/api
|
|
4
|
+
// https://expressjs.com/en/4x/api.html
|
|
5
|
+
|
|
6
|
+
import { loggerFactory } from './server/logger.js';
|
|
7
|
+
import { buildProxy } from './server/proxy.js';
|
|
8
|
+
import { ProcessController } from './server/process.js';
|
|
9
|
+
import { Config } from './server/conf.js';
|
|
10
|
+
|
|
11
|
+
await Config.build(process.argv[2], process.argv[3], process.argv[4]);
|
|
12
|
+
|
|
13
|
+
const logger = loggerFactory(import.meta);
|
|
14
|
+
|
|
15
|
+
await logger.setUpInfo();
|
|
16
|
+
|
|
17
|
+
await buildProxy();
|
|
18
|
+
|
|
19
|
+
ProcessController.init(logger);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# BUILD_MODE: RELEASE | DEBUG
|
|
2
|
+
ARG BUILD_MODE=RELEASE
|
|
3
|
+
|
|
4
|
+
# --- Build Image ---
|
|
5
|
+
FROM emscripten/emsdk:5.0.6 AS builder
|
|
6
|
+
|
|
7
|
+
ARG BUILD_MODE=RELEASE
|
|
8
|
+
|
|
9
|
+
WORKDIR /cyberia-client
|
|
10
|
+
|
|
11
|
+
COPY . .
|
|
12
|
+
|
|
13
|
+
RUN make -f Web.mk clean all BUILD_MODE=${BUILD_MODE} OUTPUT_DIR=bin/
|
|
14
|
+
|
|
15
|
+
# --- Runtime Image ---
|
|
16
|
+
FROM rockylinux/rockylinux:9 AS runtime
|
|
17
|
+
ARG UNDERPOST_VERSION=3.2.80
|
|
18
|
+
ARG NODE_VERSION=24.15.0
|
|
19
|
+
|
|
20
|
+
RUN set -eux; \
|
|
21
|
+
dnf install -y python3 git tar xz; \
|
|
22
|
+
arch="$(uname -m)"; \
|
|
23
|
+
case "$arch" in \
|
|
24
|
+
x86_64) node_arch=x64 ;; \
|
|
25
|
+
aarch64) node_arch=arm64 ;; \
|
|
26
|
+
*) echo "unsupported arch: $arch" >&2; exit 1 ;; \
|
|
27
|
+
esac; \
|
|
28
|
+
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${node_arch}.tar.xz" \
|
|
29
|
+
| tar -xJ -C /usr/local --strip-components=1; \
|
|
30
|
+
node --version; npm --version; \
|
|
31
|
+
npm install -g underpost@${UNDERPOST_VERSION}; \
|
|
32
|
+
dnf clean all; rm -rf /var/cache/dnf; \
|
|
33
|
+
npm cache clean --force
|
|
34
|
+
|
|
35
|
+
# Path + server layout is the contract with conf.instances.json mmo-client cmd,
|
|
36
|
+
# which execs `python3 /home/dd/engine/cyberia-client/docker-driver.py <port>
|
|
37
|
+
# /home/dd/engine/cyberia-client/bin` in both development and production.
|
|
38
|
+
# Keep this identical to Dockerfile.dev so prod and dev images are interchangeable.
|
|
39
|
+
WORKDIR /home/dd/engine/cyberia-client
|
|
40
|
+
|
|
41
|
+
COPY --from=builder /cyberia-client/docker-driver.py ./docker-driver.py
|
|
42
|
+
COPY --from=builder /cyberia-client/bin ./bin/
|
|
43
|
+
|
|
44
|
+
ENV PYTHONUNBUFFERED=1
|
|
45
|
+
ENV CYBERIA_PORT=8081
|
|
46
|
+
|
|
47
|
+
EXPOSE 8081
|
|
48
|
+
|
|
49
|
+
CMD ["sh", "-c", "exec python3 docker-driver.py ${CYBERIA_PORT} bin"]
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# cyberia-client DEV runtime image.
|
|
2
|
+
|
|
3
|
+
ARG BUILD_MODE=DEBUG
|
|
4
|
+
|
|
5
|
+
# --- Build Image ---
|
|
6
|
+
FROM rockylinux/rockylinux:9 AS builder
|
|
7
|
+
ARG BUILD_MODE=DEBUG
|
|
8
|
+
|
|
9
|
+
RUN dnf -y update && \
|
|
10
|
+
dnf -y install epel-release && \
|
|
11
|
+
dnf -y install --allowerasing \
|
|
12
|
+
git curl wget openssl-devel libnsl perl gnupg2 bzip2 && \
|
|
13
|
+
dnf clean all
|
|
14
|
+
|
|
15
|
+
RUN dnf groupinstall -y "Development Tools" && \
|
|
16
|
+
dnf install -y \
|
|
17
|
+
cmake unzip python3 python3.11 \
|
|
18
|
+
alsa-lib-devel mesa-libGL-devel mesa-libGLU-devel \
|
|
19
|
+
libX11-devel libXrandr-devel libXi-devel libXcursor-devel \
|
|
20
|
+
libXinerama-devel libXfixes-devel \
|
|
21
|
+
freeglut-devel glfw-devel libatomic.x86_64 && \
|
|
22
|
+
dnf clean all && \
|
|
23
|
+
alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 2 && \
|
|
24
|
+
alternatives --set python3 /usr/bin/python3.11
|
|
25
|
+
|
|
26
|
+
ENV EMSDK=/opt/emsdk
|
|
27
|
+
ENV PATH="${EMSDK}:${EMSDK}/upstream/emscripten:${PATH}"
|
|
28
|
+
|
|
29
|
+
ARG EMSDK_VERSION=5.0.6
|
|
30
|
+
WORKDIR /opt
|
|
31
|
+
RUN git clone https://github.com/emscripten-core/emsdk.git ${EMSDK}
|
|
32
|
+
WORKDIR ${EMSDK}
|
|
33
|
+
RUN ./emsdk install ${EMSDK_VERSION} && \
|
|
34
|
+
./emsdk activate ${EMSDK_VERSION}
|
|
35
|
+
|
|
36
|
+
WORKDIR /cyberia-client
|
|
37
|
+
|
|
38
|
+
COPY . .
|
|
39
|
+
|
|
40
|
+
# Dev build: BUILD_MODE=DEBUG keeps symbols, asserts, source maps.
|
|
41
|
+
RUN make -f Web.mk all BUILD_MODE=${BUILD_MODE} OUTPUT_DIR=bin/
|
|
42
|
+
|
|
43
|
+
# --- Runtime Image ---
|
|
44
|
+
FROM rockylinux/rockylinux:9 AS runtime
|
|
45
|
+
|
|
46
|
+
ARG UNDERPOST_VERSION=3.2.80
|
|
47
|
+
ARG NODE_VERSION=24.15.0
|
|
48
|
+
RUN set -eux; \
|
|
49
|
+
dnf -y update; \
|
|
50
|
+
dnf -y install epel-release; \
|
|
51
|
+
dnf -y install --allowerasing \
|
|
52
|
+
curl git python3 tar xz \
|
|
53
|
+
procps-ng strace lsof vim-minimal; \
|
|
54
|
+
arch="$(uname -m)"; \
|
|
55
|
+
case "$arch" in \
|
|
56
|
+
x86_64) node_arch=x64 ;; \
|
|
57
|
+
aarch64) node_arch=arm64 ;; \
|
|
58
|
+
*) echo "unsupported arch: $arch" >&2; exit 1 ;; \
|
|
59
|
+
esac; \
|
|
60
|
+
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${node_arch}.tar.xz" \
|
|
61
|
+
| tar -xJ -C /usr/local --strip-components=1; \
|
|
62
|
+
node --version; npm --version; \
|
|
63
|
+
npm install -g underpost@${UNDERPOST_VERSION}; \
|
|
64
|
+
dnf clean all
|
|
65
|
+
|
|
66
|
+
WORKDIR /home/dd/engine/cyberia-client
|
|
67
|
+
|
|
68
|
+
COPY --from=builder /cyberia-client/docker-driver.py ./docker-driver.py
|
|
69
|
+
COPY --from=builder /cyberia-client/bin ./bin/
|
|
70
|
+
|
|
71
|
+
ENV CYBERIA_PORT=8082
|
|
72
|
+
|
|
73
|
+
EXPOSE 8081 8082
|
|
74
|
+
|
|
75
|
+
CMD ["sh", "-c", "exec python3 docker-driver.py ${CYBERIA_PORT} bin"]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# --- Build Image ---
|
|
2
|
+
FROM golang:1.24 AS builder
|
|
3
|
+
|
|
4
|
+
WORKDIR /build
|
|
5
|
+
|
|
6
|
+
COPY go.mod go.sum ./
|
|
7
|
+
RUN go mod download
|
|
8
|
+
|
|
9
|
+
COPY . ./
|
|
10
|
+
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o server ./cmd/cyberia-server/
|
|
11
|
+
|
|
12
|
+
# --- Runtime Image ---
|
|
13
|
+
FROM rockylinux/rockylinux:9 AS runtime
|
|
14
|
+
ARG UNDERPOST_VERSION=3.2.80
|
|
15
|
+
ARG NODE_VERSION=24.15.0
|
|
16
|
+
|
|
17
|
+
RUN set -eux; \
|
|
18
|
+
dnf install -y git tar xz; \
|
|
19
|
+
arch="$(uname -m)"; \
|
|
20
|
+
case "$arch" in \
|
|
21
|
+
x86_64) node_arch=x64 ;; \
|
|
22
|
+
aarch64) node_arch=arm64 ;; \
|
|
23
|
+
*) echo "unsupported arch: $arch" >&2; exit 1 ;; \
|
|
24
|
+
esac; \
|
|
25
|
+
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${node_arch}.tar.xz" \
|
|
26
|
+
| tar -xJ -C /usr/local --strip-components=1; \
|
|
27
|
+
node --version; npm --version; \
|
|
28
|
+
npm install -g underpost@${UNDERPOST_VERSION}; \
|
|
29
|
+
dnf clean all; rm -rf /var/cache/dnf; \
|
|
30
|
+
npm cache clean --force
|
|
31
|
+
|
|
32
|
+
# Path is the contract with conf.instances.json mmo-server cmd, which execs
|
|
33
|
+
# /home/dd/engine/cyberia-server/server in both development and production.
|
|
34
|
+
# Keep this identical to Dockerfile.dev so prod and dev images are interchangeable.
|
|
35
|
+
WORKDIR /home/dd/engine/cyberia-server
|
|
36
|
+
|
|
37
|
+
COPY --from=builder /build/server ./server
|
|
38
|
+
|
|
39
|
+
COPY public/ ./public/
|
|
40
|
+
|
|
41
|
+
EXPOSE 8081
|
|
42
|
+
|
|
43
|
+
ENTRYPOINT ["/home/dd/engine/cyberia-server/server"]
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# cyberia-server DEV runtime image.
|
|
2
|
+
|
|
3
|
+
# --- Build Image ---
|
|
4
|
+
FROM rockylinux/rockylinux:9 AS builder
|
|
5
|
+
|
|
6
|
+
RUN dnf -y update && \
|
|
7
|
+
dnf -y install epel-release && \
|
|
8
|
+
dnf -y install --allowerasing \
|
|
9
|
+
git \
|
|
10
|
+
make \
|
|
11
|
+
golang && \
|
|
12
|
+
dnf clean all
|
|
13
|
+
|
|
14
|
+
WORKDIR /build
|
|
15
|
+
|
|
16
|
+
COPY go.mod go.sum ./
|
|
17
|
+
RUN go mod download
|
|
18
|
+
|
|
19
|
+
COPY . ./
|
|
20
|
+
|
|
21
|
+
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
|
|
22
|
+
go build -gcflags="all=-N -l" -o server ./cmd/cyberia-server/ && \
|
|
23
|
+
echo "DEV build complete: $(pwd)/server"
|
|
24
|
+
|
|
25
|
+
# --- Runtime Image ---
|
|
26
|
+
FROM rockylinux/rockylinux:9 AS runtime
|
|
27
|
+
|
|
28
|
+
ARG UNDERPOST_VERSION=3.2.80
|
|
29
|
+
ARG NODE_VERSION=24.15.0
|
|
30
|
+
RUN set -eux; \
|
|
31
|
+
dnf -y update; \
|
|
32
|
+
dnf -y install epel-release; \
|
|
33
|
+
dnf -y install --allowerasing \
|
|
34
|
+
curl git tar xz \
|
|
35
|
+
procps-ng strace lsof vim-minimal; \
|
|
36
|
+
arch="$(uname -m)"; \
|
|
37
|
+
case "$arch" in \
|
|
38
|
+
x86_64) node_arch=x64 ;; \
|
|
39
|
+
aarch64) node_arch=arm64 ;; \
|
|
40
|
+
*) echo "unsupported arch: $arch" >&2; exit 1 ;; \
|
|
41
|
+
esac; \
|
|
42
|
+
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${node_arch}.tar.xz" \
|
|
43
|
+
| tar -xJ -C /usr/local --strip-components=1; \
|
|
44
|
+
node --version; npm --version; \
|
|
45
|
+
npm install -g underpost@${UNDERPOST_VERSION}; \
|
|
46
|
+
dnf clean all
|
|
47
|
+
|
|
48
|
+
WORKDIR /home/dd/engine/cyberia-server
|
|
49
|
+
|
|
50
|
+
COPY --from=builder /build/server ./server
|
|
51
|
+
|
|
52
|
+
COPY public/ ./public/
|
|
53
|
+
|
|
54
|
+
EXPOSE 8081
|
|
55
|
+
|
|
56
|
+
ENTRYPOINT ["/home/dd/engine/cyberia-server/server"]
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1.7
|
|
2
|
+
#
|
|
3
|
+
# engine-cyberia — PRODUCTION image (underpost/engine-cyberia).
|
|
4
|
+
#
|
|
5
|
+
# ---------------------------------------------------------------------------
|
|
6
|
+
# Stage 1 — builder: clone the private deploy, build it, then scrub secrets.
|
|
7
|
+
# ---------------------------------------------------------------------------
|
|
8
|
+
FROM rockylinux/rockylinux:9 AS builder
|
|
9
|
+
ARG UNDERPOST_VERSION=3.2.80
|
|
10
|
+
# Pin Node to an exact patch: dnf's nodejs:24 module lags (24.14.1) while
|
|
11
|
+
# underpost's dependencies require >=24.15.0, so install the official binary.
|
|
12
|
+
ARG NODE_VERSION=24.15.0
|
|
13
|
+
ENV NODE_ENV=production
|
|
14
|
+
|
|
15
|
+
RUN set -eux; \
|
|
16
|
+
# `sudo` is required because underpost's build steps shell out to
|
|
17
|
+
# `sudo cp`/`sudo rm` (src/server/start.js); the build runs as root so sudo
|
|
18
|
+
# is just a passthrough, but the binary must exist.
|
|
19
|
+
dnf install -y git openssl tar xz sudo; \
|
|
20
|
+
arch="$(uname -m)"; \
|
|
21
|
+
case "$arch" in \
|
|
22
|
+
x86_64) node_arch=x64 ;; \
|
|
23
|
+
aarch64) node_arch=arm64 ;; \
|
|
24
|
+
*) echo "unsupported arch: $arch" >&2; exit 1 ;; \
|
|
25
|
+
esac; \
|
|
26
|
+
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${node_arch}.tar.xz" \
|
|
27
|
+
| tar -xJ -C /usr/local --strip-components=1; \
|
|
28
|
+
node --version; npm --version; \
|
|
29
|
+
npm install -g underpost@${UNDERPOST_VERSION}; \
|
|
30
|
+
dnf clean all; rm -rf /var/cache/dnf; \
|
|
31
|
+
npm cache clean --force
|
|
32
|
+
|
|
33
|
+
WORKDIR /home/dd
|
|
34
|
+
|
|
35
|
+
# Comma-separated instance codes to provision (backup dir + optional saga).
|
|
36
|
+
# `node bin/cyberia run-workflow build-manifest` rewrites this default from the
|
|
37
|
+
# conf.instances.json multiInstance variants; override at build with
|
|
38
|
+
# `--build-arg INSTANCE_CODES=...`. Declared as an ARG (not a marker-wrapped
|
|
39
|
+
# shell string) so the value is clean — a `/** … */` literal in the shell would
|
|
40
|
+
# glob-expand in the `for` loop below.
|
|
41
|
+
ARG INSTANCE_CODES="amethyst-strata-expansion,FOREST"
|
|
42
|
+
|
|
43
|
+
RUN --mount=type=secret,id=github_username \
|
|
44
|
+
# --mount=type=secret,id=github_token \
|
|
45
|
+
set -eu; \
|
|
46
|
+
export GITHUB_USERNAME="$(cat /run/secrets/github_username)"; \
|
|
47
|
+
# export GITHUB_TOKEN="$(cat /run/secrets/github_token)"; \
|
|
48
|
+
export ENGINE_CYBERIA_REPO="engine-cyberia"; \
|
|
49
|
+
cd /home/dd; \
|
|
50
|
+
underpost clone "$GITHUB_USERNAME/$ENGINE_CYBERIA_REPO"; \
|
|
51
|
+
mkdir -p /home/dd/engine; \
|
|
52
|
+
cp -a ./"$ENGINE_CYBERIA_REPO"/. /home/dd/engine/; \
|
|
53
|
+
rm -rf ./"$ENGINE_CYBERIA_REPO"; \
|
|
54
|
+
cd /home/dd; \
|
|
55
|
+
underpost clone "$GITHUB_USERNAME/cyberia-instances"; \
|
|
56
|
+
rm -rf /home/dd/engine/engine-private; \
|
|
57
|
+
mkdir -p /home/dd/engine/engine-private/conf/dd-cyberia; \
|
|
58
|
+
cp -a ./cyberia-instances/conf/dd-cyberia/. /home/dd/engine/engine-private/conf/dd-cyberia/.; \
|
|
59
|
+
cp -a /home/dd/engine/engine-private/conf/dd-cyberia/package.json /home/dd/engine/package.json; \
|
|
60
|
+
# Per instance code: copy its backup dir and, when present, its top-level
|
|
61
|
+
# saga (cyberia-instances/sagas/<code>.json). The engine boot seed
|
|
62
|
+
# (`run-workflow import-default-items`) reads engine-private/cyberia-sagas/
|
|
63
|
+
# <code>.json — without it generate-saga fails and the engine crash-loops.
|
|
64
|
+
# A code with no top-level saga is imported from its backup dir instead.
|
|
65
|
+
mkdir -p /home/dd/engine/engine-private/cyberia-instances; \
|
|
66
|
+
mkdir -p /home/dd/engine/engine-private/cyberia-sagas; \
|
|
67
|
+
for _ic in $(echo "$INSTANCE_CODES" | tr ',' ' '); do \
|
|
68
|
+
cp -a ./cyberia-instances/instances/"$_ic" /home/dd/engine/engine-private/cyberia-instances/"$_ic"; \
|
|
69
|
+
if [ -f ./cyberia-instances/sagas/"$_ic".json ]; then \
|
|
70
|
+
cp -a ./cyberia-instances/sagas/"$_ic".json /home/dd/engine/engine-private/cyberia-sagas/"$_ic".json; \
|
|
71
|
+
fi; \
|
|
72
|
+
done; \
|
|
73
|
+
mkdir -p /home/dd/engine/src/client/public/cyberia; \
|
|
74
|
+
cp -a ./cyberia-instances/public/cyberia/. /home/dd/engine/src/client/public/cyberia/.; \
|
|
75
|
+
# The engine gRPC server loads its schema at runtime from
|
|
76
|
+
# cyberia-server/gen/proto/cyberia.proto (src/grpc/cyberia/grpc-server.js);
|
|
77
|
+
# fetch just that file so the engine can bind :50051 / :4005 without the
|
|
78
|
+
# full cyberia-server repo.
|
|
79
|
+
underpost clone "$GITHUB_USERNAME/cyberia-server"; \
|
|
80
|
+
mkdir -p /home/dd/engine/cyberia-server/gen/proto; \
|
|
81
|
+
cp -a ./cyberia-server/gen/proto/cyberia.proto /home/dd/engine/cyberia-server/gen/proto/cyberia.proto; \
|
|
82
|
+
rm -rf ./cyberia-server; \
|
|
83
|
+
cd /home/dd/engine; \
|
|
84
|
+
# --- install deps + env, then replay build-safe itc provisioning ----------
|
|
85
|
+
npm install; \
|
|
86
|
+
node bin env dd-cyberia production; \
|
|
87
|
+
( cd /home/dd/engine/hardhat && npm install --include=dev ); \
|
|
88
|
+
# --- build the client bundle (assets are now in place) --------------------
|
|
89
|
+
cd /home/dd/engine; \
|
|
90
|
+
node bin client dd-cyberia; \
|
|
91
|
+
# --- CREDENTIAL SCRUB (defense in depth, while secrets are still in scope) -
|
|
92
|
+
# 1) Redact every real secret value from any file it may have reached.
|
|
93
|
+
# for _secret in "$GITHUB_TOKEN" "$CLOUDINARY_API_SECRET" "$CLOUDINARY_API_KEY"; do \
|
|
94
|
+
for _secret in "$GITHUB_USERNAME"; do \
|
|
95
|
+
# for _secret in "$GITHUB_USERNAME" "$GITHUB_TOKEN"; do \
|
|
96
|
+
[ -n "$_secret" ] || continue; \
|
|
97
|
+
grep -rlF --exclude-dir=node_modules --exclude-dir=.git "$_secret" /home/dd/engine 2>/dev/null \
|
|
98
|
+
| xargs -r sed -i "s#${_secret}#__REDACTED__#g" || true; \
|
|
99
|
+
done; \
|
|
100
|
+
# unset GITHUB_TOKEN GITHUB_USERNAME; \
|
|
101
|
+
# unset GITHUB_TOKEN GITHUB_USERNAME CLOUDINARY_CLOUD_NAME CLOUDINARY_API_KEY CLOUDINARY_API_SECRET; \
|
|
102
|
+
unset GITHUB_USERNAME; \
|
|
103
|
+
|
|
104
|
+
# 2) Every .git dir — clone URLs embed the token in .git/config, and the
|
|
105
|
+
# private history itself must not ship.
|
|
106
|
+
find /home/dd/engine -type d -name .git -prune -exec rm -rf {} + 2>/dev/null || true; \
|
|
107
|
+
# 3) User-level credential stores possibly written during the build.
|
|
108
|
+
rm -rf /root/.gitconfig /root/.git-credentials /root/.config/git \
|
|
109
|
+
/root/.netrc /root/.ssh /root/.npm /root/.cache /root/.node-gyp; \
|
|
110
|
+
# 4) The underpost global env store may hold GITHUB_TOKEN.
|
|
111
|
+
rm -f "$(underpost root)/underpost/.env" 2>/dev/null || true; \
|
|
112
|
+
# 5) Build caches, temp, and build-only toolchains. hardhat is contract
|
|
113
|
+
# build/CLI tooling (used only to build the coverage docs above); the
|
|
114
|
+
# runtime server never imports it, so its dev node_modules is pure bloat.
|
|
115
|
+
npm cache clean --force 2>/dev/null || true; \
|
|
116
|
+
rm -rf /home/dd/cyberia-instances \
|
|
117
|
+
/home/dd/engine/src/client/public/itemledger \
|
|
118
|
+
/home/dd/engine/src/client/public/cryptokoyn \
|
|
119
|
+
/home/dd/engine/src/client/components/cryptokoyn \
|
|
120
|
+
/home/dd/engine/src/client/components/itemledger \
|
|
121
|
+
/home/dd/engine/src/client/Itemledger.index.js \
|
|
122
|
+
/home/dd/engine/src/client/Cryptokoyn.index.js \
|
|
123
|
+
/home/dd/engine/hardhat/node_modules \
|
|
124
|
+
/home/dd/engine/.npm /tmp/* /var/tmp/* /var/cache/dnf
|
|
125
|
+
|
|
126
|
+
# ---------------------------------------------------------------------------
|
|
127
|
+
# Stage 2 — runtime: clean base + pinned Node toolchain + scrubbed app tree.
|
|
128
|
+
# ---------------------------------------------------------------------------
|
|
129
|
+
FROM rockylinux/rockylinux:9 AS runtime
|
|
130
|
+
ENV NODE_ENV=production
|
|
131
|
+
|
|
132
|
+
# Node + npm + the underpost CLI (exact pinned version) from the builder — no
|
|
133
|
+
# re-download, no git/build toolchain. libstdc++ is the only runtime lib the
|
|
134
|
+
# prebuilt Node binary needs beyond the base image.
|
|
135
|
+
COPY --from=builder /usr/local/ /usr/local/
|
|
136
|
+
RUN dnf install -y libstdc++ git sudo && dnf clean all && rm -rf /var/cache/dnf && \
|
|
137
|
+
useradd --create-home --home-dir /home/dd --shell /usr/sbin/nologin dd && \
|
|
138
|
+
# The runtime runs as `dd`, but `underpost start --build` shells out to `sudo cp`/`sudo rm`
|
|
139
|
+
# (src/server/start.js). Grant passwordless sudo so those succeed without a TTY/password.
|
|
140
|
+
printf 'dd ALL=(ALL) NOPASSWD:ALL\n' > /etc/sudoers.d/dd && chmod 0440 /etc/sudoers.d/dd && \
|
|
141
|
+
# underpost persists its global env at $(npm root -g)/underpost/.env; the
|
|
142
|
+
# non-root runtime user must be able to write it (fixes EACCES on start).
|
|
143
|
+
chown -R dd:dd /usr/local/lib/node_modules/underpost
|
|
144
|
+
|
|
145
|
+
# Copy ONLY the scrubbed runtime tree — no .git, no token, no caches.
|
|
146
|
+
COPY --from=builder --chown=dd:dd /home/dd/engine /home/dd/engine
|
|
147
|
+
|
|
148
|
+
RUN chmod +x /home/dd/engine/scripts/rpmfusion-ffmpeg-setup.sh && \
|
|
149
|
+
/home/dd/engine/scripts/rpmfusion-ffmpeg-setup.sh
|
|
150
|
+
|
|
151
|
+
# Explicit re-chown: PVC-backed mounts under src/client/public land here at
|
|
152
|
+
# pod start and may override the COPY --chown above with root ownership.
|
|
153
|
+
RUN chown -R dd:dd /home/dd/engine/src/client/public
|
|
154
|
+
|
|
155
|
+
USER dd
|
|
156
|
+
WORKDIR /home/dd/engine
|
|
157
|
+
|
|
158
|
+
EXPOSE 3005
|
|
159
|
+
EXPOSE 50051
|
|
160
|
+
|
|
161
|
+
CMD ["/bin/sh", "-c", "underpost start --run dd-cyberia production"]
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# syntax=docker/dockerfile:1.7
|
|
2
|
+
#
|
|
3
|
+
# engine-cyberia — DEVELOPMENT image (underpost/engine-cyberia-dev).
|
|
4
|
+
#
|
|
5
|
+
# ---------------------------------------------------------------------------
|
|
6
|
+
# Stage 1 — builder: clone the private deploy, build it, then scrub secrets.
|
|
7
|
+
# ---------------------------------------------------------------------------
|
|
8
|
+
FROM rockylinux/rockylinux:9 AS builder
|
|
9
|
+
ARG UNDERPOST_VERSION=3.2.80
|
|
10
|
+
# Pin Node to an exact patch: dnf's nodejs:24 module lags (24.14.1) while
|
|
11
|
+
# underpost's dependencies require >=24.15.0, so install the official binary.
|
|
12
|
+
ARG NODE_VERSION=24.15.0
|
|
13
|
+
ENV NODE_ENV=development
|
|
14
|
+
|
|
15
|
+
RUN set -eux; \
|
|
16
|
+
# `sudo` is required because underpost's build steps shell out to
|
|
17
|
+
# `sudo cp`/`sudo rm` (src/server/start.js); the build runs as root so sudo
|
|
18
|
+
# is just a passthrough, but the binary must exist.
|
|
19
|
+
dnf install -y git openssl tar xz sudo; \
|
|
20
|
+
arch="$(uname -m)"; \
|
|
21
|
+
case "$arch" in \
|
|
22
|
+
x86_64) node_arch=x64 ;; \
|
|
23
|
+
aarch64) node_arch=arm64 ;; \
|
|
24
|
+
*) echo "unsupported arch: $arch" >&2; exit 1 ;; \
|
|
25
|
+
esac; \
|
|
26
|
+
curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${node_arch}.tar.xz" \
|
|
27
|
+
| tar -xJ -C /usr/local --strip-components=1; \
|
|
28
|
+
node --version; npm --version; \
|
|
29
|
+
npm install -g underpost@${UNDERPOST_VERSION}; \
|
|
30
|
+
dnf clean all; rm -rf /var/cache/dnf; \
|
|
31
|
+
npm cache clean --force
|
|
32
|
+
|
|
33
|
+
WORKDIR /home/dd
|
|
34
|
+
|
|
35
|
+
# Comma-separated instance codes to provision (backup dir + optional saga).
|
|
36
|
+
# `node bin/cyberia run-workflow build-manifest` rewrites this default from the
|
|
37
|
+
# conf.instances.json multiInstance variants; override at build with
|
|
38
|
+
# `--build-arg INSTANCE_CODES=...`. Declared as an ARG (not a marker-wrapped
|
|
39
|
+
# shell string) so the value is clean — a `/** … */` literal in the shell would
|
|
40
|
+
# glob-expand in the `for` loop below.
|
|
41
|
+
ARG INSTANCE_CODES="amethyst-strata-expansion,FOREST"
|
|
42
|
+
|
|
43
|
+
RUN --mount=type=secret,id=github_username \
|
|
44
|
+
# --mount=type=secret,id=github_token \
|
|
45
|
+
set -eu; \
|
|
46
|
+
export GITHUB_USERNAME="$(cat /run/secrets/github_username)"; \
|
|
47
|
+
# export GITHUB_TOKEN="$(cat /run/secrets/github_token)"; \
|
|
48
|
+
export ENGINE_CYBERIA_REPO="engine-cyberia"; \
|
|
49
|
+
cd /home/dd; \
|
|
50
|
+
underpost clone "$GITHUB_USERNAME/$ENGINE_CYBERIA_REPO"; \
|
|
51
|
+
mkdir -p /home/dd/engine; \
|
|
52
|
+
cp -a ./"$ENGINE_CYBERIA_REPO"/. /home/dd/engine/; \
|
|
53
|
+
rm -rf ./"$ENGINE_CYBERIA_REPO"; \
|
|
54
|
+
cd /home/dd; \
|
|
55
|
+
underpost clone "$GITHUB_USERNAME/cyberia-instances"; \
|
|
56
|
+
rm -rf /home/dd/engine/engine-private; \
|
|
57
|
+
mkdir -p /home/dd/engine/engine-private/conf/dd-cyberia; \
|
|
58
|
+
cp -a ./cyberia-instances/conf/dd-cyberia/. /home/dd/engine/engine-private/conf/dd-cyberia/.; \
|
|
59
|
+
cp -a /home/dd/engine/engine-private/conf/dd-cyberia/package.json /home/dd/engine/package.json; \
|
|
60
|
+
# Per instance code: copy its backup dir and, when present, its top-level
|
|
61
|
+
# saga (cyberia-instances/sagas/<code>.json). The engine boot seed
|
|
62
|
+
# (`run-workflow import-default-items`) reads engine-private/cyberia-sagas/
|
|
63
|
+
# <code>.json — without it generate-saga fails and the engine crash-loops.
|
|
64
|
+
# A code with no top-level saga is imported from its backup dir instead.
|
|
65
|
+
mkdir -p /home/dd/engine/engine-private/cyberia-instances; \
|
|
66
|
+
mkdir -p /home/dd/engine/engine-private/cyberia-sagas; \
|
|
67
|
+
for _ic in $(echo "$INSTANCE_CODES" | tr ',' ' '); do \
|
|
68
|
+
cp -a ./cyberia-instances/instances/"$_ic" /home/dd/engine/engine-private/cyberia-instances/"$_ic"; \
|
|
69
|
+
if [ -f ./cyberia-instances/sagas/"$_ic".json ]; then \
|
|
70
|
+
cp -a ./cyberia-instances/sagas/"$_ic".json /home/dd/engine/engine-private/cyberia-sagas/"$_ic".json; \
|
|
71
|
+
fi; \
|
|
72
|
+
done; \
|
|
73
|
+
mkdir -p /home/dd/engine/src/client/public/cyberia; \
|
|
74
|
+
cp -a ./cyberia-instances/public/cyberia/. /home/dd/engine/src/client/public/cyberia/.; \
|
|
75
|
+
# The engine gRPC server loads its schema at runtime from
|
|
76
|
+
# cyberia-server/gen/proto/cyberia.proto (src/grpc/cyberia/grpc-server.js);
|
|
77
|
+
# fetch just that file so the engine can bind :50051 / :4005 without the
|
|
78
|
+
# full cyberia-server repo.
|
|
79
|
+
underpost clone "$GITHUB_USERNAME/cyberia-server"; \
|
|
80
|
+
mkdir -p /home/dd/engine/cyberia-server/gen/proto; \
|
|
81
|
+
cp -a ./cyberia-server/gen/proto/cyberia.proto /home/dd/engine/cyberia-server/gen/proto/cyberia.proto; \
|
|
82
|
+
rm -rf ./cyberia-server; \
|
|
83
|
+
cd /home/dd/engine; \
|
|
84
|
+
# --- install deps + env, then replay build-safe itc provisioning ----------
|
|
85
|
+
npm install; \
|
|
86
|
+
node bin env dd-cyberia development; \
|
|
87
|
+
( cd /home/dd/engine/hardhat && npm install --include=dev ); \
|
|
88
|
+
# --- build the client bundle (assets are now in place) --------------------
|
|
89
|
+
cd /home/dd/engine; \
|
|
90
|
+
node bin client dd-cyberia; \
|
|
91
|
+
# --- CREDENTIAL SCRUB (defense in depth, while secrets are still in scope) -
|
|
92
|
+
# 1) Redact every real secret value from any file it may have reached.
|
|
93
|
+
# for _secret in "$GITHUB_TOKEN" "$CLOUDINARY_API_SECRET" "$CLOUDINARY_API_KEY"; do \
|
|
94
|
+
for _secret in "$GITHUB_USERNAME"; do \
|
|
95
|
+
# for _secret in "$GITHUB_USERNAME" "$GITHUB_TOKEN"; do \
|
|
96
|
+
[ -n "$_secret" ] || continue; \
|
|
97
|
+
grep -rlF --exclude-dir=node_modules --exclude-dir=.git "$_secret" /home/dd/engine 2>/dev/null \
|
|
98
|
+
| xargs -r sed -i "s#${_secret}#__REDACTED__#g" || true; \
|
|
99
|
+
done; \
|
|
100
|
+
# unset GITHUB_TOKEN GITHUB_USERNAME; \
|
|
101
|
+
# unset GITHUB_TOKEN GITHUB_USERNAME CLOUDINARY_CLOUD_NAME CLOUDINARY_API_KEY CLOUDINARY_API_SECRET; \
|
|
102
|
+
unset GITHUB_USERNAME; \
|
|
103
|
+
|
|
104
|
+
# 2) Every .git dir — clone URLs embed the token in .git/config, and the
|
|
105
|
+
# private history itself must not ship.
|
|
106
|
+
find /home/dd/engine -type d -name .git -prune -exec rm -rf {} + 2>/dev/null || true; \
|
|
107
|
+
# 3) User-level credential stores possibly written during the build.
|
|
108
|
+
rm -rf /root/.gitconfig /root/.git-credentials /root/.config/git \
|
|
109
|
+
/root/.netrc /root/.ssh /root/.npm /root/.cache /root/.node-gyp; \
|
|
110
|
+
# 4) The underpost global env store may hold GITHUB_TOKEN.
|
|
111
|
+
rm -f "$(underpost root)/underpost/.env" 2>/dev/null || true; \
|
|
112
|
+
# 5) Build caches, temp, and build-only toolchains. hardhat is contract
|
|
113
|
+
# build/CLI tooling (used only to build the coverage docs above); the
|
|
114
|
+
# runtime server never imports it, so its dev node_modules is pure bloat.
|
|
115
|
+
npm cache clean --force 2>/dev/null || true; \
|
|
116
|
+
rm -rf /home/dd/cyberia-instances \
|
|
117
|
+
/home/dd/engine/src/client/public/itemledger \
|
|
118
|
+
/home/dd/engine/src/client/public/cryptokoyn \
|
|
119
|
+
/home/dd/engine/src/client/components/cryptokoyn \
|
|
120
|
+
/home/dd/engine/src/client/components/itemledger \
|
|
121
|
+
/home/dd/engine/src/client/Itemledger.index.js \
|
|
122
|
+
/home/dd/engine/src/client/Cryptokoyn.index.js \
|
|
123
|
+
/home/dd/engine/hardhat/node_modules \
|
|
124
|
+
/home/dd/engine/.npm /tmp/* /var/tmp/* /var/cache/dnf
|
|
125
|
+
|
|
126
|
+
# ---------------------------------------------------------------------------
|
|
127
|
+
# Stage 2 — runtime: clean base + pinned Node toolchain + scrubbed app tree.
|
|
128
|
+
# ---------------------------------------------------------------------------
|
|
129
|
+
FROM rockylinux/rockylinux:9 AS runtime
|
|
130
|
+
ENV NODE_ENV=development
|
|
131
|
+
|
|
132
|
+
# Node + npm + the underpost CLI (exact pinned version) from the builder — no
|
|
133
|
+
# re-download, no git/build toolchain. libstdc++ is the only runtime lib the
|
|
134
|
+
# prebuilt Node binary needs beyond the base image.
|
|
135
|
+
COPY --from=builder /usr/local/ /usr/local/
|
|
136
|
+
RUN dnf install -y libstdc++ git sudo && dnf clean all && rm -rf /var/cache/dnf && \
|
|
137
|
+
useradd --create-home --home-dir /home/dd --shell /usr/sbin/nologin dd && \
|
|
138
|
+
# The runtime runs as `dd`, but `underpost start --build` shells out to `sudo cp`/`sudo rm`
|
|
139
|
+
# (src/server/start.js). Grant passwordless sudo so those succeed without a TTY/password.
|
|
140
|
+
printf 'dd ALL=(ALL) NOPASSWD:ALL\n' > /etc/sudoers.d/dd && chmod 0440 /etc/sudoers.d/dd && \
|
|
141
|
+
# underpost persists its global env at $(npm root -g)/underpost/.env; the
|
|
142
|
+
# non-root runtime user must be able to write it (fixes EACCES on start).
|
|
143
|
+
chown -R dd:dd /usr/local/lib/node_modules/underpost
|
|
144
|
+
|
|
145
|
+
# Copy ONLY the scrubbed runtime tree — no .git, no token, no caches.
|
|
146
|
+
COPY --from=builder --chown=dd:dd /home/dd/engine /home/dd/engine
|
|
147
|
+
|
|
148
|
+
RUN chmod +x /home/dd/engine/scripts/rpmfusion-ffmpeg-setup.sh && \
|
|
149
|
+
/home/dd/engine/scripts/rpmfusion-ffmpeg-setup.sh
|
|
150
|
+
|
|
151
|
+
# Explicit re-chown: PVC-backed mounts under src/client/public land here at
|
|
152
|
+
# pod start and may override the COPY --chown above with root ownership.
|
|
153
|
+
RUN chown -R dd:dd /home/dd/engine/src/client/public
|
|
154
|
+
|
|
155
|
+
USER dd
|
|
156
|
+
WORKDIR /home/dd/engine
|
|
157
|
+
|
|
158
|
+
EXPOSE 4005
|
|
159
|
+
EXPOSE 50051
|
|
160
|
+
|
|
161
|
+
CMD ["/bin/sh", "-c", "underpost start --run dd-cyberia development"]
|