From 2cf51e067cc03ac1d37e01c8d85b9819a9b87562 Mon Sep 17 00:00:00 2001 From: Addison McDermid Date: Fri, 7 Mar 2025 23:53:19 +1100 Subject: [PATCH] feat(bytestash) Add new Chart (#32975) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Description** Deploy new chart Bytestash ⚒️ Fixes # **⚙️ Type of change** - [x] ⚙️ Feature/App addition - [ ] 🪛 Bugfix - [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] 🔃 Refactor of current code - [x] 📜 Documentation Changes **🧪 How Has This Been Tested?** This has been tested using app-template. Pending test deployment from incubator train once PR is approved. **📃 Notes:** **✔️ Checklist:** - [x] ⚖️ My code follows the style guidelines of this project - [x] 👀 I have performed a self-review of my own code - [x] #️⃣ I have commented my code, particularly in hard-to-understand areas - [x] 📄 I have made changes to the documentation - [ ] 🧪 I have added tests to this description that prove my fix is effective or that my feature works - [x] ⬆️ I increased versions for any altered app according to semantic versioning - [x] I made sure the title starts with `feat(chart-name):`, `fix(chart-name):`, `chore(chart-name):`, `docs(chart-name):` or `fix(docs):` **➕ App addition** If this PR is an app addition please make sure you have done the following. - [x] 🖼️ I have added an icon in the Chart's root directory called `icon.png` --- _Please don't blindly check all the boxes. Read them and only check those that apply. Those checkboxes are there for the reviewer to see what is this all about and the status of this PR with a quick glance._ --------- Signed-off-by: Addison McDermid Co-authored-by: alfi0812 --- charts/incubator/bytestash/.helmignore | 32 +++++++++++++++ charts/incubator/bytestash/CHANGELOG.md | 4 ++ charts/incubator/bytestash/Chart.yaml | 37 ++++++++++++++++++ charts/incubator/bytestash/README.md | 3 ++ .../incubator/bytestash/docs/How-To-Guide.md | 29 ++++++++++++++ charts/incubator/bytestash/icon.png | Bin 0 -> 9995 bytes .../incubator/bytestash/templates/NOTES.txt | 1 + .../incubator/bytestash/templates/common.yaml | 1 + charts/incubator/bytestash/values.yaml | 36 +++++++++++++++++ 9 files changed, 143 insertions(+) create mode 100644 charts/incubator/bytestash/.helmignore create mode 100644 charts/incubator/bytestash/CHANGELOG.md create mode 100644 charts/incubator/bytestash/Chart.yaml create mode 100644 charts/incubator/bytestash/README.md create mode 100644 charts/incubator/bytestash/docs/How-To-Guide.md create mode 100644 charts/incubator/bytestash/icon.png create mode 100644 charts/incubator/bytestash/templates/NOTES.txt create mode 100644 charts/incubator/bytestash/templates/common.yaml create mode 100644 charts/incubator/bytestash/values.yaml diff --git a/charts/incubator/bytestash/.helmignore b/charts/incubator/bytestash/.helmignore new file mode 100644 index 00000000000..feb7464da6f --- /dev/null +++ b/charts/incubator/bytestash/.helmignore @@ -0,0 +1,32 @@ +# 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 +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png +icon.webp +icon-small.webp diff --git a/charts/incubator/bytestash/CHANGELOG.md b/charts/incubator/bytestash/CHANGELOG.md new file mode 100644 index 00000000000..f3e8318aa10 --- /dev/null +++ b/charts/incubator/bytestash/CHANGELOG.md @@ -0,0 +1,4 @@ +--- +title: Changelog +pagefind: false +--- diff --git a/charts/incubator/bytestash/Chart.yaml b/charts/incubator/bytestash/Chart.yaml new file mode 100644 index 00000000000..7cea0611800 --- /dev/null +++ b/charts/incubator/bytestash/Chart.yaml @@ -0,0 +1,37 @@ +annotations: + max_scale_version: 24.04.1 + min_scale_version: 24.04.0 + truecharts.org/category: Productivity + truecharts.org/max_helm_version: "3.15" + truecharts.org/min_helm_version: "3.11" + truecharts.org/train: incubator +apiVersion: v2 +appVersion: 1.5.7 +dependencies: + - name: common + version: 25.4.10 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: ByteStash is a self-hosted web application designed to store, organise, and manage your code snippets efficiently. With support for creating, editing, and filtering snippets, ByteStash helps you keep track of your code in one secure place. +home: https://truecharts.org/charts/incubator/bytestash +icon: https://truecharts.org/img/hotlink-ok/chart-icons/bytestash.webp +keywords: + - bytestash + - Productivity + - Tools-Utilities + - code +kubeVersion: '>=1.24.0-0' +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: bytestash +sources: + - https://github.com/jordan-dalby/ByteStash + - https://github.com/truecharts/charts/tree/master/charts/incubator/bytestash +type: application +version: 0.0.1 diff --git a/charts/incubator/bytestash/README.md b/charts/incubator/bytestash/README.md new file mode 100644 index 00000000000..7ef0b890d73 --- /dev/null +++ b/charts/incubator/bytestash/README.md @@ -0,0 +1,3 @@ +--- +title: README +--- \ No newline at end of file diff --git a/charts/incubator/bytestash/docs/How-To-Guide.md b/charts/incubator/bytestash/docs/How-To-Guide.md new file mode 100644 index 00000000000..581460ab155 --- /dev/null +++ b/charts/incubator/bytestash/docs/How-To-Guide.md @@ -0,0 +1,29 @@ +--- +title: How-To +--- + +This is a quick how-to or setup-guide to use Bytestash on Talos. + +## App Configuration + +### Required Environment Settings: +The following must be specified and updated in your Helm Release file. +- `JWT_SECRET`: Provide a unique secret for the JSON Web Token + +### Optional Environment Settings: +The following may be left at the default setting, OR you may override in your Helm Release file dependent on your requirements. +- `BASE_PATH`: write /bIytestash for a domain such as my.domain/bytestash, leave blank in every other case +- `TOKEN_EXPIRY`: How long the token lasts Default is 24 hrs. +- `ALLOW_NEW_ACCOUNTS`: Will the instance allow new new accounts to be created. The Default is to allow new account creation. +- `DEBUG`: Enable to turn on logging, in most instances leave disabled +- `DISABLE_ACCOUNTS`: Disable the use of any accounts, export snippets first if enabling on an existing instance, as it will be like starting with a fresh instance. Default is false. +- `DISABLE_INTERNAL_ACCOUNTS`: Disable the use of internal accounts. Default is false. + +### OIDC Single Sign On +Setting up the OIDC section will allow you to enable Single Sign On (SSO). +- `OIDC_ENABLED`: Set this to true to enable SSO. The default is for SSO - OIDC to be disabled. +- `OIDC_DISPLAY_NAME`: Enter the Display Name for users signing in with SSO, the default is set to Single Sign-on +- `OIDC_ISSUER_URL`: Enter the OIDC issuer URL, e.g. https://authentik.mydomain.com/application/o/bytestash/ for authentik +- `OIDC_CLIENT_ID`: Enter the OIDC client ID, the SSO app provider will provide this +- `OIDC_CLIENT_SECRET`: Enter the OIDC client secret, the SSO app provider will provide this +- `OIDC_SCOPES`: The OIDC scopes to request, e.g. "openid profile email groups" diff --git a/charts/incubator/bytestash/icon.png b/charts/incubator/bytestash/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..aa44dff1464a76955beab52bb3312a9121c796e5 GIT binary patch literal 9995 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