diff --git a/.github/renovate.json5 b/.github/renovate.json5 index f3a633dff2d..fbef1f7404f 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -142,7 +142,7 @@ "updateTypes": ["major"], "bumpVersion": "minor", "labels": ["update/docker/general/major"], - "paths": ["charts/dependency/", "charts/incubator/", "charts/dev/", "charts/library/", "charts/stable/", "charts/core/", "templates/app/"], + "paths": ["charts/dependency/", "charts/games/", "charts/incubator/", "charts/dev/", "charts/library/", "charts/stable/", "charts/core/", "templates/app/"], "schedule": [ "after 1am and before 2am on monday" ], @@ -159,7 +159,7 @@ "bumpVersion": "patch", "labels": ["update/docker/general/non-major"], "groupName": ["docker general non-major"], - "paths": ["charts/dependency/", "charts/incubator/", "charts/dev/", "charts/library/", "charts/stable/", "charts/core/", "templates/app/"], + "paths": ["charts/dependency/", "charts/games/", "charts/incubator/", "charts/dev/", "charts/library/", "charts/stable/", "charts/core/", "templates/app/"], "schedule": [ "after 1am and before 2am on monday" ], diff --git a/.github/workflows/renovate-bump.yaml b/.github/workflows/renovate-bump.yaml index e4f54f0923e..6c059f21063 100644 --- a/.github/workflows/renovate-bump.yaml +++ b/.github/workflows/renovate-bump.yaml @@ -57,10 +57,10 @@ jobs: train="dependency" elif test -f "./charts/core/${chart}/Chart.yaml"; then train="core" - elif test -f "./charts/games/${{ matrix.app }}/Chart.yaml"; then - train="games" - elif test -f "./charts/enterprise/${{ matrix.app }}/Chart.yaml"; then - train="enterprise" + elif test -f "./charts/games/${{ matrix.app }}/Chart.yaml"; then + train="games" + elif test -f "./charts/enterprise/${{ matrix.app }}/Chart.yaml"; then + train="enterprise" else train="incubator" fi diff --git a/charts/games/minecraft-java/.helmignore b/charts/games/minecraft-java/.helmignore new file mode 100644 index 00000000000..e559de0a012 --- /dev/null +++ b/charts/games/minecraft-java/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS diff --git a/charts/games/minecraft-java/Chart.yaml b/charts/games/minecraft-java/Chart.yaml new file mode 100644 index 00000000000..4e4069ffbc8 --- /dev/null +++ b/charts/games/minecraft-java/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "21.26.0" +dependencies: +- name: common + repository: https://truecharts.org + version: 8.14.4 +deprecated: false +description: Minecraft Java Dedicated Server +home: https://github.com/truecharts/apps/tree/master/charts/games/minecraft-java +icon: https://truecharts.org/_static/img/appicons/minecraft-java-icon.png +keywords: +- minecraft +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: minecraft-java +sources: +- https://github.com/itzg/docker-minecraft-server +- https://hub.docker.com/r/itzg/minecraft-server +type: application +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - games + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/games/minecraft-java/ci/base-values.yaml b/charts/games/minecraft-java/ci/base-values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/games/minecraft-java/ci/j11-values.yaml b/charts/games/minecraft-java/ci/j11-values.yaml new file mode 100644 index 00000000000..b9456aa0d17 --- /dev/null +++ b/charts/games/minecraft-java/ci/j11-values.yaml @@ -0,0 +1,7 @@ +image: + repository: tccr.io/truecharts/minecraft-java11 + tag: latest@sha256:33b93b09ac060814fb5d985d472cfa0369a6de042eacb6306e125aa008be2eec + pullPolicy: Always + +env: + VERSION: "1.16.1" diff --git a/charts/games/minecraft-java/ci/j11j9-values.yaml b/charts/games/minecraft-java/ci/j11j9-values.yaml new file mode 100644 index 00000000000..0e62305371c --- /dev/null +++ b/charts/games/minecraft-java/ci/j11j9-values.yaml @@ -0,0 +1,7 @@ +image: + repository: tccr.io/truecharts/minecraft-java11-openj9 + tag: latest@sha256:248ecbdca94efa8ab7c0b0437a0b59ba82ca9dabe6cd1f90a8cbd43319f15b82 + pullPolicy: Always + +env: + VERSION: "1.16.1" diff --git a/charts/games/minecraft-java/ci/j8-values.yaml b/charts/games/minecraft-java/ci/j8-values.yaml new file mode 100644 index 00000000000..932186851b6 --- /dev/null +++ b/charts/games/minecraft-java/ci/j8-values.yaml @@ -0,0 +1,7 @@ +image: + repository: tccr.io/truecharts/minecraft-java8-openj9 + tag: latest@sha256:3e606f04009ab1341ed119a9d10cb83a444d942e61a3f446281d9d17c1f84c04 + pullPolicy: Always + +env: + VERSION: "1.16.1" diff --git a/charts/games/minecraft-java/ci/j8j9-values.yaml b/charts/games/minecraft-java/ci/j8j9-values.yaml new file mode 100644 index 00000000000..c30011b9a22 --- /dev/null +++ b/charts/games/minecraft-java/ci/j8j9-values.yaml @@ -0,0 +1,7 @@ +image: + repository: tccr.io/truecharts/minecraft-java11-openj9 + tag: latest@sha256:6abc50828cd72c26e1258af759f9fff091db01ac13253b13bd548e3ef2f359e6 + pullPolicy: Always + +env: + VERSION: "1.16.1" diff --git a/charts/games/minecraft-java/questions.yaml b/charts/games/minecraft-java/questions.yaml new file mode 100644 index 00000000000..6f2d0e270f2 --- /dev/null +++ b/charts/games/minecraft-java/questions.yaml @@ -0,0 +1,776 @@ +# Include{groups} +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true +# Include{global} + - variable: imageSelector + group: "Container Image" + label: "Select Image" + schema: + type: string + default: "image" + enum: + - value: "image" + description: "Java 17 HotSpot" + - value: "j11Image" + description: "Java 11 HotSpot" + - value: "j11j9Image" + description: "Java 11 OpenJ9" + - value: "j8Image" + description: "Java 8 HotSpot" + - value: "j8j9Image" + description: "Java 8 OpenJ9" + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" +# Include{controllerExpert} + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: +# Include{fixedEnv} + - variable: EULA + label: "Minecraft Eula - Link in readme sources" + schema: + type: boolean + required: true + default: false + - variable: VERSION + label: "Minecraft Version - LATEST, SNAPSHOT, or verison" + schema: + type: string + required: true + default: "LATEST" + - variable: TYPE + label: "Server Type" + schema: + type: string + required: true + default: "VANILLA" + enum: + - value: "VANILLA" + description: "Vanilla" + - value: "FORGE" + description: "Forge" + - value: "FABRIC" + description: "Fabric" + - value: "SPIGOT" + description: "Spigot" + - value: "BUKKIT" + description: "Bukkit" + - value: "PAPER" + description: "Paper" + - value: "AIRPLANE" + description: "Airplane" + - value: "PURPUR" + description: "Purpur" + - value: "MAGMA" + description: "Magma" + - value: "MOHIST" + description: "Mohist" + - value: "CATSERVER" + description: "Catserver" + - value: "CANYON" + description: "Canyon" + - value: "SPONGEVANILLA" + description: "Sponge Vanilla" + - value: "LIMBO" + description: "Limbo" + - value: "CRUCIBLE" + description: "Crucible" + - value: "FTBA" + description: "FTBA" + - value: "CURSEFORGE" + description: "Curseforge" + - variable: FORGEVERSION + label: "Forge Version" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "FORGE"]] + - variable: FORGE_INSTALLER + label: "Forge Installer" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "FORGE"]] + - variable: FORGE_INSTALLER_URL + label: "Forge Installer URL" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "FORGE"]] + - variable: FABRIC_LOADER_VERSION + label: "Fabric Loader Version" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "FABRIC"]] + - variable: FABRIC_INSTALLER + label: "Fabric Installer" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "FABRIC"]] + - variable: FABRIC_INSTALLER_URL + label: "Fabric Installer URL" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "FABRIC"]] + - variable: SPIGOT_DOWNLOAD_URL + label: "Spigot Download URL" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "SPIGOT"]] + - variable: BUILD_FROM_SOURCE + label: "Build Spigot from Source?" + schema: + type: boolean + required: false + default: false + show_if: [[TYPE, "=", "SPIGOT"]] + - variable: BUKKIT_DOWNLOAD_URL + label: "Bukkit Download URL" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "BUKKIT"]] + - variable: PAPERBUILD + label: "Paper Build Number" + schema: + type: int + required: false + default: 0 + show_if: [[TYPE, "=", "PAPER"]] + - variable: PAPER_DOWNLOAD_URL + label: "Paper Download URL" + schema: + type: int + required: false + default: 0 + show_if: [[TYPE, "=", "PAPER"]] + - variable: PACKWIZ_URL + label: "Packwiz URL" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "PAPER"]] + - variable: AIRPLANE_BUILD + label: "Airplane Build" + schema: + type: string + required: false + default: "lastSuccessfulBuild" + show_if: [[TYPE, "=", "AIRPLANE"]] + - variable: USE_FLARE_FLAGS + label: "Enable to add appropriate flags for the Flare profiler" + schema: + type: boolean + required: false + default: false + show_if: [[TYPE, "=", "AIRPLANE"]] + - variable: MAGMA_CHANNEL + label: "Magma Channel" + schema: + type: string + required: false + default: "stable" + show_if: [[TYPE, "=", "MAGMA"]] + - variable: MOHIST_BUILD + label: "Mohist Build" + schema: + type: int + required: false + default: 0 + show_if: [[TYPE, "=", "MOHIST"]] + - variable: CANYON_BUILD + label: "Canyon Build" + schema: + type: int + required: false + default: 0 + show_if: [[TYPE, "=", "CANYON"]] + - variable: SPONGEBRANCH + label: "Sponge Branch" + schema: + type: string + required: false + default: "STABLE" + show_if: [[TYPE, "=", "SPONGEVANILLA"]] + - variable: SPONGEVERSION + label: "Sponge Version" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "SPONGEVANILLA"]] + - variable: LIMBO_BUILD + label: "Limbo Build" + schema: + type: string + required: false + default: "LATEST" + show_if: [[TYPE, "=", "LIMBO"]] + - variable: LIMBO_SCHEMA_FILENAME + label: "Limbo Schema Filename" + schema: + type: string + required: false + default: "default.schem" + show_if: [[TYPE, "=", "LIMBO"]] + - variable: CRUCIBLE_RELEASE + label: "Crucible Release" + schema: + type: string + required: false + default: "latest" + show_if: [[TYPE, "=", "CRUCIBLE"]] + - variable: FTB_MODPACK_ID + label: "FTB Modpack ID" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "FTBA"]] + - variable: FTB_MODPACK_VERSION_ID + label: "FTB Modpack Version ID" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "FTBA"]] + - variable: CF_SERVER_MOD + label: "CF Server Mod" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "CURSEFORGE"]] + - variable: CF_BASE_DIR + label: "CF Base Dir" + schema: + type: string + required: false + default: "" + show_if: [[TYPE, "=", "CURSEFORGE"]] + - variable: USE_MODPACK_START_SCRIPT + label: "Use Modpack Start Script" + schema: + type: boolean + required: false + default: true + show_if: [[TYPE, "=", "CURSEFORGE"]] + - variable: FTB_LEGACYJAVAFIXER + label: "Fix for \"unable to launch forgemodloader\"" + schema: + type: boolean + required: false + default: false + show_if: [[TYPE, "=", "CURSEFORGE"]] + - variable: DIFFICULTY + label: "Difficulty" + schema: + type: string + required: true + default: "easy" + enum: + - value: peaceful + description: Peaceful + - value: easy + description: Easy + - value: normal + description: Normal + - value: hard + description: Hard + - variable: WHITELIST + label: "Whitelist" + schema: + type: string + required: false + default: "" + - variable: OPS + label: "OPs" + schema: + type: string + required: false + default: "" + - variable: ICON + label: "URL to Server Icon" + schema: + type: string + required: false + default: "" + - variable: MAX_PLAYERS + label: "Max Connected Players" + schema: + type: int + required: true + default: 20 + - variable: MAX_WORLD_SIZE + label: "World Border Radius in blocks" + schema: + type: int + required: true + default: 10000 + - variable: ALLOW_NETHER + label: "Enable/Disable Nether" + schema: + type: boolean + required: false + default: true + - variable: ANNOUNCE_PLAYER_ACHIEVEMENTS + label: "Enable/Disable Announceing Player Achievements" + schema: + type: boolean + required: false + default: true + - variable: ENABLE_COMMAND_BLOCK + label: "Enable/Disable Command Blocks" + schema: + type: boolean + required: false + default: false + - variable: FORCE_GAMEMODE + label: "Enable/Disable Force Gamemode" + schema: + type: boolean + required: false + default: false + - variable: GENERATE_STRUCTURES + label: "Enable/Disable Generate Structures" + schema: + type: boolean + required: false + default: true + - variable: HARDCORE + label: "Enable/Disable Hardcore Mode" + schema: + type: boolean + required: false + default: false + - variable: MAX_BUILD_HEIGHT + label: "Max World Build Height" + schema: + type: int + required: true + default: 256 + - variable: MAX_TICK_TIME + label: "Max Tick Time" + schema: + type: int + required: true + default: 60000 + - variable: SPAWN_ANIMALS + label: "Enable/Disable Spawning Animals" + schema: + type: boolean + required: false + default: true + - variable: SPAWN_MONSTERS + label: "Enable/Disable Spawning Monsters" + schema: + type: boolean + required: false + default: true + - variable: SPAWN_NPCS + label: "Enable/Disable Spawning NPCs" + schema: + type: boolean + required: false + default: true + - variable: VIEW_DISTANCE + label: "Server View Distance" + schema: + type: int + required: true + default: 10 + - variable: SEED + label: "Level Seed" + schema: + type: string + required: false + default: "" + - variable: MODE + label: "Default Gamemode" + schema: + type: string + required: true + default: "survival" + enum: + - value: "survival" + description: "Survival" + - value: "creative" + description: "Creative" + - value: "adventure" + description: "Adventure" + - value: "spectator" + description: "Spectator" + - variable: MOTD + label: "Server Message of the Day" + schema: + type: string + required: false + default: "Welcome to Minecraft on TrueNAS Scale!" + - variable: PVP + label: "Enable/Disable PVP" + schema: + type: boolean + required: false + default: false + - variable: LEVEL_TYPE + label: "Level Type" + schema: + type: string + required: true + default: "DEFAULT" + - variable: GENERATOR_SETTINGS + label: "Generator Settings" + schema: + type: string + required: false + default: "" + - variable: LEVEL + label: "World Save Name" + schema: + type: string + required: true + default: "world" + - variable: WORLD + label: "URL of world download" + schema: + type: string + required: false + default: "" + - variable: FORCE_REDOWNLOAD + label: "Force redownload server files" + schema: + type: string + required: false + default: "" + - variable: ONLINE_MODE + label: "Enable/Disable Online Mode" + schema: + type: boolean + required: false + default: true + - variable: advanced + label: "Show Advanced Server Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: MEMORY + label: "Server Memory" + schema: + type: string + required: true + default: "2048M" + - variable: JVM_OPTS + label: "JVM Options" + schema: + type: string + required: false + default: "" + - variable: JVM_XX_OPTS + label: "JVM -X Options" + schema: + type: string + required: false + default: "" + +# Include{containerConfig} + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelector} + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 25565 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 25565 + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + +# Include{serviceExpert} + +# Include{serviceList} + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Data Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" +# Include{persistenceBasic} + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" +# Include{persistenceAdvanced} +# Include{persistenceList} + +# Include{ingressList} + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true +# Include{securityContextAdvanced} + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 +# Include{podSecurityContextAdvanced} + +# Include{resources} + +# Include{advanced} + +# Include{addons} diff --git a/charts/games/minecraft-java/templates/common.yaml b/charts/games/minecraft-java/templates/common.yaml new file mode 100644 index 00000000000..a6613c2ce21 --- /dev/null +++ b/charts/games/minecraft-java/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/charts/games/minecraft-java/values.yaml b/charts/games/minecraft-java/values.yaml new file mode 100644 index 00000000000..7630c1c91cc --- /dev/null +++ b/charts/games/minecraft-java/values.yaml @@ -0,0 +1,62 @@ +image: + repository: tccr.io/truecharts/minecraft-java + tag: 21.26.0@sha256:faf49a0177e95e3af763dd5fddb9077885870055364edbf194a1b94eaeaf4641 + pullPolicy: Always +j11Image: + repository: tccr.io/truecharts/minecraft-java11 + tag: latest@sha256:33b93b09ac060814fb5d985d472cfa0369a6de042eacb6306e125aa008be2eec + pullPolicy: Always +j11j9Image: + repository: tccr.io/truecharts/minecraft-java11-openj9 + tag: latest@sha256:248ecbdca94efa8ab7c0b0437a0b59ba82ca9dabe6cd1f90a8cbd43319f15b82 + pullPolicy: Always +j8Image: + repository: tccr.io/truecharts/minecraft-java8-openj9 + tag: latest@sha256:3e606f04009ab1341ed119a9d10cb83a444d942e61a3f446281d9d17c1f84c04 + pullPolicy: Always +j8j9Image: + repository: tccr.io/truecharts/minecraft-java8-openj9 + tag: latest@sha256:6abc50828cd72c26e1258af759f9fff091db01ac13253b13bd548e3ef2f359e6 + pullPolicy: Always + +portal: + enabled: false + +env: + EULA: "TRUE" + VERSION: "LATEST" + TYPE: "VANILLA" + DIFFICULTY: easy + MAX_PLAYERS: 20 + MAX_WORLD_SIZE: 10000 + ALLOW_NETHER: true + ANNOUNCE_PLAYER_ACHIEVEMENTS: true + ENABLE_COMMAND_BLOCK: false + FORCE_GAMEMODE: false + GENERATE_STRUCTURES: true + HARDCORE: false + MAX_BUILD_HEIGHT: 256 + MAX_TICK_TIME: 60000 + SPAWN_ANIMALS: true + SPAWN_MONSTERS: true + SPAWN_NPCS: true + VIEW_DISTANCE: 16 + MODE: survival + MOTD: "Welcome to Minecraft on TrueNAS Scale!" + PVP: false + LEVEL_TYPE: DEFAULT + LEVEL: world + ONLINE_MODE: true + MEMORY: 2048M + +persistence: + data: + enabled: true + mountPath: "/data" + +service: + main: + ports: + main: + port: 25565 + targetPort: 25565 diff --git a/charts/games/statisfactory/.helmignore b/charts/games/statisfactory/.helmignore new file mode 100644 index 00000000000..e559de0a012 --- /dev/null +++ b/charts/games/statisfactory/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS diff --git a/charts/games/statisfactory/Chart.yaml b/charts/games/statisfactory/Chart.yaml new file mode 100644 index 00000000000..3c94bef9767 --- /dev/null +++ b/charts/games/statisfactory/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "1.2.3" +dependencies: +- name: common + repository: https://truecharts.org + version: 8.14.4 +deprecated: false +description: Satisfactory Dedicated Server +home: https://github.com/truecharts/apps/tree/master/charts/games/Satisfactory +icon: https://truecharts.org/_static/img/appicons/Satisfactory -icon.png +keywords: +- satisfactory +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: statisfactory +sources: +- https://github.com/wolveix/satisfactory-server +- https://hub.docker.com/r/wolveix/satisfactory-server +type: application +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - games + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/games/statisfactory/questions.yaml b/charts/games/statisfactory/questions.yaml new file mode 100644 index 00000000000..c7072559a98 --- /dev/null +++ b/charts/games/statisfactory/questions.yaml @@ -0,0 +1,485 @@ +# Include{groups} +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true +# Include{global} + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" +# Include{controllerExpert} + + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: +# Include{fixedEnv} + - variable: PUID + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: AUTOPAUSE + label: "Enable/Disable Auto pause" + schema: + type: boolean + required: false + default: true + - variable: AUTOSAVEINTERVAL + label: "Auto save interval" + schema: + type: int + required: true + default: 300 + - variable: AUTOSAVENUM + label: "Number of auto saves" + schema: + type: int + required: true + default: 3 + - variable: AUTOSAVEONDISCONNECT + label: "Auto save on Disconnect" + schema: + type: boolean + required: false + default: true + - variable: CRASHREPORT + label: "Crash report" + schema: + type: boolean + required: false + default: true + - variable: DEBUG + label: "Debug" + schema: + type: boolean + required: false + default: false + - variable: DISABLESEASONALEVENTS + label: "Disable seasonal events" + schema: + type: boolean + required: false + default: false + - variable: MAXPLAYERS + label: "Max players" + schema: + type: int + required: true + default: 4 + - variable: SKIPUPDATE + label: "Skip update" + schema: + type: boolean + required: false + default: false + - variable: STEAMBETA + label: "Steam beta" + schema: + type: boolean + required: false + default: false + +# Include{containerConfig} + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelector} + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 7777 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "UDP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 7777 + - variable: beacon + label: "Beacon Service" + description: "The beacon service" + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelector} + - variable: beacon + label: "Beacon Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 15000 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "UDP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 15000 + - variable: query + label: "Query Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelector} + - variable: main + label: "Query Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 15777 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "UDP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 15777 + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + +# Include{serviceExpert} + +# Include{serviceList} + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" +# Include{persistenceBasic} + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" +# Include{persistenceAdvanced} +# Include{persistenceList} + +# Include{ingressList} + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true +# Include{securityContextAdvanced} + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 +# Include{podSecurityContextAdvanced} + +# Include{resources} + +# Include{advanced} + +# Include{addons} diff --git a/charts/games/statisfactory/templates/common.yaml b/charts/games/statisfactory/templates/common.yaml new file mode 100644 index 00000000000..a6613c2ce21 --- /dev/null +++ b/charts/games/statisfactory/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/charts/games/statisfactory/values.yaml b/charts/games/statisfactory/values.yaml new file mode 100644 index 00000000000..0d97098b7b4 --- /dev/null +++ b/charts/games/statisfactory/values.yaml @@ -0,0 +1,74 @@ +image: + repository: wolveix/satisfactory-server + pullPolicy: IfNotPresent + tag: v1.2.3@sha256:5860dbac9fc8cb2e6010b69e60e633d06e25e2a0152f8858a8f23acda7c3c719 + +env: + PUID: 568 + AUTOPAUSE: true + AUTOSAVEINTERVAL: 300 + AUTOSAVENUM: 3 + AUTOSAVEONDISCONNECT: true + CRASHREPORT: true + DEBUG: false + DISABLESEASONALEVENTS: false + MAXPLAYERS: 4 + SERVERBEACONPORT: "{{ .Values.service.beacon.ports.beacon.targetPort }}" + SERVERGAMEPORT: "{{ .Values.service.main.ports.main.targetPort }}" + SERVERIP: "0.0.0.0" + SERVERQUERYPORT: "{{ .Values.service.query.ports.query.targetPort }}" + SKIPUPDATE: false + STEAMBETA: false + +securityContext: + runAsNonRoot: false + readOnlyRootFilesystem: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +persistence: + config: + enabled: true + mountPath: "/config" + +service: + main: + ports: + main: + targetPort: 7777 + port: 7777 + protocol: UDP + beacon: + enabled: true + ports: + beacon: + enabled: true + port: 15000 + targetPort: 15000 + protocol: UDP + query: + enabled: true + ports: + query: + enabled: true + port: 15777 + targetPort: 15777 + protocol: UDP + +probes: + # -- Liveness probe configuration + # @default -- See below + liveness: + enabled: false + + # -- Redainess probe configuration + # @default -- See below + readiness: + enabled: false + + # -- Startup probe configuration + # @default -- See below + startup: + enabled: false diff --git a/docs/_static/img/appicons/minecraft-java-icon.png b/docs/_static/img/appicons/minecraft-java-icon.png new file mode 100644 index 00000000000..29339c9576b Binary files /dev/null and b/docs/_static/img/appicons/minecraft-java-icon.png differ diff --git a/docs/_static/img/appicons/statisfactory-icon.png b/docs/_static/img/appicons/statisfactory-icon.png new file mode 100644 index 00000000000..36a2b94e5ee Binary files /dev/null and b/docs/_static/img/appicons/statisfactory-icon.png differ