From a57039dd2255e21c22a72aa3912d89fcd3b9a463 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Fri, 5 May 2023 19:20:46 +0000 Subject: [PATCH] Update catalog information --- catalog.json | 30 +- community/terraria/1.0.0/Chart.lock | 6 + community/terraria/1.0.0/Chart.yaml | 26 ++ community/terraria/1.0.0/README.md | 17 + community/terraria/1.0.0/app-readme.md | 17 + .../terraria/1.0.0/charts/common-1.0.6.tgz | Bin 0 -> 54952 bytes .../1.0.0/ci/tshock-basic-values.yaml | 19 ++ .../1.0.0/ci/tshock-password-values.yaml | 19 ++ .../1.0.0/ci/vanilla-basic-values.yaml | 20 ++ community/terraria/1.0.0/ix_values.yaml | 44 +++ community/terraria/1.0.0/metadata.yaml | 8 + community/terraria/1.0.0/questions.yaml | 316 ++++++++++++++++++ community/terraria/1.0.0/templates/NOTES.txt | 1 + .../1.0.0/templates/_configuarion.tpl | 78 +++++ .../terraria/1.0.0/templates/_terraria.tpl | 81 +++++ .../terraria/1.0.0/templates/common.yaml | 6 + community/terraria/item.yaml | 4 + 17 files changed, 691 insertions(+), 1 deletion(-) create mode 100644 community/terraria/1.0.0/Chart.lock create mode 100644 community/terraria/1.0.0/Chart.yaml create mode 100644 community/terraria/1.0.0/README.md create mode 100644 community/terraria/1.0.0/app-readme.md create mode 100644 community/terraria/1.0.0/charts/common-1.0.6.tgz create mode 100644 community/terraria/1.0.0/ci/tshock-basic-values.yaml create mode 100644 community/terraria/1.0.0/ci/tshock-password-values.yaml create mode 100644 community/terraria/1.0.0/ci/vanilla-basic-values.yaml create mode 100644 community/terraria/1.0.0/ix_values.yaml create mode 100644 community/terraria/1.0.0/metadata.yaml create mode 100644 community/terraria/1.0.0/questions.yaml create mode 100644 community/terraria/1.0.0/templates/NOTES.txt create mode 100644 community/terraria/1.0.0/templates/_configuarion.tpl create mode 100644 community/terraria/1.0.0/templates/_terraria.tpl create mode 100644 community/terraria/1.0.0/templates/common.yaml create mode 100644 community/terraria/item.yaml diff --git a/catalog.json b/catalog.json index 99f852ba69..ca1b61592c 100644 --- a/catalog.json +++ b/catalog.json @@ -398,7 +398,7 @@ "latest_version": "1.0.4", "latest_app_version": "v2.43.1", "latest_human_version": "v2.43.1_1.0.4", - "last_update": "2023-05-03 13:56:14", + "last_update": "2023-05-05 09:25:34", "name": "prometheus", "recommended": false, "title": "Prometheus", @@ -500,6 +500,34 @@ "tags": [], "icon_url": "https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg" }, + "terraria": { + "app_readme": "

Terraria

\n

Terraria is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy.

\n

This applies only for the TShock image.\nOn the first run, you have to check the logs to get the server token. You will find something like this:

\n

text\nLogin before join enabled. Users may be prompted for an account specific password instead of a server password on connect.\nLogin using UUID enabled. Users automatically login via UUID.\nA malicious server can easily steal a user's UUID. You may consider turning this option off if you run a public server.\nTShock Notice: setup-code.txt is still present, and the code located in that file will be used.\nTo setup the server, join the game and type /setup 424041\nThis token will display until disabled by verification. (/setup)

\n

Join the server and run /setup <token>

", + "categories": [ + "game", + "terraria" + ], + "description": "Terraria is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy.", + "healthy": true, + "healthy_error": null, + "home": "https://terraria.org/", + "location": "/__w/charts/charts/community/terraria", + "latest_version": "1.0.0", + "latest_app_version": "1.4.4.9", + "latest_human_version": "1.4.4.9_1.0.0", + "last_update": null, + "name": "terraria", + "recommended": false, + "title": "Terraria", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [], + "icon_url": "https://static.wikia.nocookie.net/terraria_gamepedia/images/a/a4/NewPromoLogo.png/revision/latest" + }, "radarr": { "app_readme": "

Radarr

\n

Radarr is a movie collection manager for Usenet and BitTorrent users.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Radarr directories.\nAfterward, the Radarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", "categories": [ diff --git a/community/terraria/1.0.0/Chart.lock b/community/terraria/1.0.0/Chart.lock new file mode 100644 index 0000000000..1aecf89979 --- /dev/null +++ b/community/terraria/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.6 +digest: sha256:2f1f31c15fb7f92db141a66adbb8d23a8598727730050a3883a211763a4e5472 +generated: "2023-04-21T18:31:42.509470102+03:00" diff --git a/community/terraria/1.0.0/Chart.yaml b/community/terraria/1.0.0/Chart.yaml new file mode 100644 index 0000000000..7a5402e8ab --- /dev/null +++ b/community/terraria/1.0.0/Chart.yaml @@ -0,0 +1,26 @@ +name: terraria +description: Terraria is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy. +annotations: + title: Terraria +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '1.4.4.9' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.0.6 +home: https://terraria.org/ +icon: https://static.wikia.nocookie.net/terraria_gamepedia/images/a/a4/NewPromoLogo.png/revision/latest +sources: + - https://terraria.org/ + - https://github.com/truenas/charts/tree/master/community/terraria + - https://github.com/ryansheehan/terraria +keywords: + - game + - terraria diff --git a/community/terraria/1.0.0/README.md b/community/terraria/1.0.0/README.md new file mode 100644 index 0000000000..1d00d35b91 --- /dev/null +++ b/community/terraria/1.0.0/README.md @@ -0,0 +1,17 @@ +# Terraria + +[Terraria](https://terraria.org/) is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy. + +This applies only for the `TShock` image. +On the first run, you have to check the logs to get the server token. You will find something like this: + +```text +Login before join enabled. Users may be prompted for an account specific password instead of a server password on connect. +Login using UUID enabled. Users automatically login via UUID. +A malicious server can easily steal a user's UUID. You may consider turning this option off if you run a public server. +TShock Notice: setup-code.txt is still present, and the code located in that file will be used. +To setup the server, join the game and type /setup 424041 +This token will display until disabled by verification. (/setup) +``` + +Join the server and run `/setup ` diff --git a/community/terraria/1.0.0/app-readme.md b/community/terraria/1.0.0/app-readme.md new file mode 100644 index 0000000000..1d00d35b91 --- /dev/null +++ b/community/terraria/1.0.0/app-readme.md @@ -0,0 +1,17 @@ +# Terraria + +[Terraria](https://terraria.org/) is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy. + +This applies only for the `TShock` image. +On the first run, you have to check the logs to get the server token. You will find something like this: + +```text +Login before join enabled. Users may be prompted for an account specific password instead of a server password on connect. +Login using UUID enabled. Users automatically login via UUID. +A malicious server can easily steal a user's UUID. You may consider turning this option off if you run a public server. +TShock Notice: setup-code.txt is still present, and the code located in that file will be used. +To setup the server, join the game and type /setup 424041 +This token will display until disabled by verification. (/setup) +``` + +Join the server and run `/setup ` diff --git a/community/terraria/1.0.0/charts/common-1.0.6.tgz b/community/terraria/1.0.0/charts/common-1.0.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..65d08ebfab45ec0f4279e01f31a9d8531b97c7f8 GIT binary patch literal 54952 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 + TShock is a fork of the Terraria server that adds a number of features.
+ Vanilla is the original Terraria server.
+ Only applies to newly generated worlds. + schema: + type: string + default: image + required: true + immutable: true + enum: + - value: image + description: TShock + - value: vanillaImage + description: Vanilla + - variable: worldName + label: World Name + description: | + Sets the world's name.
+ Only applies to newly generated worlds. + schema: + type: string + default: My-World + required: true + immutable: true + - variable: worldSeed + label: World Seed + description: | + Sets the world's seed.
+ Only applies to newly generated worlds. + schema: + type: string + default: '' + immutable: true + - variable: worldEvil + label: World's Evil + description: | + Sets the world's evil state.
+ Only applies to newly generated worlds. + schema: + type: string + default: random + required: true + immutable: true + enum: + - value: random + description: Random + - value: corrupt + description: Corrupt + - value: crimson + description: Crimson + - variable: worldSize + label: World Size + description: | + Sets the world's size.
+ Only applies to newly generated worlds. + schema: + type: string + default: small + required: true + immutable: true + enum: + - value: small + description: Small (1) + - value: medium + description: Medium (2) + - value: large + description: Large (3) + - variable: worldDifficulty + label: World Difficulty + description: | + Sets the world's difficulty.
+ Only applies to newly generated worlds. + schema: + type: string + default: normal + required: true + immutable: true + enum: + - value: normal + description: Normal (0) + - value: expert + description: Expert (1) + - value: master + description: Master (2) + - value: journey + description: Journey (3) + - variable: maxPlayers + label: Maximum Players + description: Starts the server with the given player count as the maximum. + schema: + type: int + default: 8 + min: 1 + max: 255 + required: true + - variable: password + label: Server Password + description: Sets the server password. + schema: + type: string + private: true + default: '' + - variable: secure + label: Secure Server + description: Turns on the base game's "anti-spam" feature. + schema: + type: boolean + default: false + - variable: forceUpdate + label: Force Update + description: | + Forces the server to continue running, and not hibernating when no players are on.
+ This results in time passing, grass growing, and cpu running. + schema: + type: boolean + default: false + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Terraria. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: additionalArgs + label: Additional Arguments + description: | + Configure additional arguments for Terraria.
+ Value is optional for flags like -heaptile
+ For example:
+ Key: -lang
+ Value: en-US + schema: + type: list + default: [] + items: + - variable: arg + label: Argument + schema: + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + + - variable: terrariaNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: serverPort + label: Server Port + description: The port for the Terraria Server. + schema: + type: int + default: 30000 + min: 9000 + max: 65535 + required: true + - variable: hostNetwork + label: Host Network + description: | + Bind to the host network. It's recommended to keep this disabled.
+ schema: + type: boolean + default: false + + - variable: terrariaStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: world + label: Terraria World Storage + description: The path to store Terraria World. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "world" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: plugins + label: Terraria Plugins Storage + description: The path to store Terraria Plugins. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: "plugins" + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + + - variable: resources + group: Resources Configuration + label: "" + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Terraria. + schema: + type: string + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Terraria. + schema: + type: string + default: "8Gi" + required: true diff --git a/community/terraria/1.0.0/templates/NOTES.txt b/community/terraria/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/terraria/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/terraria/1.0.0/templates/_configuarion.tpl b/community/terraria/1.0.0/templates/_configuarion.tpl new file mode 100644 index 0000000000..2628478f31 --- /dev/null +++ b/community/terraria/1.0.0/templates/_configuarion.tpl @@ -0,0 +1,78 @@ +{{- define "terraria.configuration" -}} + {{ include "terraria.validation" $ }} + {{ $sizes := (dict "small" 1 "medium" 2 "large" 3) }} + {{ $difficutlies := (dict "normal" 0 "expert" 1 "master" 2 "journey" 3) }} + {{ $flags := (list "-port" "-world" "-maxplayers" "-password" "-secure" "-forceupdate" "-worldevil" "-difficulty" "-autocreate" "-seed") }} +{{/* worldevil, dificulty and autocreate flags are only used + when a world is generated. According to docs server will + ingore them if a world exists, so we can safely pass + them all the time and let server handle it. + Also -autocreate must come before other flags. +*/}} +- -autocreate +- {{ get $sizes .Values.terrariaConfig.worldSize | quote }} +- -worldevil +- {{ .Values.terrariaConfig.worldEvil | quote }} +- -difficulty +- {{ get $difficutlies .Values.terrariaConfig.worldDifficulty | quote }} +{{ with .Values.terrariaConfig.worldSeed }} +- -seed +- {{ . | quote }} +{{ end }} +- -port +- {{ .Values.terrariaNetwork.serverPort | quote }} +- -world +- {{ printf "/root/.local/share/Terraria/Worlds/%s.wld" .Values.terrariaConfig.worldName | quote }} +- -maxplayers +- {{ .Values.terrariaConfig.maxPlayers | quote }} +{{ with .Values.terrariaConfig.password }} +- -password +- {{ . | quote }} +{{ end }} +{{ if .Values.terrariaConfig.secure }} +- -secure +{{ end }} +{{ if .Values.terrariaConfig.forceUpdate }} +- -forceupdate +{{ end }} +{{ range $arg := .Values.terrariaConfig.additionalArgs }} + {{ if (mustHas $arg.key $flags) }} + {{ fail (printf "Terraria - Argument [%s] is already handled by the app, please use the corresponding field instead" $arg.key) }} + {{ end }} + - {{ $arg.key | quote }} + {{ with $arg.value }} + - {{ . | quote }} + {{ end }} +{{ end }} +{{- end -}} + +{{- define "terraria.validation" -}} + + {{- if not (mustRegexMatch "^[a-zA-Z0-9-]+$" .Values.terrariaConfig.worldName) -}} + {{- fail "Terraria - Expected World Name to only have [letters, numbers, dashes]" -}} + {{- end -}} + + {{- if not .Values.terrariaConfig.maxPlayers -}} + {{- fail "Terraria - Expected non-empty Max Players" -}} + {{- end -}} + + {{- if gt (int .Values.terrariaConfig.maxPlayers) 255 -}} + {{- fail "Terraria - Expected Max Players to be at most 255" -}} + {{- end -}} + + {{- $evils := (list "crimson" "corrupt" "random") -}} + {{- if not (mustHas .Values.terrariaConfig.worldEvil $evils) -}} + {{- fail (printf "Terraria - Expected World Evil to be one of [%s], but got [%s]" (join ", " $evils) .Values.terrariaConfig.worldEvil) -}} + {{- end -}} + + {{- $sizes := (list "small" "medium" "large") -}} + {{- if not (mustHas .Values.terrariaConfig.worldSize $sizes) -}} + {{- fail (printf "Terraria - Expected World Size to be one of [%s], but got [%s]" (join ", " $sizes) .Values.terrariaConfig.worldSize) -}} + {{- end -}} + + {{- $difficutlies := (list "normal" "expert" "master" "journey") -}} + {{- if not (mustHas .Values.terrariaConfig.worldDifficulty $difficutlies) -}} + {{- fail (printf "Terraria - Expected World Difficulty to be one of [%s], but got [%s]" (join ", " $difficutlies) .Values.terrariaConfig.worldDifficulty) -}} + {{- end -}} + +{{- end -}} diff --git a/community/terraria/1.0.0/templates/_terraria.tpl b/community/terraria/1.0.0/templates/_terraria.tpl new file mode 100644 index 0000000000..2cf89364a6 --- /dev/null +++ b/community/terraria/1.0.0/templates/_terraria.tpl @@ -0,0 +1,81 @@ +{{- define "terraria.workload" -}} +workload: + terraria: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: {{ .Values.terrariaNetwork.hostNetwork }} + containers: + terraria: + enabled: true + primary: true + imageSelector: {{ .Values.terrariaConfig.imageSelector }} + tty: true + stdin: true + args: + {{- include "terraria.configuration" $ | nindent 12 }} + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + envList: + {{ with .Values.terrariaConfig.additionalEnvs }} + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + # Probes are disabled because it fills the logs with + # "login attemps" + liveness: + enabled: {{ .Values.ci }} + type: tcp + port: "{{ .Values.terrariaNetwork.serverPort }}" + readiness: + enabled: {{ .Values.ci }} + type: tcp + port: "{{ .Values.terrariaNetwork.serverPort }}" + startup: + enabled: {{ .Values.ci }} + type: tcp + port: "{{ .Values.terrariaNetwork.serverPort }}" + +{{/* Service */}} +service: + terraria: + enabled: true + primary: true + type: NodePort + targetSelector: terraria + ports: + server: + enabled: true + primary: true + port: {{ .Values.terrariaNetwork.serverPort }} + nodePort: {{ .Values.terrariaNetwork.serverPort }} + targetSelector: terraria + +{{/* Persistence */}} +persistence: + world: + enabled: true + type: {{ .Values.terrariaStorage.world.type }} + datasetName: {{ .Values.terrariaStorage.world.datasetName | default "" }} + hostPath: {{ .Values.terrariaStorage.world.hostPath | default "" }} + targetSelector: + terraria: + terraria: + mountPath: /root/.local/share/Terraria/Worlds + plugins: + enabled: true + type: {{ .Values.terrariaStorage.plugins.type }} + datasetName: {{ .Values.terrariaStorage.plugins.datasetName | default "" }} + hostPath: {{ .Values.terrariaStorage.plugins.hostPath | default "" }} + targetSelector: + terraria: + terraria: + mountPath: /plugins +{{- end -}} diff --git a/community/terraria/1.0.0/templates/common.yaml b/community/terraria/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..6818d33e27 --- /dev/null +++ b/community/terraria/1.0.0/templates/common.yaml @@ -0,0 +1,6 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "terraria.workload" $ | fromYaml) -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/terraria/item.yaml b/community/terraria/item.yaml new file mode 100644 index 0000000000..7d1cecd5dd --- /dev/null +++ b/community/terraria/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://static.wikia.nocookie.net/terraria_gamepedia/images/a/a4/NewPromoLogo.png/revision/latest +categories: + - game + - terraria