diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 0000000..8950129
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,2290 @@
+{
+ "projectName": "charts",
+ "projectOwner": "truecharts",
+ "repoType": "github",
+ "repoHost": "https://github.com",
+ "files": [
+ ".github/README.md"
+ ],
+ "badgeTemplate": "[](#contributors)",
+ "imageSize": 100,
+ "commit": true,
+ "contributors": [
+ {
+ "login": "Ornias1993",
+ "name": "Kjeld Schouten-Lebbing",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7613738?v=4",
+ "profile": "http://schouten-lebbing.nl",
+ "contributions": [
+ "code",
+ "infra",
+ "doc",
+ "review",
+ "financial"
+ ]
+ },
+ {
+ "login": "justinclift",
+ "name": "Justin Clift",
+ "avatar_url": "https://avatars.githubusercontent.com/u/406299?v=4",
+ "profile": "http://sqlitebrowser.org",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "whiskerz007",
+ "name": "whiskerz007",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2713522?v=4",
+ "profile": "https://github.com/whiskerz007",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "stavros-k",
+ "name": "Stavros Kois",
+ "avatar_url": "https://avatars.githubusercontent.com/u/47820033?v=4",
+ "profile": "https://github.com/stavros-k",
+ "contributions": [
+ "code",
+ "doc",
+ "bug",
+ "review",
+ "financial"
+ ]
+ },
+ {
+ "login": "allen-4",
+ "name": "allen-4",
+ "avatar_url": "https://avatars.githubusercontent.com/u/65494904?v=4",
+ "profile": "https://github.com/allen-4",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "tprelog",
+ "name": "Troy Prelog",
+ "avatar_url": "https://avatars.githubusercontent.com/u/35702532?v=4",
+ "profile": "https://github.com/tprelog",
+ "contributions": [
+ "code",
+ "doc",
+ "financial"
+ ]
+ },
+ {
+ "login": "djs52",
+ "name": "Dan Sheridan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1466018?v=4",
+ "profile": "https://github.com/djs52",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "banzo",
+ "name": "Sebastien Dupont",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2684865?v=4",
+ "profile": "https://www.cetic.be/Sebastien-Dupont?lang=en",
+ "contributions": [
+ "doc",
+ "financial"
+ ]
+ },
+ {
+ "login": "angelnu",
+ "name": "Vegetto",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4406403?v=4",
+ "profile": "https://github.com/angelnu",
+ "contributions": [
+ "review"
+ ]
+ },
+ {
+ "login": "ellienieuwdorp",
+ "name": "Ellie Nieuwdorp",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12896549?v=4",
+ "profile": "https://github.com/ellienieuwdorp",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "natewalck",
+ "name": "Nate Walck",
+ "avatar_url": "https://avatars.githubusercontent.com/u/867868?v=4",
+ "profile": "https://github.com/natewalck",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "warllo54",
+ "name": "Lloyd",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20650065?v=4",
+ "profile": "https://github.com/warllo54",
+ "contributions": [
+ "code",
+ "financial"
+ ]
+ },
+ {
+ "login": "dwithnall",
+ "name": "Dave Withnall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5699800?v=4",
+ "profile": "https://github.com/dwithnall",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "ksimm1",
+ "name": "ksimm1",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1334526?v=4",
+ "profile": "https://github.com/ksimm1",
+ "contributions": [
+ "doc",
+ "bug",
+ "financial",
+ "mentoring"
+ ]
+ },
+ {
+ "login": "acjohnson",
+ "name": "Aaron Johnson",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1386238?v=4",
+ "profile": "http://aaronjohnson.io",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "ralphte",
+ "name": "Ralph",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2996680?v=4",
+ "profile": "https://github.com/ralphte",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "joachimbaten",
+ "name": "Joachim Baten",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2351765?v=4",
+ "profile": "http://www.abc-groep.be",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ },
+ {
+ "login": "mxyng",
+ "name": "Michael Yang",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2372640?v=4",
+ "profile": "https://github.com/mxyng",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "cTurtle98",
+ "name": "Ciaran Farley",
+ "avatar_url": "https://avatars.githubusercontent.com/u/24465356?v=4",
+ "profile": "http://cturtle98.com",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "Heavybullets8",
+ "name": "Heavybullets8",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20793231?v=4",
+ "profile": "https://github.com/Heavybullets8",
+ "contributions": [
+ "doc",
+ "code",
+ "bug",
+ "video",
+ "mentoring",
+ "financial"
+ ]
+ },
+ {
+ "login": "662",
+ "name": "662",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13599186?v=4",
+ "profile": "https://github.com/662",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "alex171",
+ "name": "alex171",
+ "avatar_url": "https://avatars.githubusercontent.com/u/28484494?v=4",
+ "profile": "https://github.com/alex171",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "timothystewart6",
+ "name": "Techno Tim",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1322205?v=4",
+ "profile": "https://www.youtube.com/channel/UCOk-gHyjcWZNj3Br4oxwh0A",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "MingyaoLiu",
+ "name": "Mingyao Liu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3460335?v=4",
+ "profile": "http://mingyaoliu.com",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ },
+ {
+ "login": "NightShaman",
+ "name": "NightShaman",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12952292?v=4",
+ "profile": "https://github.com/NightShaman",
+ "contributions": [
+ "code",
+ "doc",
+ "bug",
+ "financial",
+ "mentoring"
+ ]
+ },
+ {
+ "login": "EspadaV8",
+ "name": "Andrew Smith",
+ "avatar_url": "https://avatars.githubusercontent.com/u/115825?v=4",
+ "profile": "https://espadav8.co.uk",
+ "contributions": [
+ "doc",
+ "test"
+ ]
+ },
+ {
+ "login": "fluxin",
+ "name": "Bob Klosinski",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2821?v=4",
+ "profile": "http://xilix.com",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "sukarn-m",
+ "name": "Sukarn",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10946339?v=4",
+ "profile": "https://github.com/sukarn-m",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "sebsx",
+ "name": "sebs",
+ "avatar_url": "https://avatars.githubusercontent.com/u/735033?v=4",
+ "profile": "https://github.com/sebsx",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Dyllan2000alfa",
+ "name": "Dyllan Tinoco",
+ "avatar_url": "https://avatars.githubusercontent.com/u/29694020?v=4",
+ "profile": "https://github.com/Dyllan2000alfa",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "StevenMcElligott",
+ "name": "StevenMcElligott",
+ "avatar_url": "https://avatars.githubusercontent.com/u/89483932?v=4",
+ "profile": "https://github.com/StevenMcElligott",
+ "contributions": [
+ "code",
+ "financial",
+ "doc",
+ "bug",
+ "mentoring"
+ ]
+ },
+ {
+ "login": "brothergomez",
+ "name": "brothergomez",
+ "avatar_url": "https://avatars.githubusercontent.com/u/38558969?v=4",
+ "profile": "https://github.com/brothergomez",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ },
+ {
+ "login": "Sagit-chu",
+ "name": "sagit",
+ "avatar_url": "https://avatars.githubusercontent.com/u/36596628?v=4",
+ "profile": "https://github.com/Sagit-chu",
+ "contributions": [
+ "code",
+ "bug",
+ "video",
+ "doc",
+ "mentoring"
+ ]
+ },
+ {
+ "login": "zzzhouuu",
+ "name": "Nevan Chow",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8481484?v=4",
+ "profile": "https://zhouyou.info",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "soilheart",
+ "name": "Daniel Carlsson",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9056381?v=4",
+ "profile": "https://github.com/soilheart",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "dlouie-swir",
+ "name": "Devon Louie",
+ "avatar_url": "https://avatars.githubusercontent.com/u/81386715?v=4",
+ "profile": "https://github.com/dlouie-swir",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Alex-Orsholits",
+ "name": "Alex-Orsholits",
+ "avatar_url": "https://avatars.githubusercontent.com/u/56907127?v=4",
+ "profile": "https://github.com/Alex-Orsholits",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Tails32",
+ "name": "Tails32",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2036401?v=4",
+ "profile": "https://github.com/Tails32",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Menaxerius",
+ "name": "Menaxerius",
+ "avatar_url": "https://avatars.githubusercontent.com/u/25470894?v=4",
+ "profile": "https://github.com/Menaxerius",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "hidefog",
+ "name": "hidefog",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13468236?v=4",
+ "profile": "https://github.com/hidefog",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "dalgibbard",
+ "name": "Darren Gibbard",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1159620?v=4",
+ "profile": "https://github.com/dalgibbard",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "barti04",
+ "name": "Barti",
+ "avatar_url": "https://avatars.githubusercontent.com/u/34000663?v=4",
+ "profile": "https://github.com/barti04",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Sunii",
+ "name": "Sunii",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4595444?v=4",
+ "profile": "https://github.com/Sunii",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "trbmchs",
+ "name": "trbmchs",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7928292?v=4",
+ "profile": "https://github.com/trbmchs",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "PylotLight",
+ "name": "Light",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7006124?v=4",
+ "profile": "https://github.com/PylotLight",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Boostflow",
+ "name": "Boostflow",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18465315?v=4",
+ "profile": "https://github.com/Boostflow",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Trigardon",
+ "name": "Trigardon",
+ "avatar_url": "https://avatars.githubusercontent.com/u/98973534?v=4",
+ "profile": "https://github.com/Trigardon",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "dbb12345",
+ "name": "dbb12345",
+ "avatar_url": "https://avatars.githubusercontent.com/u/52704517?v=4",
+ "profile": "https://github.com/dbb12345",
+ "contributions": [
+ "bug",
+ "code"
+ ]
+ },
+ {
+ "login": "karypid",
+ "name": "karypid",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1221101?v=4",
+ "profile": "https://github.com/karypid",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "eingemaischt",
+ "name": "Philipp",
+ "avatar_url": "https://avatars.githubusercontent.com/u/151498?v=4",
+ "profile": "https://github.com/eingemaischt",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "j0hnby",
+ "name": "John",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18377483?v=4",
+ "profile": "https://github.com/j0hnby",
+ "contributions": [
+ "bug",
+ "doc"
+ ]
+ },
+ {
+ "login": "john-parton",
+ "name": "John Parton",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2071543?v=4",
+ "profile": "https://github.com/john-parton",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Amasis",
+ "name": "Marc",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7325217?v=4",
+ "profile": "https://github.com/Amasis",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "fdzaebel",
+ "name": "fdzaebel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/46503230?v=4",
+ "profile": "https://github.com/fdzaebel",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "kloeckwerx",
+ "name": "kloeckwerx",
+ "avatar_url": "https://avatars.githubusercontent.com/u/97212383?v=4",
+ "profile": "https://github.com/kloeckwerx",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "BirdBare",
+ "name": "Bradley Bare",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1051490?v=4",
+ "profile": "https://github.com/BirdBare",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "alexthamm",
+ "name": "Alexander Thamm",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2556372?v=4",
+ "profile": "https://github.com/alexthamm",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "rexit1982",
+ "name": "rexit1982",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7585043?v=4",
+ "profile": "https://github.com/rexit1982",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "iaxx",
+ "name": "iaxx",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13745514?v=4",
+ "profile": "https://github.com/iaxx",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Xstar97",
+ "name": "Xstar97",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9399967?v=4",
+ "profile": "https://xstar97.github.io",
+ "contributions": [
+ "code",
+ "bug",
+ "mentoring"
+ ]
+ },
+ {
+ "login": "ornias",
+ "name": "ornias",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20852677?v=4",
+ "profile": "https://github.com/Ornias",
+ "contributions": [
+ "video"
+ ]
+ },
+ {
+ "login": "joshuata",
+ "name": "Josh Asplund",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3958801?v=4",
+ "profile": "http://joshasplund.com",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "midnight33233",
+ "name": "midnight33233",
+ "avatar_url": "https://avatars.githubusercontent.com/u/25982892?v=4",
+ "profile": "https://github.com/midnight33233",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "kbftech",
+ "name": "kbftech",
+ "avatar_url": "https://avatars.githubusercontent.com/u/77502706?v=4",
+ "profile": "https://github.com/kbftech",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "hogenf",
+ "name": "hogenf",
+ "avatar_url": "https://avatars.githubusercontent.com/u/11094630?v=4",
+ "profile": "https://github.com/hogenf",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "hawkinzzz",
+ "name": "Hawks",
+ "avatar_url": "https://avatars.githubusercontent.com/u/24587652?v=4",
+ "profile": "https://github.com/hawkinzzz",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "bodly2",
+ "name": "Jim Russell",
+ "avatar_url": "https://avatars.githubusercontent.com/u/21004768?v=4",
+ "profile": "https://github.com/bodly2",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "TheGovnah",
+ "name": "TheGovnah",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1300101?v=4",
+ "profile": "https://github.com/TheGovnah",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "famewolf",
+ "name": "famewolf",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4558832?v=4",
+ "profile": "https://github.com/famewolf",
+ "contributions": [
+ "financial",
+ "bug"
+ ]
+ },
+ {
+ "login": "konradbjk",
+ "name": "Konrad Bujak",
+ "avatar_url": "https://avatars.githubusercontent.com/u/31480935?v=4",
+ "profile": "https://github.com/konradbjk",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "190n",
+ "name": "190n",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7763597?v=4",
+ "profile": "https://github.com/190n",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "alexejk",
+ "name": "Alexej Kubarev",
+ "avatar_url": "https://avatars.githubusercontent.com/u/104794?v=4",
+ "profile": "https://alexejk.io",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "r-vanooyen",
+ "name": "r-vanooyen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/45106123?v=4",
+ "profile": "https://github.com/r-vanooyen",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "shadofall",
+ "name": "shadofall",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9327622?v=4",
+ "profile": "https://github.com/shadofall",
+ "contributions": [
+ "doc",
+ "mentoring"
+ ]
+ },
+ {
+ "login": "agreppin",
+ "name": "agreppin",
+ "avatar_url": "https://avatars.githubusercontent.com/u/26579013?v=4",
+ "profile": "https://github.com/agreppin",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "stdedos",
+ "name": "Stavros Ntentos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/133706?v=4",
+ "profile": "https://github.com/stdedos",
+ "contributions": [
+ "code",
+ "ideas"
+ ]
+ },
+ {
+ "login": "VladFlorinIlie",
+ "name": "Vlad-Florin Ilie",
+ "avatar_url": "https://avatars.githubusercontent.com/u/35900803?v=4",
+ "profile": "https://github.com/VladFlorinIlie",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "huma2000",
+ "name": "huma2000",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9518124?v=4",
+ "profile": "https://github.com/huma2000",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "hugalafutro",
+ "name": "hugalafutro",
+ "avatar_url": "https://avatars.githubusercontent.com/u/30209689?v=4",
+ "profile": "https://github.com/hugalafutro",
+ "contributions": [
+ "bug",
+ "financial"
+ ]
+ },
+ {
+ "login": "yehia2amer",
+ "name": "yehia Amer",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6174059?v=4",
+ "profile": "https://github.com/yehia2amer",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "tfrancis",
+ "name": "Tyler Stransky",
+ "avatar_url": "https://avatars.githubusercontent.com/u/29070?v=4",
+ "profile": "https://github.com/tfrancis",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "juggie",
+ "name": "juggie",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2034757?v=4",
+ "profile": "https://github.com/juggie",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "btilford",
+ "name": "Ben Tilford",
+ "avatar_url": "https://avatars.githubusercontent.com/u/248725?v=4",
+ "profile": "https://github.com/btilford",
+ "contributions": [
+ "bug",
+ "code"
+ ]
+ },
+ {
+ "login": "I-nebukad-I",
+ "name": "I-nebukad-I",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16634069?v=4",
+ "profile": "https://github.com/I-nebukad-I",
+ "contributions": [
+ "bug",
+ "code"
+ ]
+ },
+ {
+ "login": "packruler",
+ "name": "Ethan Leisinger",
+ "avatar_url": "https://avatars.githubusercontent.com/u/770373?v=4",
+ "profile": "https://github.com/packruler",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "CullenShane",
+ "name": "Cullen Murphy",
+ "avatar_url": "https://avatars.githubusercontent.com/u/597786?v=4",
+ "profile": "https://github.com/CullenShane",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ },
+ {
+ "login": "jthat",
+ "name": "Jason Thatcher",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1931222?v=4",
+ "profile": "https://github.com/jthat",
+ "contributions": [
+ "code",
+ "bug",
+ "doc"
+ ]
+ },
+ {
+ "login": "stefanschramek",
+ "name": "Stefan Schramek",
+ "avatar_url": "https://avatars.githubusercontent.com/u/921342?v=4",
+ "profile": "https://github.com/stefanschramek",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "nokaka",
+ "name": "nokaka",
+ "avatar_url": "https://avatars.githubusercontent.com/u/101942715?v=4",
+ "profile": "https://github.com/nokaka",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Lockszmith-GH",
+ "name": "Gal Szkolnik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/905716?v=4",
+ "profile": "http://code.lockszmith.com",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "undsoft",
+ "name": "Evgeny Stepanovych",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1481270?v=4",
+ "profile": "https://github.com/undsoft",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "sonicaj",
+ "name": "Waqar Ahmed",
+ "avatar_url": "https://avatars.githubusercontent.com/u/17968138?v=4",
+ "profile": "https://github.com/sonicaj",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "DrSKiZZ",
+ "name": "DrSKiZZ",
+ "avatar_url": "https://avatars.githubusercontent.com/u/50158917?v=4",
+ "profile": "https://github.com/DrSKiZZ",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "janpuc",
+ "name": "Jan Puciłowski",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8539508?v=4",
+ "profile": "https://github.com/janpuc",
+ "contributions": [
+ "code",
+ "test"
+ ]
+ },
+ {
+ "login": "shauncoyne",
+ "name": "Shaun Coyne",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13672807?v=4",
+ "profile": "https://github.com/shauncoyne",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "ich777",
+ "name": "Christoph",
+ "avatar_url": "https://avatars.githubusercontent.com/u/28066518?v=4",
+ "profile": "https://github.com/ich777",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "UnDifferential",
+ "name": "Brandon Rutledge",
+ "avatar_url": "https://avatars.githubusercontent.com/u/17625468?v=4",
+ "profile": "https://github.com/UnDifferential",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "mikeNG",
+ "name": "Michael Bestas",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1216752?v=4",
+ "profile": "https://github.com/mikeNG",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "jurgisrudaks",
+ "name": "Jurģis Rudaks",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4631864?v=4",
+ "profile": "https://rudaks.lv",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "brunofatia",
+ "name": "brunofatia",
+ "avatar_url": "https://avatars.githubusercontent.com/u/67926902?v=4",
+ "profile": "https://github.com/brunofatia",
+ "contributions": [
+ "financial"
+ ]
+ },
+ {
+ "login": "TopicsLP",
+ "name": "TopicsLP",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9019121?v=4",
+ "profile": "https://github.com/TopicsLP",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "schnerring",
+ "name": "Michael Schnerring",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3743342?v=4",
+ "profile": "https://schnerring.net",
+ "contributions": [
+ "bug",
+ "code"
+ ]
+ },
+ {
+ "login": "tlnagy",
+ "name": "Tamas Nagy",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1661487?v=4",
+ "profile": "https://tamasnagy.com",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "openspeedtest",
+ "name": "OpenSpeedTest™️",
+ "avatar_url": "https://avatars.githubusercontent.com/u/51720450?v=4",
+ "profile": "https://OpenSpeedTest.com",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "RichardJActon",
+ "name": "Richard James Acton",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6893043?v=4",
+ "profile": "https://richardjacton.github.io/",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "lps-rocks",
+ "name": "lps-rocks",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10893911?v=4",
+ "profile": "https://github.com/lps-rocks",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Faustvii",
+ "name": "Faust",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4357216?v=4",
+ "profile": "https://github.com/Faustvii",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "uranderu",
+ "name": "uranderu",
+ "avatar_url": "https://avatars.githubusercontent.com/u/71091366?v=4",
+ "profile": "https://github.com/uranderu",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "heytcass",
+ "name": "Tom Cassady",
+ "avatar_url": "https://avatars.githubusercontent.com/u/11260288?v=4",
+ "profile": "https://github.com/heytcass",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Huftierchen",
+ "name": "Huftierchen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16015778?v=4",
+ "profile": "https://github.com/Huftierchen",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "ZasX",
+ "name": "ZasX",
+ "avatar_url": "https://avatars.githubusercontent.com/u/806452?v=4",
+ "profile": "https://github.com/ZasX",
+ "contributions": [
+ "doc",
+ "mentoring",
+ "code"
+ ]
+ },
+ {
+ "login": "aeolus811tw",
+ "name": "Kevin T.",
+ "avatar_url": "https://avatars.githubusercontent.com/u/4956319?v=4",
+ "profile": "https://github.com/aeolus811tw",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Chowarmaan",
+ "name": "Steven Scott",
+ "avatar_url": "https://avatars.githubusercontent.com/u/175738?v=4",
+ "profile": "https://github.com/Chowarmaan",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "piwi3910",
+ "name": "Watteel Pascal",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12539757?v=4",
+ "profile": "https://github.com/piwi3910",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "JamesOsborn-SE",
+ "name": "JamesOsborn-SE",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3580335?v=4",
+ "profile": "https://github.com/JamesOsborn-SE",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "neoestremi",
+ "name": "NeoToxic",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1340877?v=4",
+ "profile": "https://github.com/neoestremi",
+ "contributions": [
+ "mentoring",
+ "bug"
+ ]
+ },
+ {
+ "login": "jab416171",
+ "name": "jab416171",
+ "avatar_url": "https://avatars.githubusercontent.com/u/345752?v=4",
+ "profile": "https://github.com/jab416171",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "HumbleDeer",
+ "name": "Anna",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16231288?v=4",
+ "profile": "http://www.zioniyes.me",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "ChaosBlades",
+ "name": "ChaosBlades",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7530545?v=4",
+ "profile": "https://github.com/ChaosBlades",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "TrueBrain",
+ "name": "Patric Stout",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1663690?v=4",
+ "profile": "https://github.com/TrueBrain",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "SuperQ",
+ "name": "Ben Kochie",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1320667?v=4",
+ "profile": "https://github.com/SuperQ",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jeffb4",
+ "name": "Jeff Bachtel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3298329?v=4",
+ "profile": "https://www.cepheid.org/~jeff/",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "woodsb02",
+ "name": "Ben Woods",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7113557?v=4",
+ "profile": "https://www.woods.am/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "karlshea",
+ "name": "Karl Shea",
+ "avatar_url": "https://avatars.githubusercontent.com/u/40136?v=4",
+ "profile": "http://karlshea.com",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "gouthamkumaran",
+ "name": "Balakumaran MN",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9553104?v=4",
+ "profile": "https://www.linkedin.com/in/gouthamkumaran",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "Jesperbelt",
+ "name": "Jesperbelt",
+ "avatar_url": "https://avatars.githubusercontent.com/u/70942135?v=4",
+ "profile": "https://github.com/Jesperbelt",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "cccs31",
+ "name": "cccs31",
+ "avatar_url": "https://avatars.githubusercontent.com/u/29389546?v=4",
+ "profile": "https://github.com/cccs31",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "ssmucny",
+ "name": "Sam Smucny",
+ "avatar_url": "https://avatars.githubusercontent.com/u/17689855?v=4",
+ "profile": "https://github.com/ssmucny",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "keithamus",
+ "name": "Keith Cirkel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/118266?v=4",
+ "profile": "https://www.keithcirkel.co.uk",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mgale456",
+ "name": "mgale456",
+ "avatar_url": "https://avatars.githubusercontent.com/u/55673155?v=4",
+ "profile": "https://github.com/mgale456",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "fenichelar",
+ "name": "Alec Fenichel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3437075?v=4",
+ "profile": "https://github.com/fenichelar",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "boostchicken",
+ "name": "John Dorman",
+ "avatar_url": "https://avatars.githubusercontent.com/u/427295?v=4",
+ "profile": "https://github.com/boostchicken",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "opello",
+ "name": "Dan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/199623?v=4",
+ "profile": "http://opello.org",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "u4ium",
+ "name": "u4ium",
+ "avatar_url": "https://avatars.githubusercontent.com/u/57515023?v=4",
+ "profile": "https://github.com/u4ium",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "ErroneousBosch",
+ "name": "ErroneousBosch",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20829218?v=4",
+ "profile": "https://github.com/ErroneousBosch",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "MaverickD650",
+ "name": "MaverickD650",
+ "avatar_url": "https://avatars.githubusercontent.com/u/92877124?v=4",
+ "profile": "https://github.com/MaverickD650",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ },
+ {
+ "login": "Grogdor",
+ "name": "Grogdor",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6863613?v=4",
+ "profile": "https://github.com/Grogdor",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "rgooler",
+ "name": "Ryan Gooler",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1108200?v=4",
+ "profile": "https://github.com/rgooler",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "robherley",
+ "name": "Rob Herley",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16991201?v=4",
+ "profile": "https://reb.gg",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "oblivioncth",
+ "name": "Christian Heimlich",
+ "avatar_url": "https://avatars.githubusercontent.com/u/24661585?v=4",
+ "profile": "https://github.com/oblivioncth",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "l-moon-git",
+ "name": "l-moon-git",
+ "avatar_url": "https://avatars.githubusercontent.com/u/103282929?v=4",
+ "profile": "https://github.com/l-moon-git",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "hughes5",
+ "name": "hughes5",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6740468?v=4",
+ "profile": "https://github.com/hughes5",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "sdimovv",
+ "name": "sdimovv",
+ "avatar_url": "https://avatars.githubusercontent.com/u/36302090?v=4",
+ "profile": "https://github.com/sdimovv",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "AllieQpzm",
+ "name": "AllieQpzm",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2895565?v=4",
+ "profile": "https://github.com/AllieQpzm",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "dominch",
+ "name": "Dominik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10815109?v=4",
+ "profile": "http://www.dominik.net.pl",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "renovate[bot]",
+ "name": "renovate[bot]",
+ "avatar_url": "https://avatars.githubusercontent.com/in/2740?v=4",
+ "profile": "https://github.com/apps/renovate",
+ "contributions": [
+ "tool"
+ ]
+ },
+ {
+ "login": "allcontributors[bot]",
+ "name": "allcontributors[bot]",
+ "avatar_url": "https://avatars.githubusercontent.com/in/23186?v=4",
+ "profile": "https://github.com/apps/allcontributors",
+ "contributions": [
+ "tool"
+ ]
+ },
+ {
+ "login": "dependabot[bot]",
+ "name": "dependabot[bot]",
+ "avatar_url": "https://avatars.githubusercontent.com/in/29110?v=4",
+ "profile": "https://github.com/apps/dependabot",
+ "contributions": [
+ "tool"
+ ]
+ },
+ {
+ "login": "truecharts-admin",
+ "name": "TrueCharts Bot",
+ "avatar_url": "https://avatars.githubusercontent.com/u/80468013?v=4",
+ "profile": "https://truecharts.org/",
+ "contributions": [
+ "tool",
+ "infra",
+ "code"
+ ]
+ },
+ {
+ "login": "renovate-bot",
+ "name": "Mend Renovate",
+ "avatar_url": "https://avatars.githubusercontent.com/u/25180681?v=4",
+ "profile": "https://www.mend.io/free-developer-tools/renovate/",
+ "contributions": [
+ "tool"
+ ]
+ },
+ {
+ "login": "Simoneu01",
+ "name": "Simone",
+ "avatar_url": "https://avatars.githubusercontent.com/u/43807696?v=4",
+ "profile": "https://github.com/Simoneu01",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jfroy",
+ "name": "Jean-François Roy",
+ "avatar_url": "https://avatars.githubusercontent.com/u/49554?v=4",
+ "profile": "https://devklog.net/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Whiskey24",
+ "name": "Whiskey24",
+ "avatar_url": "https://avatars.githubusercontent.com/u/12865553?v=4",
+ "profile": "https://github.com/Whiskey24",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "inmanturbo",
+ "name": "inmanturbo",
+ "avatar_url": "https://avatars.githubusercontent.com/u/47095624?v=4",
+ "profile": "https://github.com/inmanturbo",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "Dhs92",
+ "name": "Alex",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3068714?v=4",
+ "profile": "https://github.com/Dhs92",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "bjsemrad",
+ "name": "Brian Semrad",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1234356?v=4",
+ "profile": "https://github.com/bjsemrad",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ctag",
+ "name": "Christopher",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6200085?v=4",
+ "profile": "https://256.makerslocal.org/wiki/User:Ctag",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "engedics",
+ "name": "Csaba Engedi",
+ "avatar_url": "https://avatars.githubusercontent.com/u/11065639?v=4",
+ "profile": "https://github.com/engedics",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Cyb3rzombie",
+ "name": "Cyb3rzombie",
+ "avatar_url": "https://avatars.githubusercontent.com/u/19274374?v=4",
+ "profile": "https://github.com/Cyb3rzombie",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "CajuCLC",
+ "name": "Eric Cavalcanti",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1249095?v=4",
+ "profile": "https://cloudtutorial.net/",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "g-a-c",
+ "name": "Gavin Chappell",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2798739?v=4",
+ "profile": "https://github.com/g-a-c",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ },
+ {
+ "login": "raynay-r",
+ "name": "raynay-r",
+ "avatar_url": "https://avatars.githubusercontent.com/u/16634069?v=4",
+ "profile": "https://github.com/raynay-r",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Jip-Hop",
+ "name": "Jip-Hop",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2871973?v=4",
+ "profile": "https://jip.debeer.it/",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "jonaswre",
+ "name": "Jonas Wrede",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3731681?v=4",
+ "profile": "https://github.com/jonaswre",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "silentnyte",
+ "name": "SilentNyte",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2430307?v=4",
+ "profile": "https://github.com/silentnyte",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "StanMar-bit",
+ "name": "Stan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/84271654?v=4",
+ "profile": "https://github.com/StanMar-bit",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "tiagogaspar8",
+ "name": "Tiago Gaspar",
+ "avatar_url": "https://avatars.githubusercontent.com/u/39808643?v=4",
+ "profile": "https://github.com/tiagogaspar8",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "gismo2004",
+ "name": "gismo2004",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2325636?v=4",
+ "profile": "https://github.com/gismo2004",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jsegaert",
+ "name": "jsegaert",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20346509?v=4",
+ "profile": "https://github.com/jsegaert",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "miguelangel-nubla",
+ "name": "Miguel Angel Nubla",
+ "avatar_url": "https://avatars.githubusercontent.com/u/866596?v=4",
+ "profile": "https://github.com/miguelangel-nubla",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "xal3xhx",
+ "name": "xal3xhx",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8585664?v=4",
+ "profile": "https://github.com/xal3xhx",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "jeremybox",
+ "name": "jeremybox",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33465600?v=4",
+ "profile": "https://github.com/jeremybox",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "CameronSabuda",
+ "name": "Cameron Sabuda",
+ "avatar_url": "https://avatars.githubusercontent.com/u/25101288?v=4",
+ "profile": "https://github.com/CameronSabuda",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "edmeister",
+ "name": "Jeroen Schepens",
+ "avatar_url": "https://avatars.githubusercontent.com/u/702527?v=4",
+ "profile": "https://github.com/edmeister",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "jrwrigh",
+ "name": "James Wright",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20801821?v=4",
+ "profile": "http://jameswright.xyz",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "Malpractis",
+ "name": "Malpractis",
+ "avatar_url": "https://avatars.githubusercontent.com/u/31232305?v=4",
+ "profile": "https://github.com/Malpractis",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "CommanderStarhump",
+ "name": "CommanderStarhump",
+ "avatar_url": "https://avatars.githubusercontent.com/u/91758053?v=4",
+ "profile": "https://github.com/CommanderStarhump",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "vianchiel",
+ "name": "Vianchiel",
+ "avatar_url": "https://avatars.githubusercontent.com/u/123665622?v=4",
+ "profile": "https://github.com/vianchiel",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "b-m-f",
+ "name": "Maximilian Ehlers",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2843450?v=4",
+ "profile": "https://github.com/b-m-f",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "nautilus7",
+ "name": "nautilus7",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1540233?v=4",
+ "profile": "https://github.com/nautilus7",
+ "contributions": [
+ "bug",
+ "code"
+ ]
+ },
+ {
+ "login": "kqmaverick",
+ "name": "kqmaverick",
+ "avatar_url": "https://avatars.githubusercontent.com/u/121722567?v=4",
+ "profile": "https://github.com/kqmaverick",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "ccalby",
+ "name": "ccalby",
+ "avatar_url": "https://avatars.githubusercontent.com/u/680553?v=4",
+ "profile": "https://github.com/ccalby",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "kofeyh",
+ "name": "kofeyh",
+ "avatar_url": "https://avatars.githubusercontent.com/u/26401963?v=4",
+ "profile": "https://github.com/kofeyh",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "imjustleaving",
+ "name": "imjustleaving",
+ "avatar_url": "https://avatars.githubusercontent.com/u/109609649?v=4",
+ "profile": "https://github.com/imjustleaving",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "PrototypeActual",
+ "name": "Cristian Torres",
+ "avatar_url": "https://avatars.githubusercontent.com/u/18661121?v=4",
+ "profile": "https://github.com/PrototypeActual",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "schopenhauer",
+ "name": "schopenhauer",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2085103?v=4",
+ "profile": "https://github.com/schopenhauer",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "Zackptg5",
+ "name": "Zackptg5",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5107713?v=4",
+ "profile": "https://github.com/Zackptg5",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "backerman",
+ "name": "Brad Ackerman",
+ "avatar_url": "https://avatars.githubusercontent.com/u/115895?v=4",
+ "profile": "https://bradackerman.com/",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "mcspiff313",
+ "name": "mcspiff313",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7252551?v=4",
+ "profile": "https://hachyderm.io/@mcspiff",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "fnichol",
+ "name": "Fletcher Nichol",
+ "avatar_url": "https://avatars.githubusercontent.com/u/261548?v=4",
+ "profile": "https://fnichol.com",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ },
+ {
+ "login": "marcofaggian",
+ "name": "Marco Faggian",
+ "avatar_url": "https://avatars.githubusercontent.com/u/19221001?v=4",
+ "profile": "https://marcofaggian.com",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Emalton",
+ "name": "John P",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9328458?v=4",
+ "profile": "https://github.com/Emalton",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "kryojenik",
+ "name": "kryojenik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/845427?v=4",
+ "profile": "https://github.com/kryojenik",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "malcolmcdixon",
+ "name": "Malcolm",
+ "avatar_url": "https://avatars.githubusercontent.com/u/56974882?v=4",
+ "profile": "https://github.com/malcolmcdixon",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "depasseg",
+ "name": "depasseg",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3201827?v=4",
+ "profile": "https://github.com/depasseg",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "j1mbl3s",
+ "name": "j1mbl3s",
+ "avatar_url": "https://avatars.githubusercontent.com/u/44634577?v=4",
+ "profile": "https://github.com/j1mbl3s",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "VictorienXP",
+ "name": "VictorienXP",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1633366?v=4",
+ "profile": "https://github.com/VictorienXP",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "yelhouti",
+ "name": "yelhouti",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5471639?v=4",
+ "profile": "https://github.com/yelhouti",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "svetlemodry",
+ "name": "Jaroslav Lichtblau",
+ "avatar_url": "https://avatars.githubusercontent.com/u/8712544?v=4",
+ "profile": "https://github.com/svetlemodry",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "Maximilian-Staab",
+ "name": "MaximilianS",
+ "avatar_url": "https://avatars.githubusercontent.com/u/20892091?v=4",
+ "profile": "https://github.com/Maximilian-Staab",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "dionlarson",
+ "name": "Dion Larson",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1843883?v=4",
+ "profile": "http://dionlarson.com",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "Physics-Dude",
+ "name": "Physics-Dude",
+ "avatar_url": "https://avatars.githubusercontent.com/u/22563517?v=4",
+ "profile": "https://github.com/Physics-Dude",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "waflint",
+ "name": "waflint",
+ "avatar_url": "https://avatars.githubusercontent.com/u/94139453?v=4",
+ "profile": "https://github.com/waflint",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Shrinks99",
+ "name": "Henry Wilkinson",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5672810?v=4",
+ "profile": "https://github.com/Shrinks99",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "cedstrom",
+ "name": "cedstrom",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6175957?v=4",
+ "profile": "https://github.com/cedstrom",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "v3DJG6GL",
+ "name": "v3DJG6GL",
+ "avatar_url": "https://avatars.githubusercontent.com/u/72495210?v=4",
+ "profile": "https://github.com/v3DJG6GL",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "polarstack",
+ "name": "polarstack",
+ "avatar_url": "https://avatars.githubusercontent.com/u/42521003?v=4",
+ "profile": "https://github.com/polarstack",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "K1Hyve",
+ "name": "Keyvan",
+ "avatar_url": "https://avatars.githubusercontent.com/u/53298451?v=4",
+ "profile": "https://github.com/K1Hyve",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "MickaelFontes",
+ "name": "MickaelFontes",
+ "avatar_url": "https://avatars.githubusercontent.com/u/81414455?v=4",
+ "profile": "https://github.com/MickaelFontes",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "blastik",
+ "name": "David CM",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3662083?v=4",
+ "profile": "https://github.com/blastik",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "aamirazad",
+ "name": "Aamir Azad",
+ "avatar_url": "https://avatars.githubusercontent.com/u/82281117?v=4",
+ "profile": "http://tigertutoringtool.aamira.me",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "jordan-woyak",
+ "name": "Jordan Woyak",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1768214?v=4",
+ "profile": "https://github.com/jordan-woyak",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "simon-hofmann",
+ "name": "Simon Hofman",
+ "avatar_url": "https://avatars.githubusercontent.com/u/23562420?v=4",
+ "profile": "https://github.com/simon-hofmann",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "notyouraveragegamer",
+ "name": "notyouraveragegamer",
+ "avatar_url": "https://avatars.githubusercontent.com/u/104248676?v=4",
+ "profile": "https://github.com/NotYourAverageGamer",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "varac",
+ "name": "Varac",
+ "avatar_url": "https://avatars.githubusercontent.com/u/488213?v=4",
+ "profile": "https://www.varac.net",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "tuxpizza",
+ "name": "tuxsudo",
+ "avatar_url": "https://avatars.githubusercontent.com/u/84710786?v=4",
+ "profile": "https://tux.pizza",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "TylerRudie",
+ "name": "TylerRudie",
+ "avatar_url": "https://avatars.githubusercontent.com/u/2695916?v=4",
+ "profile": "https://github.com/TylerRudie",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "qnb59bny5x",
+ "name": "qnb59bny5x",
+ "avatar_url": "https://avatars.githubusercontent.com/u/108427982?v=4",
+ "profile": "https://github.com/qnb59bny5x",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "drndos",
+ "name": "Filip Bednárik",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5576134?v=4",
+ "profile": "https://blog.drndos.sk",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "sshcherbinin",
+ "name": "Serhii Shcherbinin",
+ "avatar_url": "https://avatars.githubusercontent.com/u/92396963?v=4",
+ "profile": "https://github.com/sshcherbinin",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "qraynaud",
+ "name": "Quentin Raynaud",
+ "avatar_url": "https://avatars.githubusercontent.com/u/65991?v=4",
+ "profile": "https://github.com/qraynaud",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "thegcat",
+ "name": "Felix Schäfer",
+ "avatar_url": "https://avatars.githubusercontent.com/u/22835?v=4",
+ "profile": "http://fachschaften.org",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "jndeverteuil",
+ "name": "Julien Nicolas de Verteuil",
+ "avatar_url": "https://avatars.githubusercontent.com/u/6644855?v=4",
+ "profile": "https://github.com/jndeverteuil",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "gabrieldonadel",
+ "name": "Gabriel Donadel Dall'Agnol",
+ "avatar_url": "https://avatars.githubusercontent.com/u/11707729?v=4",
+ "profile": "https://github.com/gabrieldonadel",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "jon-stumpf",
+ "name": "Jon S. Stumpf",
+ "avatar_url": "https://avatars.githubusercontent.com/u/7144996?v=4",
+ "profile": "https://github.com/jon-stumpf",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "Tanguille",
+ "name": "Tanguille",
+ "avatar_url": "https://avatars.githubusercontent.com/u/91473554?v=4",
+ "profile": "https://github.com/Tanguille",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "Plinsboorg",
+ "name": "Dennis",
+ "avatar_url": "https://avatars.githubusercontent.com/u/42300339?v=4",
+ "profile": "https://github.com/Plinsboorg",
+ "contributions": [
+ "bug",
+ "doc"
+ ]
+ },
+ {
+ "login": "TheIceCreamTroll",
+ "name": "TheIceCreamTroll",
+ "avatar_url": "https://avatars.githubusercontent.com/u/33820904?v=4",
+ "profile": "https://github.com/TheIceCreamTroll",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "atanaspam",
+ "name": "Atanas Pamukchiev",
+ "avatar_url": "https://avatars.githubusercontent.com/u/9085090?v=4",
+ "profile": "https://github.com/atanaspam",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "Boemeltrein",
+ "name": "Boemeltrein",
+ "avatar_url": "https://avatars.githubusercontent.com/u/130394941?v=4",
+ "profile": "https://github.com/Boemeltrein",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "oblique",
+ "name": "Yiannis Marangos",
+ "avatar_url": "https://avatars.githubusercontent.com/u/194040?v=4",
+ "profile": "https://github.com/oblique",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "mruoss",
+ "name": "Michael Ruoss",
+ "avatar_url": "https://avatars.githubusercontent.com/u/695307?v=4",
+ "profile": "https://github.com/mruoss",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "aronkahrs-us",
+ "name": "Aron Kahrs",
+ "avatar_url": "https://avatars.githubusercontent.com/u/85702110?v=4",
+ "profile": "https://github.com/aronkahrs-us",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "nemesis1982",
+ "name": "nemesis1982",
+ "avatar_url": "https://avatars.githubusercontent.com/u/139973370?v=4",
+ "profile": "https://github.com/nemesis1982",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "ekrunch",
+ "name": "Ed P",
+ "avatar_url": "https://avatars.githubusercontent.com/u/13153293?v=4",
+ "profile": "https://github.com/ekrunch",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "fnadeau",
+ "name": "Frédéric Nadeau",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1904563?v=4",
+ "profile": "https://github.com/fnadeau",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "frapbod",
+ "name": "frapbod",
+ "avatar_url": "https://avatars.githubusercontent.com/u/48932093?v=4",
+ "profile": "https://github.com/frapbod",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "bahuma20",
+ "name": "Max Bachhuber",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5746121?v=4",
+ "profile": "https://bahuma.io",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "zierbeek",
+ "name": "zierbeek",
+ "avatar_url": "https://avatars.githubusercontent.com/u/58994651?v=4",
+ "profile": "https://github.com/zierbeek",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "ac1dburnz",
+ "name": "Ac1dburn",
+ "avatar_url": "https://avatars.githubusercontent.com/u/10972668?v=4",
+ "profile": "https://github.com/ac1dburnz",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "antoinesaget",
+ "name": "Antoine Saget",
+ "avatar_url": "https://avatars.githubusercontent.com/u/38580521?v=4",
+ "profile": "https://github.com/antoinesaget",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "bbodenmiller",
+ "name": "Ben Bodenmiller",
+ "avatar_url": "https://avatars.githubusercontent.com/u/1192780?v=4",
+ "profile": "https://github.com/bbodenmiller",
+ "contributions": [
+ "bug"
+ ]
+ },
+ {
+ "login": "felixfon",
+ "name": "felixfon",
+ "avatar_url": "https://avatars.githubusercontent.com/u/66350602?v=4",
+ "profile": "https://github.com/felixfon",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "adtwomey",
+ "name": "adtwomey",
+ "avatar_url": "https://avatars.githubusercontent.com/u/14849762?v=4",
+ "profile": "https://github.com/adtwomey",
+ "contributions": [
+ "doc"
+ ]
+ },
+ {
+ "login": "alfi0812",
+ "name": "alfi0812",
+ "avatar_url": "https://avatars.githubusercontent.com/u/43101280?v=4",
+ "profile": "https://github.com/alfi0812",
+ "contributions": [
+ "code"
+ ]
+ }
+ ],
+ "contributorsPerLine": 7,
+ "skipCi": true,
+ "commitConvention": "angular",
+ "commitType": "docs"
+}
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..588ac8a
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,17 @@
+# EditorConfig is awesome: http://EditorConfig.org
+
+root = true
+
+[*]
+charset = utf-8
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.{sh,json}]
+indent_size = 4
+
+[*.md]
+max_line_length = off
+trim_trailing_whitespace = false
diff --git a/.helmdocsignore b/.helmdocsignore
new file mode 100644
index 0000000..e69de29
diff --git a/.markdownlint.yaml b/.markdownlint.yaml
new file mode 100644
index 0000000..77696d7
--- /dev/null
+++ b/.markdownlint.yaml
@@ -0,0 +1,23 @@
+# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md004
+# Use dash for "Unordered list style"
+MD004:
+ style: dash
+
+# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md013
+# Do not warn for Line length
+MD013:
+ # We can lower this and wrap lines. Markdown does not care.
+ line_length: 999
+
+# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md033
+# Do not warn for "Inline HTML"
+MD033: false
+
+# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#md036
+# Do not warn for "Emphasis used instead of a heading"
+MD036: false
+
+# https://github.com/DavidAnson/markdownlint/blob/v0.32.1/doc/md024.md
+# Do not warn for "Multiple headers with the same content"
+MD024:
+ siblings_only: true
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..888dfbd
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,41 @@
+# See https://pre-commit.com for more information
+repos:
+ - repo: https://github.com/Lucas-C/pre-commit-hooks
+ rev: v1.1.10
+ hooks:
+ - id: remove-tabs
+
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.0.1
+ hooks:
+ - id: trailing-whitespace # trims trailing whitespace.
+ - id: end-of-file-fixer # ensures that a file is either empty, or ends with one newline.
+ - id: fix-byte-order-marker
+ - id: mixed-line-ending # replaces or checks mixed line ending.
+ - id: check-merge-conflict # checks for files that contain merge conflict strings.
+ - id: check-case-conflict # checks for files that would conflict in case-insensitive filesystems.
+ - id: check-executables-have-shebangs # ensures that (non-binary) executables have a shebang.
+ - id: check-shebang-scripts-are-executable # ensures that (non-binary) files with a shebang are executable.
+ - id: check-docstring-first
+ - id: check-symlinks
+ - id: destroyed-symlinks
+ - id: fix-byte-order-marker # removes utf-8 byte order marker.
+ - id: requirements-txt-fixer # sorts entries in requirements.txt.
+ - id: check-added-large-files # prevents giant files from being committed.
+ exclude: \.(png|jpg|jpeg|svg|yaml|yml|tpl)$
+ - id: check-yaml # checks yaml files for parseable syntax.
+ exclude: (templates\/.*|crds\/.*|questions.yaml|chart_schema.yaml)
+ - id: detect-private-key # detects the presence of private keys.
+
+ - repo: https://github.com/pre-commit/pygrep-hooks
+ rev: v1.9.0
+ hooks:
+ - id: text-unicode-replacement-char
+ - id: rst-backticks
+
+ - repo: https://github.com/pre-commit/mirrors-prettier
+ rev: v2.5.1
+ hooks:
+ - id: prettier
+ exclude: (templates\/.*|crds\/.*|README.md|CHANGELOG.md|questions.yaml|devcontainer.json)
+ files: \.(js|ts|jsx|tsx|css|less|html|json|markdown|md|yaml|yml)$
diff --git a/.snyk b/.snyk
new file mode 100644
index 0000000..7ba7c29
--- /dev/null
+++ b/.snyk
@@ -0,0 +1,25 @@
+# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
+version: v1.22.1
+# ignores vulnerabilities until expiry date; change duration by modifying expiry date
+ignore:
+ SNYK-CC-K8S-10:
+ - '* > * > input > spec > template > spec > initContainers[autopermissions] > securityContext > runAsNonRoot':
+ reason: Permissions script requires root
+ expires: 2666-01-02T15:25:09.138Z
+ created: 2021-12-03T15:25:09.144Z
+ SNYK-CC-K8S-41:
+ - '* > * > spec > template > spec > initContainers[autopermissions] > livenessProbe':
+ reason: Permissions script requires root
+ expires: 2666-01-02T15:25:09.138Z
+ created: 2021-12-03T15:25:09.144Z
+ SNYK-CC-K8S-11:
+ - '*':
+ reason: UID Clashes is not a priority, default user 568 is reserved on SCALE systems
+ expires: 2666-01-02T15:25:09.138Z
+ created: 2021-12-03T15:25:09.144Z
+ SNYK-CC-K8S-42:
+ - '*':
+ reason: We enforce digestpinning all container images and run auto-updater weekly
+ expires: 2666-01-02T15:25:09.138Z
+ created: 2021-12-03T15:25:09.144Z
+patch: {}
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..4032aa5
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+truecharts.org
diff --git a/cr.yaml b/cr.yaml
new file mode 100644
index 0000000..61040e0
--- /dev/null
+++ b/cr.yaml
@@ -0,0 +1,11 @@
+owner: truecharts
+git-repo: charts
+repo: charts
+charts-dir: charts/*
+charts_repo_url: "https://deps.truecharts.org"
+SkipExisting: true
+skipExisting: true
+# Set to true for GPG signing
+sign: true
+# UID of the GPG key to use
+key: info@truecharts.org
diff --git a/cspell.config.yaml b/cspell.config.yaml
new file mode 100644
index 0000000..afa7b22
--- /dev/null
+++ b/cspell.config.yaml
@@ -0,0 +1,344 @@
+version: "0.2"
+words:
+ - adguard
+ - adlist
+ - airsonic
+ - akadmin
+ - alertmanager
+ - aliasgroup
+ - allowtransparency
+ - apitoken
+ - appname
+ - appnamehere
+ - auditlog
+ - authelia
+ - authentik
+ - authexample
+ - authkey
+ - authtoken
+ - autoconnect
+ - autoplay
+ - autoscan
+ - autosync
+ - backupname
+ - basicauthexample
+ - batnoter
+ - bazarr
+ - blocklists
+ - blocktype
+ - briefkasten
+ - bugfixer's
+ - bungeecord
+ - cacher
+ - chainname
+ - cheatsheet
+ - chronos
+ - cifs
+ - clouddns
+ - cloudflared
+ - cloudflareddns
+ - cloudnative
+ - clusterissuer
+ - cnpg
+ - codeserver
+ - collabora
+ - configfile
+ - configfiles
+ - configmap
+ - containo
+ - cooldown
+ - crossplay
+ - csgo
+ - cuda
+ - daemonset
+ - dashdot
+ - datapoints
+ - datascience
+ - dbcreds
+ - dbengine
+ - ddns
+ - djava
+ - dnat
+ - dnsserver
+ - dnsservers
+ - dockerized
+ - docspell
+ - drac
+ - duplicati
+ - dynmap
+ - ebgp
+ - elif
+ - emby
+ - entrypoints
+ - eptgmk
+ - exif
+ - filebrowser
+ - fireshare
+ - firezone
+ - flatnotes
+ - flemarr
+ - flemmarr
+ - flushtables
+ - forcegc
+ - forwardauth
+ - fowner
+ - fullname
+ - geoip
+ - geoipupdate
+ - gibibyte
+ - gluster
+ - goauthentik
+ - gotify
+ - groupname
+ - gunicorn
+ - healthcheck
+ - healthchecks
+ - healthz
+ - heavyscript
+ - hexo
+ - honeybadger
+ - hostnames
+ - hostpath
+ - hyperconverged
+ - hyperthread
+ - iban
+ - idtool
+ - immich
+ - ingressclasses
+ - ingressroutes
+ - ingressroutetcps
+ - ingressrouteudps
+ - integrationsenabled
+ - inventree
+ - ipaddr
+ - ixcert
+ - ixsystems
+ - jackett
+ - jacobalberty
+ - jailman
+ - javaprefs
+ - jellyfin
+ - joex
+ - jovyan
+ - kavita
+ - keepalive
+ - killswitch
+ - kimai
+ - kiwix
+ - kjeld
+ - komga
+ - kube
+ - kubeconfig
+ - kubectl
+ - kubernetes
+ - lancache
+ - ldapldap
+ - ldapldaps
+ - ldapmetrics
+ - ldaps
+ - lebbing
+ - lenpaste
+ - letsencrypt
+ - lidarr
+ - linkwallet
+ - litestream
+ - lldap
+ - loadbalancer
+ - localcnamerecords
+ - localdnsrecords
+ - localdomain
+ - localpref
+ - logfile
+ - loolwsd
+ - mailenabled
+ - mailgun
+ - mapbox
+ - mariadbcreds
+ - mattwebbio
+ - maxmind
+ - mbit
+ - mediafiles
+ - memfs
+ - mergerfs
+ - meshcentral
+ - meshroom
+ - metallb
+ - microbin
+ - midarr
+ - midclt
+ - middlewares
+ - middlewaretcps
+ - mikrotik
+ - milicpu
+ - mimetypes
+ - minecraft
+ - miniflux
+ - minio
+ - misskey
+ - mkvcleaver
+ - modelstore
+ - modports
+ - mongosh
+ - mountpoint
+ - mqtt
+ - multihost
+ - nbclassic
+ - neko
+ - netbox
+ - netdata
+ - networkv
+ - nextcloud
+ - nitter
+ - nobind
+ - nocaptcha
+ - nocodb
+ - nodeport
+ - nodeports
+ - nohardlinks
+ - noisedash
+ - nordigen
+ - noreply
+ - notebookbar
+ - odbc
+ - oidc
+ - omada
+ - ookla
+ - organizr
+ - ornias
+ - ovpn
+ - passwrd
+ - penpot
+ - pgadmin
+ - pgid
+ - photoprism
+ - pihole
+ - plainhost
+ - plaxt
+ - playout
+ - plex
+ - plextraktsync
+ - portainer
+ - preconfigured
+ - prefs
+ - preload
+ - proto
+ - proxyhttp
+ - proxyhttps
+ - proxying
+ - proxymetrics
+ - puid
+ - putregexhere
+ - pvcname
+ - pvcpath
+ - pyspark
+ - qbitmanage
+ - quotum
+ - radarr
+ - raknet
+ - ramdisk
+ - rclone
+ - rcon
+ - rcontcp
+ - recaptha
+ - recordtypes
+ - recyclarr
+ - rediscreds
+ - redmine
+ - regexlist
+ - registeringats
+ - reneg
+ - replacementurlhere
+ - resolv
+ - restreamer
+ - retrobot
+ - rtmp
+ - rtmps
+ - rtmpserver
+ - sabnzbd
+ - schouten
+ - scipy
+ - seafile
+ - selfsigned
+ - sendgrid
+ - serpbear
+ - serverconfig
+ - servername
+ - serverstransports
+ - serviceaccount
+ - serviceexpert
+ - setgid
+ - setuid
+ - sgateway
+ - signup
+ - smallblock
+ - snmp
+ - somefile
+ - somethingelse
+ - sonarr
+ - sonarrsabnzbd
+ - sonatype
+ - speedtest
+ - speedtests
+ - srcsets
+ - ssvnc
+ - starttls
+ - statefulset
+ - staticdhcpleases
+ - staticfiles
+ - statping
+ - steamcommunica
+ - steammasterser
+ - subchart
+ - sublist
+ - subquestion
+ - subquestions
+ - supabase
+ - svcname
+ - syncthing
+ - tailscale
+ - targetport
+ - tccr
+ - tcdbinfo
+ - teamspeak
+ - testpassword
+ - testuser
+ - thanos
+ - themenamehere
+ - tlsoptions
+ - tlsstores
+ - totp
+ - traefik
+ - traefikservices
+ - traggo
+ - trakt
+ - truecharts
+ - truenas
+ - truetool
+ - ttrss
+ - umami
+ - unet
+ - unifi
+ - upsnap
+ - upstreams
+ - userspace
+ - vaapi
+ - valheim
+ - varlock
+ - vaultwarden
+ - vdev
+ - vikunja
+ - vm's
+ - wakeup
+ - watchyourlan
+ - webbasecontrol
+ - webpanel
+ - websecure
+ - websockets
+ - webworkers
+ - weejewel
+ - wger
+ - whisparr
+ - xsystems
+ - zabbix
+ - zerotier
+ - zwavejs
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..3010d34
--- /dev/null
+++ b/package.json
@@ -0,0 +1,9 @@
+{
+ "devDependencies": {
+ "all-contributors-cli": "6.26.1"
+ },
+ "scripts": {
+ "contributors:add": "all-contributors add",
+ "contributors:generate": "all-contributors generate"
+ }
+}
diff --git a/templates/README.md.tpl b/templates/README.md.tpl
new file mode 100644
index 0000000..e63077e
--- /dev/null
+++ b/templates/README.md.tpl
@@ -0,0 +1,28 @@
+---
+title: README
+---
+
+## General Info
+
+TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE.
+However only installations using the TrueNAS SCALE Apps system are supported.
+
+For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/TRAINPLACEHOLDER/CHARTPLACEHOLDER)
+
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)**
+
+## Support
+
+- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro).
+- See the [Website](https://truecharts.org)
+- Check our [Discord](https://discord.gg/tVsPTHWTtr)
+- Open a [issue](https://github.com/truecharts/charts/issues/new/choose)
+
+---
+
+## Sponsor TrueCharts
+
+TrueCharts can only exist due to the incredible effort of our staff.
+Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can!
+
+_All Rights Reserved - The TrueCharts Project_
diff --git a/templates/docs/README.md b/templates/docs/README.md
new file mode 100644
index 0000000..00aadeb
--- /dev/null
+++ b/templates/docs/README.md
@@ -0,0 +1,28 @@
+---
+title: README
+---
+
+## General Info
+
+TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE.
+However only installations using the TrueNAS SCALE Apps system are supported.
+
+For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/TRAINPLACEHOLDER/CHARTPLACEHOLDER)
+
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)**
+
+## Support
+
+- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro).
+- See the [Website](https://truecharts.org)
+- Check our [Discord](https://discord.gg/tVsPTHWTtr)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+
+---
+
+## Sponsor TrueCharts
+
+TrueCharts can only exist due to the incredible effort of our staff.
+Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can!
+
+_All Rights Reserved - The TrueCharts Project_
diff --git a/templates/docs/README.md.gotmpl b/templates/docs/README.md.gotmpl
new file mode 100644
index 0000000..8a31c71
--- /dev/null
+++ b/templates/docs/README.md.gotmpl
@@ -0,0 +1,156 @@
+{{- define "custom.repository.organization" -}}
+TrueCharts
+{{- end -}}
+{{- define "custom.repository.url" -}}
+https://github.com/truecharts/charts
+{{- end -}}
+{{- define "custom.helm.url" -}}
+https://charts.truecharts.org
+{{- end -}}
+{{- define "custom.helm.path" -}}
+{{ template "custom.repository.organization" . }}/{{ template "chart.name" . }}
+{{- end -}}
+{{- define "custom.notes" -}}
+TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE.
+
+This readme is just an automatically generated general guide on installing our Helm Charts and Apps.
+For more information, please click here: [{{ template "chart.name" . }}](https://truecharts.org/charts/TRAINPLACEHOLDER/{{ template "chart.name" . }})
+
+**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)**
+{{- end -}}
+{{- define "custom.requirements" -}}
+## Requirements
+
+{{ template "chart.kubeVersionLine" . }}
+{{- end -}}
+{{- define "custom.dependencies" -}}
+## Dependencies
+
+{{ template "chart.requirementsTable" . }}
+{{- end -}}
+{{- define "custom.install" -}}
+## Installing the Chart
+
+### TrueNAS SCALE
+
+To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/SCALE/guides/scale-intro).
+
+### Helm
+
+To install the chart with the release name `{{ template "chart.name" . }}`
+
+```console
+helm repo add {{ template "custom.repository.organization" . }} {{ template "custom.helm.url" . }}
+helm repo update
+helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }}
+```
+{{- end -}}
+{{- define "custom.uninstall" -}}
+## Uninstall
+
+### TrueNAS SCALE
+
+**Upgrading, Rolling Back and Uninstalling the Chart**
+
+To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/SCALE/guides/scale-intro).
+
+### Helm
+
+To uninstall the `{{ template "chart.name" . }}` deployment
+
+```console
+helm uninstall {{ template "chart.name" . }}
+```
+{{- end -}}
+{{- define "custom.configuration.header" -}}
+## Configuration
+
+### Helm
+
+{{- end -}}
+{{- define "custom.configuration.readValues" -}}
+#### Available Settings
+
+Read through the values.yaml file. It has several commented out suggested values.
+Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/truecharts/library-charts/tree/main/charts/common).
+{{- end -}}
+{{- define "custom.configuration.example.set" -}}
+#### Configure using the command line
+
+Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
+
+```console
+helm install {{ template "chart.name" . }} \
+ --set env.TZ="America/New York" \
+ {{ template "custom.helm.path" . }}
+```
+{{- end -}}
+{{- define "custom.configuration.example.file" -}}
+#### Configure using a yaml file
+
+Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
+
+```console
+helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} -f values.yaml
+```
+{{- end -}}
+{{- define "custom.linking" -}}
+#### Connecting to other charts
+
+If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Apps Internally](https://truecharts.org/manual/SCALE/guides/linking-apps) quick-start guide.
+{{- end -}}
+{{- define "custom.support" -}}
+## Support
+
+- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro).
+- See the [Website](https://truecharts.org)
+- Check our [Discord](https://discord.gg/tVsPTHWTtr)
+- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
+{{- end -}}
+{{- define "custom.sponsors" -}}
+## Sponsor TrueCharts
+
+TrueCharts can only exist due to the incredible effort of our staff.
+Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can!
+{{- end -}}
+{{- define "custom.copyright" -}}
+All Rights Reserved - The TrueCharts Project
+{{- end -}}
+{{ template "chart.header" . }}
+
+{{ template "chart.description" . }}
+
+{{ template "chart.deprecationWarning" . }}
+
+{{ template "custom.notes" . }}
+
+{{ template "chart.sourcesSection" . }}
+
+{{ template "custom.requirements" . }}
+
+{{ template "custom.dependencies" . }}
+
+{{ template "custom.install" . }}
+
+{{ template "custom.uninstall" . }}
+
+{{ template "custom.configuration.header" . }}
+
+{{ template "custom.configuration.readValues" . }}
+
+{{ template "custom.configuration.example.set" . }}
+
+{{ template "custom.configuration.example.file" . }}
+
+{{ template "custom.linking" . }}
+
+{{ template "custom.support" . }}
+
+
+---
+
+{{ template "custom.sponsors" . }}
+
+---
+
+{{ template "custom.copyright" . }}
diff --git a/templates/docs/app-readme.md.gotmpl b/templates/docs/app-readme.md.gotmpl
new file mode 100644
index 0000000..d1e12bf
--- /dev/null
+++ b/templates/docs/app-readme.md.gotmpl
@@ -0,0 +1,6 @@
+{{- define "custom.custom.app-readme" -}}
+{{ template "chart.description" . }}
+
+This App is supplied by TrueCharts, for more information please visit https://truecharts.org
+{{- end -}}
+{{ template "custom.custom.app-readme" . }}
diff --git a/templates/docs/helm-values.md.gotmpl b/templates/docs/helm-values.md.gotmpl
new file mode 100644
index 0000000..920610b
--- /dev/null
+++ b/templates/docs/helm-values.md.gotmpl
@@ -0,0 +1,22 @@
+{{- define "custom.helm.introheader" -}}
+# Default Helm-Values
+{{- end -}}
+{{- define "custom.helm.notes" -}}
+TrueCharts is primarily build to supply TrueNAS SCALE Apps.
+However, we also supply all Apps as standard Helm-Charts. In this document we aim to document the default values in our values.yaml file.
+
+Most of our Apps also consume our "common" Helm Chart.
+If this is the case, this means that all values.yaml values are set to the common chart values.yaml by default. This values.yaml file will only contain values that deviate from the common chart.
+You will, however, be able to use all values referenced in the common chart here, besides the values listed in this document.
+{{- end -}}
+
+{{- define "custom.helm.copyright" -}}
+All Rights Reserved - The TrueCharts Project
+{{- end -}}
+{{ template "custom.helm.introheader" . }}
+
+{{ template "custom.helm.notes" . }}
+
+{{ template "chart.valuesSection" . }}
+
+{{ template "custom.helm.copyright" . }}
diff --git a/templates/docs/index.md b/templates/docs/index.md
new file mode 100644
index 0000000..f6848ca
--- /dev/null
+++ b/templates/docs/index.md
@@ -0,0 +1,5 @@
+---
+title: APPNAME
+---
+
+Currently we're reworking these intropages for each app, please use the menu on the left to select other available documentation pages for each app, including this one.
diff --git a/templates/helmignore.tpl b/templates/helmignore.tpl
new file mode 100644
index 0000000..77ca556
--- /dev/null
+++ b/templates/helmignore.tpl
@@ -0,0 +1,30 @@
+# 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
diff --git a/templates/questions/addons/addons.yaml b/templates/questions/addons/addons.yaml
new file mode 100644
index 0000000..add15c6
--- /dev/null
+++ b/templates/questions/addons/addons.yaml
@@ -0,0 +1,7 @@
+ - variable: addons
+ group: Addons
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/addons/codeserver.yaml b/templates/questions/addons/codeserver.yaml
new file mode 100644
index 0000000..8d6c646
--- /dev/null
+++ b/templates/questions/addons/codeserver.yaml
@@ -0,0 +1,277 @@
+ - variable: codeserver
+ label: Codeserver
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: service
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: NodePort
+ description: Deprecated CHANGE THIS
+ - value: ClusterIP
+ description: ClusterIP
+ - value: LoadBalancer
+ description: LoadBalancer
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: codeserver
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ default: 36107
+ - variable: ingress
+ label: "Ingress"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
+ - variable: scaleCert
+ label: 'Use TrueNAS SCALE Certificate (Deprecated)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: int
+ $ref:
+ - "definitions/certificate"
+ - variable: envList
+ label: Codeserver Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
diff --git a/templates/questions/addons/netshoot.yaml b/templates/questions/addons/netshoot.yaml
new file mode 100644
index 0000000..89a34f8
--- /dev/null
+++ b/templates/questions/addons/netshoot.yaml
@@ -0,0 +1,36 @@
+ - variable: netshoot
+ label: Netshoot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: envList
+ label: Netshoot Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
diff --git a/templates/questions/addons/vpn.yaml b/templates/questions/addons/vpn.yaml
new file mode 100644
index 0000000..eef44c6
--- /dev/null
+++ b/templates/questions/addons/vpn.yaml
@@ -0,0 +1,174 @@
+ - variable: vpn
+ label: VPN
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: type
+ label: Type
+ schema:
+ type: string
+ default: disabled
+ enum:
+ - value: disabled
+ description: disabled
+ - value: gluetun
+ description: Gluetun
+ - value: tailscale
+ description: Tailscale
+ - value: openvpn
+ description: OpenVPN (Deprecated)
+ - value: wireguard
+ description: Wireguard (Deprecated)
+ - variable: openvpn
+ label: OpenVPN Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "openvpn"]]
+ attrs:
+ - variable: username
+ label: Authentication Username (Optional)
+ description: Authentication Username, Optional
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: Authentication Password
+ description: Authentication Credentials
+ schema:
+ type: string
+ show_if: [["username", "!=", ""]]
+ default: ""
+ required: true
+ - variable: tailscale
+ label: Tailscale Settings
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["type", "=", "tailscale"]]
+ attrs:
+ - variable: authkey
+ label: Authentication Key
+ description: Provide an auth key to automatically authenticate the node as your user account.
+ schema:
+ type: string
+ private: true
+ default: ""
+ - variable: auth_once
+ label: Auth Once
+ description: Only attempt to log in if not already logged in.
+ schema:
+ type: boolean
+ default: true
+ - variable: accept_dns
+ label: Accept DNS
+ description: Accept DNS configuration from the admin console.
+ schema:
+ type: boolean
+ default: false
+ - variable: userspace
+ label: Userspace
+ description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device.
+ schema:
+ type: boolean
+ default: false
+ - variable: routes
+ label: Routes
+ description: Expose physical subnet routes to your entire Tailscale network.
+ schema:
+ type: string
+ default: ""
+ - variable: dest_ip
+ label: Destination IP
+ description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched.
+ schema:
+ type: string
+ default: ""
+ - variable: sock5_server
+ label: Sock5 Server
+ description: The address on which to listen for SOCKS5 proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: outbound_http_proxy_listen
+ label: Outbound HTTP Proxy Listen
+ description: The address on which to listen for HTTP proxying into the tailscale net.
+ schema:
+ type: string
+ default: ""
+ - variable: extra_args
+ label: Extra Args
+ description: Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: daemon_extra_args
+ label: Tailscale Daemon Extra Args
+ description: Tailscale Daemon Extra Args
+ schema:
+ type: string
+ default: ""
+ - variable: killSwitch
+ label: Enable Killswitch
+ schema:
+ type: boolean
+ show_if: [["type", "!=", "disabled"]]
+ default: true
+ - variable: excludedNetworks_IPv4
+ label: Killswitch Excluded IPv4 networks
+ description: List of Killswitch Excluded IPv4 Addresses
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv4
+ label: IPv4 Network
+ schema:
+ type: string
+ required: true
+ - variable: excludedNetworks_IPv6
+ label: Killswitch Excluded IPv6 networks
+ description: "List of Killswitch Excluded IPv6 Addresses"
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: networkv6
+ label: IPv6 Network
+ schema:
+ type: string
+ required: true
+ - variable: configFile
+ label: VPN Config File Location
+ schema:
+ type: string
+ show_if: [["type", "!=", "disabled"]]
+ default: ""
+
+ - variable: envList
+ label: VPN Environment Variables
+ schema:
+ type: list
+ show_if: [["type", "!=", "disabled"]]
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ required: true
+ max_length: 10240
diff --git a/templates/questions/container/containerAdvanced.yaml b/templates/questions/container/containerAdvanced.yaml
new file mode 100644
index 0000000..2f5a572
--- /dev/null
+++ b/templates/questions/container/containerAdvanced.yaml
@@ -0,0 +1,18 @@
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: command
+ label: Command
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: param
+ label: Param
+ schema:
+ type: string
diff --git a/templates/questions/container/containerBasic.yaml b/templates/questions/container/containerBasic.yaml
new file mode 100644
index 0000000..6a8462a
--- /dev/null
+++ b/templates/questions/container/containerBasic.yaml
@@ -0,0 +1,31 @@
+ - variable: envList
+ label: Extra Environment Variables
+ description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..."
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: envItem
+ label: Environment Variable
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ - variable: extraArgs
+ label: Extra Args
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: arg
+ label: Arg
+ schema:
+ type: string
diff --git a/templates/questions/container/containerMain.yaml b/templates/questions/container/containerMain.yaml
new file mode 100644
index 0000000..8839029
--- /dev/null
+++ b/templates/questions/container/containerMain.yaml
@@ -0,0 +1,6 @@
+ - variable: main
+ label: Main Container
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/general/advanced.yaml b/templates/questions/general/advanced.yaml
new file mode 100644
index 0000000..578e288
--- /dev/null
+++ b/templates/questions/general/advanced.yaml
@@ -0,0 +1,430 @@
+# - variable: horizontalPodAutoscaler
+# group: Advanced
+# label: (Advanced) Horizontal Pod Autoscaler
+# schema:
+# type: list
+# default: []
+# items:
+# - variable: hpaEntry
+# label: HPA Entry
+# schema:
+# additional_attrs: true
+# type: dict
+# attrs:
+# - variable: name
+# label: Name
+# schema:
+# type: string
+# required: true
+# default: ""
+# - variable: enabled
+# label: Enabled
+# schema:
+# type: boolean
+# default: false
+# show_subquestions_if: true
+# subquestions:
+# - variable: target
+# label: Target
+# description: Deployment name, Defaults to Main Deployment
+# schema:
+# type: string
+# default: ""
+# - variable: minReplicas
+# label: Minimum Replicas
+# schema:
+# type: int
+# default: 1
+# - variable: maxReplicas
+# label: Maximum Replicas
+# schema:
+# type: int
+# default: 5
+# - variable: targetCPUUtilizationPercentage
+# label: Target CPU Utilization Percentage
+# schema:
+# type: int
+# default: 80
+# - variable: targetMemoryUtilizationPercentage
+# label: Target Memory Utilization Percentage
+# schema:
+# type: int
+# default: 80
+ - variable: networkPolicy
+ group: Advanced
+ label: (Advanced) Network Policy
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: netPolicyEntry
+ label: Network Policy Entry
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: policyType
+ label: Policy Type
+ schema:
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: ingress
+ description: Ingress
+ - value: egress
+ description: Egress
+ - value: ingress-egress
+ description: Ingress and Egress
+ - variable: egress
+ label: Egress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: egressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: to
+ label: To
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: toEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
+ - variable: ingress
+ label: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: from
+ label: From
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: fromEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ipBlock
+ label: IP Block
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cidr
+ label: CIDR
+ schema:
+ type: string
+ default: ""
+ - variable: except
+ label: Except
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: exceptint
+ label: ""
+ schema:
+ type: string
+ - variable: namespaceSelector
+ label: Namespace Selector
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: podSelector
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: matchExpressions
+ label: Match Expressions
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: expressionEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ - variable: operator
+ label: Operator
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: In
+ description: In
+ - value: NotIn
+ description: NotIn
+ - value: Exists
+ description: Exists
+ - value: DoesNotExist
+ description: DoesNotExist
+ - variable: values
+ label: Values
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: value
+ label: ""
+ schema:
+ type: string
+ - variable: ports
+ label: Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: port
+ label: Port
+ schema:
+ type: int
+ - variable: endPort
+ label: End Port
+ schema:
+ type: int
+ - variable: protocol
+ label: Protocol
+ schema:
+ type: string
+ default: TCP
+ enum:
+ - value: TCP
+ description: TCP
+ - value: UDP
+ description: UDP
+ - value: SCTP
+ description: SCTP
diff --git a/templates/questions/general/containerConfig.yaml b/templates/questions/general/containerConfig.yaml
new file mode 100644
index 0000000..ca53157
--- /dev/null
+++ b/templates/questions/general/containerConfig.yaml
@@ -0,0 +1,8 @@
+ - variable: TZ
+ label: Timezone
+ group: "General Settings"
+ schema:
+ type: string
+ default: "Etc/UTC"
+ $ref:
+ - "definitions/timezone"
diff --git a/templates/questions/general/documentation.yaml b/templates/questions/general/documentation.yaml
new file mode 100644
index 0000000..fe0b41b
--- /dev/null
+++ b/templates/questions/general/documentation.yaml
@@ -0,0 +1,29 @@
+ - variable: docs
+ group: Documentation
+ label: Please read the documentation at https://truecharts.org
+ description: Please read the documentation at
+
https://truecharts.org
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDocs
+ label: I have checked the documentation
+ schema:
+ type: boolean
+ default: true
+ - variable: donateNag
+ group: Documentation
+ label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor
+ description: Please consider supporting TrueCharts, see
+
https://truecharts.org/sponsor
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: confirmDonate
+ label: I have considered donating
+ schema:
+ type: boolean
+ default: true
+ hidden: true
diff --git a/templates/questions/general/global.yaml b/templates/questions/general/global.yaml
new file mode 100644
index 0000000..b43b443
--- /dev/null
+++ b/templates/questions/general/global.yaml
@@ -0,0 +1,13 @@
+ - variable: global
+ group: General Settings
+ label: "Global Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: stopAll
+ label: Stop All
+ description: "Stops All Running pods and hibernates cnpg"
+ schema:
+ type: boolean
+ default: false
diff --git a/templates/questions/general/groups.yaml b/templates/questions/general/groups.yaml
new file mode 100644
index 0000000..453e0cd
--- /dev/null
+++ b/templates/questions/general/groups.yaml
@@ -0,0 +1,33 @@
+groups:
+ - name: Container Image
+ description: Image to be used for container
+ - name: General Settings
+ description: General Deployment Settings
+ - name: Workload Settings
+ description: Workload Settings
+ - name: App Configuration
+ description: App Specific Config Options
+ - name: Networking and Services
+ description: Configure Network and Services for Container
+ - name: Storage and Persistence
+ description: Persist and Share Data that is Separate from the Container
+ - name: Ingress
+ description: Ingress Configuration
+ - name: Security and Permissions
+ description: Configure Security Context and Permissions
+ - name: Resources and Devices
+ description: "Specify Resources/Devices to be Allocated to Workload"
+ - name: Middlewares
+ description: Traefik Middlewares
+ - name: Metrics
+ description: Metrics
+ - name: Addons
+ description: Addon Configuration
+ - name: Backup Configuration
+ description: Configure Velero Backup Schedule
+ - name: Advanced
+ description: Advanced Configuration
+ - name: Postgresql
+ description: Postgresql
+ - name: Documentation
+ description: Documentation
diff --git a/templates/questions/general/podOptions.yaml b/templates/questions/general/podOptions.yaml
new file mode 100644
index 0000000..c99d15b
--- /dev/null
+++ b/templates/questions/general/podOptions.yaml
@@ -0,0 +1,118 @@
+ - variable: podOptions
+ group: "General Settings"
+ label: "Global Pod Options (Advanced)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: expertPodOpts
+ label: "Expert - Pod Options"
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hostNetwork
+ label: "Host Networking"
+ schema:
+ type: boolean
+ default: false
+ - variable: dnsConfig
+ label: "DNS Configuration"
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: options
+ label: "Options"
+ schema:
+ type: list
+ default: [{"name": "ndots", "value": "1"}]
+ items:
+ - variable: optionsEntry
+ label: "Option Entry"
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: "Value"
+ schema:
+ type: string
+ - variable: nameservers
+ label: "Nameservers"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: nsEntry
+ label: "Nameserver Entry"
+ schema:
+ type: string
+ required: true
+ - variable: searches
+ label: "Searches"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: searchEntry
+ label: "Search Entry"
+ schema:
+ type: string
+ required: true
+
+ - variable: imagePullSecretList
+ group: "General Settings"
+ label: "Image Pull Secrets"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pullsecretentry
+ label: "Pull Secret"
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: data
+ label: Data
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: registry
+ label: "Registry"
+ schema:
+ type: string
+ required: true
+ default: "https://index.docker.io/v1/"
+ - variable: username
+ label: "Username"
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: password
+ label: "Password"
+ schema:
+ type: string
+ required: true
+ private: true
+ default: ""
+ - variable: email
+ label: "Email"
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/general/portalLink.yaml b/templates/questions/general/portalLink.yaml
new file mode 100644
index 0000000..6cf0b99
--- /dev/null
+++ b/templates/questions/general/portalLink.yaml
@@ -0,0 +1,6 @@
+ protocols:
+ - "$kubernetes-resource_configmap_tcportal-open_protocol"
+ host:
+ - "$kubernetes-resource_configmap_tcportal-open_host"
+ ports:
+ - "$kubernetes-resource_configmap_tcportal-open_port"
diff --git a/templates/questions/general/resources.yaml b/templates/questions/general/resources.yaml
new file mode 100644
index 0000000..b74f238
--- /dev/null
+++ b/templates/questions/general/resources.yaml
@@ -0,0 +1,106 @@
+ - variable: resources
+ group: Resources and Devices
+ label: "Resource Limits"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: limits
+ label: Advanced Limit Resource Consumption
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation"
+ schema:
+ type: string
+ default: 4000m
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: RAM
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation"
+ schema:
+ type: string
+ default: 8Gi
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: 'gpu.intel.com/i915'
+ label: Add Intel i915 GPUs
+ schema:
+ type: int
+ default: 0
+ - variable: 'nvidia.com/gpu'
+ label: Add NVIDIA GPUs (Experimental)
+ schema:
+ type: int
+ default: 0
+ - variable: 'amd.com/gpu'
+ label: Add AMD GPUs
+ schema:
+ type: int
+ default: 0
+ - variable: requests
+ label: "Minimum Resources Required (request)"
+ schema:
+ additional_attrs: true
+ type: dict
+ hidden: true
+ attrs:
+ - variable: cpu
+ label: CPU
+ description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation"
+ schema:
+ type: string
+ default: 10m
+ hidden: true
+ valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$'
+ - variable: memory
+ label: "RAM"
+ description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation"
+ schema:
+ type: string
+ default: 50Mi
+ hidden: true
+ valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$'
+ - variable: deviceList
+ label: Mount USB Devices
+ group: Resources and Devices
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: deviceListEntry
+ label: Device
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Storage
+ schema:
+ type: boolean
+ default: true
+ - variable: type
+ label: (Advanced) Type of Storage
+ description: Sets the persistence type
+ schema:
+ type: string
+ default: device
+ hidden: true
+ - variable: readOnly
+ label: readOnly
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Device Path
+ description: Path to the device on the host system
+ schema:
+ type: path
+ - variable: mountPath
+ label: Container Device Path
+ description: Path inside the container the device is mounted
+ schema:
+ type: string
+ default: "/dev/ttyACM0"
diff --git a/templates/questions/ingress/ingressAdvanced.yaml b/templates/questions/ingress/ingressAdvanced.yaml
new file mode 100644
index 0000000..bbe2136
--- /dev/null
+++ b/templates/questions/ingress/ingressAdvanced.yaml
@@ -0,0 +1,224 @@
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: 'Allow Cross Origin Requests (advanced)'
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: 'namespace (optional)'
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: homepage
+ label: Homepage
+ description: Connect ingress with Homepage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: name
+ label: Name (Optional)
+ description: Defaults to chart name
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: description
+ label: Description (Optional)
+ description: Defaults to chart description
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: icon
+ label: Icon (Optional)
+ description: Defaults to chart icon
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: group
+ label: Group
+ schema:
+ type: string
+ required: true
+ default: "default"
+ show_if: [["enabled", "=", true]]
+ - variable: widget
+ label: Widget Settings
+ schema:
+ type: dict
+ additional_attrs: true
+ show_if: [["enabled", "=", true]]
+ attrs:
+ - variable: enabled
+ label: Enable Widget
+ description: When disabled all widget annotations are skipped.
+ schema:
+ type: boolean
+ default: true
+ - variable: custom
+ label: Options
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: key
+ label: API-key (key)
+ schema:
+ type: string
+ default: ""
+ - variable: customkv
+ label: Custom Options
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: option
+ label: Option
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: key
+ label: Key
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: value
+ label: Value
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ - variable: ingressClassName
+ label: (Advanced/Optional) IngressClass Name
+ schema:
+ type: string
+ show_if: [["advanced", "=", true]]
+ default: ""
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ show_if: [["advanced", "=", true]]
+ default: []
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: 'Use Custom Certificate Secret (Advanced)'
+ schema:
+ show_if: [["certificateIssuer", "=", ""]]
+ type: string
+ default: ""
diff --git a/templates/questions/ingress/ingressDefault.yaml b/templates/questions/ingress/ingressDefault.yaml
new file mode 100644
index 0000000..aeb1cd8
--- /dev/null
+++ b/templates/questions/ingress/ingressDefault.yaml
@@ -0,0 +1,49 @@
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: [{path: "/", pathType: "Prefix"}]
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
diff --git a/templates/questions/ingress/ingressList.yaml b/templates/questions/ingress/ingressList.yaml
new file mode 100644
index 0000000..f3ca3d8
--- /dev/null
+++ b/templates/questions/ingress/ingressList.yaml
@@ -0,0 +1,242 @@
+ - variable: ingressList
+ label: Add Manual Custom Ingresses
+ group: Ingress
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ingressListEntry
+ label: Custom Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable Ingress
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ - variable: ingressClassName
+ label: IngressClass Name
+ schema:
+ type: string
+ default: ""
+ - variable: hosts
+ label: Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: hostEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: host
+ label: HostName
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: paths
+ label: Paths
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: pathEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: path
+ label: Path
+ schema:
+ type: string
+ required: true
+ default: "/"
+ - variable: pathType
+ label: Path Type
+ schema:
+ type: string
+ required: true
+ default: Prefix
+ - variable: overrideService
+ label: Linked Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Service Name
+ schema:
+ type: string
+ default: ""
+ - variable: port
+ label: Service Port
+ schema:
+ type: int
+ - variable: tls
+ label: TLS-Settings
+ schema:
+ type: list
+ default: []
+ show_if: [["certificateIssuer", "=", ""]]
+ items:
+ - variable: tlsEntry
+ label: Host
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hosts
+ label: Certificate Hosts
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: host
+ label: Host
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: certificateIssuer
+ label: Use Cert-Manager clusterIssuer
+ description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.'
+ schema:
+ type: string
+ default: ""
+ - variable: clusterCertificate
+ label: 'Cluster Certificate (Advanced)'
+ description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.'
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: secretName
+ label: Use Custom Secret (Advanced)
+ schema:
+ type: string
+ show_if: [["certificateIssuer", "=", ""]]
+ default: ""
+ - variable: integrations
+ label: Integrations
+ description: Connect ingress with other charts
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: traefik
+ label: Traefik
+ description: Connect ingress with Traefik
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: allowCors
+ label: "Allow Cross Origin Requests"
+ schema:
+ type: boolean
+ default: false
+ show_if: [["enabled", "=", true]]
+ - variable: entrypoints
+ label: Entrypoints
+ schema:
+ type: list
+ default: ["websecure"]
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: entrypoint
+ label: Entrypoint
+ schema:
+ type: string
+ - variable: middlewares
+ label: Middlewares
+ schema:
+ type: list
+ default: []
+ show_if: [["enabled", "=", true]]
+ items:
+ - variable: middleware
+ label: Middleware
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: name
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: namespace
+ label: namespace
+ schema:
+ type: string
+ default: ""
+ - variable: certManager
+ label: certManager
+ description: Connect ingress with certManager
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: true
+ - variable: certificateIssuer
+ label: certificateIssuer
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: homepage
+ label: Homepage
+ description: Connect ingress with Homepage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: name
+ label: Name
+ description: defaults to chartname
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: description
+ label: Description
+ description: defaults to chart description
+ schema:
+ type: string
+ default: ""
+ show_if: [["enabled", "=", true]]
+ - variable: group
+ label: Group
+ schema:
+ type: string
+ required: true
+ default: "default"
+ show_if: [["enabled", "=", true]]
diff --git a/templates/questions/ingress/ingressRoot.yaml b/templates/questions/ingress/ingressRoot.yaml
new file mode 100644
index 0000000..cab6cce
--- /dev/null
+++ b/templates/questions/ingress/ingressRoot.yaml
@@ -0,0 +1,7 @@
+ - variable: ingress
+ label: ""
+ group: Ingress
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/metrics/metrics.yaml b/templates/questions/metrics/metrics.yaml
new file mode 100644
index 0000000..8f481fd
--- /dev/null
+++ b/templates/questions/metrics/metrics.yaml
@@ -0,0 +1,21 @@
+ - variable: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
diff --git a/templates/questions/metrics/metrics3m.yaml b/templates/questions/metrics/metrics3m.yaml
new file mode 100644
index 0000000..8f481fd
--- /dev/null
+++ b/templates/questions/metrics/metrics3m.yaml
@@ -0,0 +1,21 @@
+ - variable: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
diff --git a/templates/questions/metrics/metrics60m.yaml b/templates/questions/metrics/metrics60m.yaml
new file mode 100644
index 0000000..8f481fd
--- /dev/null
+++ b/templates/questions/metrics/metrics60m.yaml
@@ -0,0 +1,21 @@
+ - variable: metrics
+ group: Metrics
+ label: Prometheus Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: Main Metrics
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
diff --git a/templates/questions/metrics/prometheusRule.yaml b/templates/questions/metrics/prometheusRule.yaml
new file mode 100644
index 0000000..809e885
--- /dev/null
+++ b/templates/questions/metrics/prometheusRule.yaml
@@ -0,0 +1,14 @@
+ - variable: prometheusRule
+ label: PrometheusRule
+ description: Enable and configure Prometheus Rules for the App.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ description: Enable Prometheus Metrics
+ schema:
+ type: boolean
+ default: false
+ # TODO: Rule List section
diff --git a/templates/questions/persistence/persistenceBasic.yaml b/templates/questions/persistence/persistenceBasic.yaml
new file mode 100644
index 0000000..ae15291
--- /dev/null
+++ b/templates/questions/persistence/persistenceBasic.yaml
@@ -0,0 +1,266 @@
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: pvc
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - value: iscsi
+ description: iSCSI Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ 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
+ - variable: size
+ label: Size quotum of Storage (Do NOT REDUCE after installation)
+ description: This value can ONLY be INCREASED after the installation
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: disabled
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
diff --git a/templates/questions/persistence/persistenceList.yaml b/templates/questions/persistence/persistenceList.yaml
new file mode 100644
index 0000000..5165e79
--- /dev/null
+++ b/templates/questions/persistence/persistenceList.yaml
@@ -0,0 +1,289 @@
+ - variable: persistenceList
+ label: Additional App Storage
+ group: Storage and Persistence
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: persistenceListEntry
+ label: Custom Storage
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the storage
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Type of Storage
+ description: Sets the persistence type, Anything other than PVC could break rollback!
+ schema:
+ type: string
+ default: hostPath
+ enum:
+ - value: pvc
+ description: PVC
+ - value: hostPath
+ description: Host Path
+ - value: emptyDir
+ description: emptyDir
+ - value: nfs
+ description: NFS Share
+ - variable: server
+ label: NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: path
+ label: Path on NFS Server
+ schema:
+ show_if: [["type", "=", "nfs"]]
+ type: string
+ default: ""
+ - variable: iscsi
+ label: iSCSI Options
+ schema:
+ show_if: [["type", "=", "iscsi"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: targetPortal
+ label: targetPortal
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: iqn
+ label: iqn
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: lun
+ label: lun
+ schema:
+ type: int
+ default: 0
+ - variable: authSession
+ label: authSession
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: authDiscovery
+ label: authDiscovery
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: username
+ label: username
+ schema:
+ type: string
+ default: ""
+ - variable: password
+ label: password
+ schema:
+ type: string
+ default: ""
+ - variable: usernameInitiator
+ label: usernameInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: passwordInitiator
+ label: passwordInitiator
+ schema:
+ type: string
+ default: ""
+ - variable: autoPermissions
+ label: Automatic Permissions Configuration
+ description: Automatically set permissions
+ schema:
+ show_if: [["type", "!=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: enabled
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: chown
+ label: Run CHOWN
+ description: |
+ It will run CHOWN on the path with the given fsGroup
+ schema:
+ type: boolean
+ default: false
+ - variable: chmod
+ label: Run CHMOD
+ description: |
+ It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770
+ schema:
+ type: string
+ valid_chars: '[0-9]{3}'
+ default: ""
+ - variable: recursive
+ label: Recursive
+ description: |
+ It will run CHOWN and CHMOD recursively
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnly
+ label: Read Only
+ schema:
+ type: boolean
+ default: false
+ - variable: hostPath
+ label: Host Path
+ description: Path inside the container the storage is mounted
+ schema:
+ show_if: [["type", "=", "hostPath"]]
+ type: hostpath
+ - variable: mountPath
+ label: Mount Path
+ description: Path inside the container the storage is mounted
+ schema:
+ type: string
+ default: ""
+ required: true
+ valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$'
+ - variable: medium
+ label: EmptyDir Medium
+ schema:
+ show_if: [["type", "=", "emptyDir"]]
+ type: string
+ default: ""
+ enum:
+ - value: ""
+ description: Default
+ - value: Memory
+ description: Memory
+ - variable: size
+ label: Size Quotum of Storage
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: 256Gi
+ - variable: storageClass
+ label: 'storageClass (Advanced)'
+ description: 'sets the storageClass to something other than iX default. Only for advanced usecases!'
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: string
+ default: ""
+ - variable: static
+ label: 'Static Fixed PVC Bindings (Experimental)'
+ description: Link a PVC to a specific storage location
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: mode
+ label: mode
+ description: |
+ disabled: use normal dynamic PVCs
+ smb: connect to an SMB share
+ nfs: connect to an NFS share
+ schema:
+ type: string
+ default: "disabled"
+ enum:
+ - value: "disabled"
+ description: disabled
+ - value: smb
+ description: smb
+ - value: nfs
+ description: nfs
+ - variable: server
+ label: Server
+ description: server to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "myserver"
+ - variable: share
+ label: Share
+ description: share to connect to
+ schema:
+ type: string
+ show_if: [["mode", "!=", "disabled"]]
+ default: "/myshare"
+ - variable: user
+ label: User
+ description: connecting user
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: "myuser"
+ - variable: domain
+ label: Domain
+ description: user domain
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: password
+ label: Password
+ description: connecting password
+ schema:
+ type: string
+ show_if: [["mode", "=", "smb"]]
+ default: ""
+ - variable: volumeSnapshots
+ label: 'Volume Snapshots (Experimental)'
+ description: Add an entry to the list to force creation of a volumeSnapshot of this PVC
+ schema:
+ show_if: [["type", "=", "pvc"]]
+ type: list
+ default: []
+ items:
+ - variable: volumeSnapshotEntry
+ label: Custom volumeSnapshot
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: 'WARNING: renaming this, means deletion of the snapshot with the old name!'
+ schema:
+ type: string
+ default: "mysnapshot"
+ required: true
+ - variable: volumeSnapshotClassName
+ label: 'volumeSnapshot Class Name (Advanced)'
+ description: For use with PVCs using a non-default storageClass
+ schema:
+ type: string
+ default: ""
diff --git a/templates/questions/persistence/persistenceRoot.yaml b/templates/questions/persistence/persistenceRoot.yaml
new file mode 100644
index 0000000..a7235cf
--- /dev/null
+++ b/templates/questions/persistence/persistenceRoot.yaml
@@ -0,0 +1,8 @@
+ - variable: persistence
+ label: Integrated Persistent Storage
+ description: Integrated Persistent Storage
+ group: Storage and Persistence
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/persistence/vctRoot.yaml b/templates/questions/persistence/vctRoot.yaml
new file mode 100644
index 0000000..0d42ca4
--- /dev/null
+++ b/templates/questions/persistence/vctRoot.yaml
@@ -0,0 +1,5 @@
+ - variable: volumeClaimTemplates
+ label: Integrated Persistent Storage
+ description: Integrated Persistent Storage
+ group: Storage and Persistence
+ schema:
diff --git a/templates/questions/postgresql/postgresql.yaml b/templates/questions/postgresql/postgresql.yaml
new file mode 100644
index 0000000..37ce1f1
--- /dev/null
+++ b/templates/questions/postgresql/postgresql.yaml
@@ -0,0 +1,425 @@
+ - variable: cnpg
+ group: Postgresql
+ label: "CloudNative-PG (CNPG)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: "Main Postgresql Database"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: hibernate
+ label: Hibernate
+ description: "enable to safely hibernate and shutdown the postgresql cluster"
+ schema:
+ type: boolean
+ default: false
+ - variable: mode
+ label: Mode
+ description: 'Cluster mode of operation. Available modes: standalone - default mode. Creates new or updates an existing CNPG cluster. recovery - Same as standalone but creates a cluster from a backup, object store or via pg_basebackup replica - Creates a replica cluster from an existing CNPG cluster. # TODO.'
+ schema:
+ type: string
+ default: "standalone"
+ enum:
+ - value: standalone
+ description: standalone
+ - value: replica
+ description: replica
+ - value: recovery
+ description: recovery
+ - variable: cluster
+ label: "Cluster Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ default: 1
+ - variable: singleNode
+ label: singleNode
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: storage
+ label: "Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: walStorage
+ label: "WAL Storage"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: size
+ label: Size
+ schema:
+ type: string
+ default: "256Gi"
+ - variable: monitoring
+ label: "Monitoring Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enablePodMonitor
+ label: "enablePodMonitor"
+ schema:
+ type: boolean
+ default: true
+ - variable: disableDefaultQueries
+ label: "disableDefaultQueries"
+ schema:
+ type: boolean
+ default: false
+ - variable: pooler
+ label: "Pooler Settings"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enabled
+ schema:
+ type: boolean
+ default: false
+ - variable: instances
+ label: Instances
+ schema:
+ type: int
+ show_if: [["enabled", "=", true]]
+ default: 1
+ - variable: createRO
+ label: "Create ReadOnly Instance"
+ schema:
+ type: boolean
+ show_if: [["enabled", "=", true]]
+ default: false
+ - variable: backups
+ label: "Backup Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "serverName"
+ schema:
+ type: int
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: destinationPath
+ label: "destinationPath"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: retentionPolicy
+ label: "retentionPolicy"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "30d"
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
+ - variable: recovery
+ label: "Recovery Settings (Experimental)"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: serverName
+ label: "serverName"
+ schema:
+ type: string
+ default: ""
+ - variable: revision
+ label: "serverName"
+ schema:
+ type: int
+ - variable: endpointURL
+ label: "endpointURL"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: method
+ label: "method"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "object_store"
+ - variable: backupName
+ label: "backupName"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: ""
+ - variable: provider
+ label: "provider"
+ schema:
+ type: string
+ show_if: [["enabled", "=", true]]
+ default: "s3"
+ enum:
+ - value: s3
+ description: S3
+ - value: azure
+ description: Azure
+ - value: google
+ description: Google
+ - variable: s3
+ label: "s3"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "s3"]]
+ attrs:
+ - variable: region
+ label: "region"
+ schema:
+ type: string
+ default: ""
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: accessKey
+ label: "accessKey"
+ schema:
+ type: string
+ default: ""
+ - variable: secretKey
+ label: "secretKey"
+ schema:
+ type: string
+ default: ""
+ - variable: azure
+ label: "azure (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "azure"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: connectionString
+ label: "connectionString"
+ schema:
+ type: string
+ default: ""
+ - variable: storageAccount
+ label: "storageAccount"
+ schema:
+ type: string
+ default: ""
+ - variable: storageKey
+ label: "storageKey"
+ schema:
+ type: string
+ default: ""
+ - variable: storageSasToken
+ label: "storageSasToken"
+ schema:
+ type: string
+ default: ""
+ - variable: containerName
+ label: "containerName"
+ schema:
+ type: string
+ default: ""
+ - variable: serviceName
+ label: "serviceName"
+ schema:
+ type: string
+ default: "blob"
+ - variable: inheritFromAzureAD
+ label: "inheritFromAzureAD"
+ schema:
+ type: boolean
+ default: false
+ - variable: google
+ label: "google (EXTREMELY EXPERIMENTAL)"
+ schema:
+ additional_attrs: true
+ type: dict
+ show_if: [["provider", "=", "google"]]
+ attrs:
+ - variable: path
+ label: "path"
+ schema:
+ type: string
+ default: "/"
+ - variable: bucket
+ label: "bucket"
+ schema:
+ type: string
+ default: ""
+ - variable: gkeEnvironment
+ label: "gkeEnvironment"
+ schema:
+ type: string
+ default: ""
+ - variable: applicationCredentials
+ label: "applicationCredentials"
+ schema:
+ type: string
+ default: ""
diff --git a/templates/questions/replicas/replica1.yaml b/templates/questions/replicas/replica1.yaml
new file mode 100644
index 0000000..dc82f85
--- /dev/null
+++ b/templates/questions/replicas/replica1.yaml
@@ -0,0 +1 @@
+ default: 1
diff --git a/templates/questions/replicas/replica2.yaml b/templates/questions/replicas/replica2.yaml
new file mode 100644
index 0000000..a263e76
--- /dev/null
+++ b/templates/questions/replicas/replica2.yaml
@@ -0,0 +1 @@
+ default: 3
diff --git a/templates/questions/replicas/replica3.yaml b/templates/questions/replicas/replica3.yaml
new file mode 100644
index 0000000..4da4bc9
--- /dev/null
+++ b/templates/questions/replicas/replica3.yaml
@@ -0,0 +1 @@
+ default: 2
diff --git a/templates/questions/replicas/replicas.yaml b/templates/questions/replicas/replicas.yaml
new file mode 100644
index 0000000..b83fa82
--- /dev/null
+++ b/templates/questions/replicas/replicas.yaml
@@ -0,0 +1,6 @@
+ - variable: replicas
+ description: Number of desired pod replicas
+ label: Desired Replicas
+ schema:
+ type: int
+ required: true
diff --git a/templates/questions/security/securityContextAdvanced.yaml b/templates/questions/security/securityContextAdvanced.yaml
new file mode 100644
index 0000000..6c0917e
--- /dev/null
+++ b/templates/questions/security/securityContextAdvanced.yaml
@@ -0,0 +1,18 @@
+ - variable: advanced
+ label: Show Advanced Settings
+ description: Advanced settings are not covered by TrueCharts Support
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: privileged
+ label: "Privileged mode"
+ schema:
+ type: boolean
+ default: false
+ - variable: readOnlyRootFilesystem
+ label: "ReadOnly Root Filesystem"
+ schema:
+ type: boolean
+ default: true
diff --git a/templates/questions/security/securityContextContainer.yaml b/templates/questions/security/securityContextContainer.yaml
new file mode 100644
index 0000000..451f5d4
--- /dev/null
+++ b/templates/questions/security/securityContextContainer.yaml
@@ -0,0 +1,14 @@
+ # Settings from questions.yaml get appended here on a per-app basis
+ - variable: PUID
+ label: Process User ID - PUID
+ description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps
+ schema:
+ type: int
+ show_if: [["runAsUser", "=", 0]]
+ default: 568
+ - variable: UMASK
+ label: UMASK
+ description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps
+ schema:
+ type: string
+ default: "0022"
diff --git a/templates/questions/security/securityContextPod.yaml b/templates/questions/security/securityContextPod.yaml
new file mode 100644
index 0000000..4573b8f
--- /dev/null
+++ b/templates/questions/security/securityContextPod.yaml
@@ -0,0 +1,27 @@
+ - variable: pod
+ label: Pod
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: fsGroupChangePolicy
+ label: "When should we take ownership?"
+ schema:
+ type: string
+ default: OnRootMismatch
+ enum:
+ - value: OnRootMismatch
+ description: OnRootMismatch
+ - value: Always
+ description: Always
+ - variable: supplementalGroups
+ label: Supplemental Groups
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: supplementalGroupsEntry
+ label: Supplemental Group
+ schema:
+ type: int
+ # Settings from questions.yaml get appended here on a per-app basis
diff --git a/templates/questions/security/securityContextRoot.yaml b/templates/questions/security/securityContextRoot.yaml
new file mode 100644
index 0000000..4bc5ce1
--- /dev/null
+++ b/templates/questions/security/securityContextRoot.yaml
@@ -0,0 +1,14 @@
+ - variable: securityContext
+ group: Security and Permissions
+ label: Security Context
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: container
+ label: Container
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ # Settings from questions.yaml get appended here on a per-app basis
diff --git a/templates/questions/service/serviceExpert.yaml b/templates/questions/service/serviceExpert.yaml
new file mode 100644
index 0000000..f50e02b
--- /dev/null
+++ b/templates/questions/service/serviceExpert.yaml
@@ -0,0 +1,78 @@
+ - variable: scaleExternalInterface
+ description: Add External Interfaces
+ label: Add external Interfaces
+ group: Networking
+ schema:
+ type: list
+ items:
+ - variable: interfaceConfiguration
+ description: Interface Configuration
+ label: Interface Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ $ref:
+ - "normalize/interfaceConfiguration"
+ attrs:
+ - variable: hostInterface
+ description: Please Specify Host Interface
+ label: Host Interface
+ schema:
+ type: string
+ required: true
+ $ref:
+ - "definitions/interface"
+ - variable: ipam
+ description: Define how IP Address will be managed
+ label: IP Address Management
+ schema:
+ additional_attrs: true
+ type: dict
+ required: true
+ attrs:
+ - variable: type
+ description: Specify type for IPAM
+ label: IPAM Type
+ schema:
+ type: string
+ required: true
+ enum:
+ - value: dhcp
+ description: Use DHCP
+ - value: static
+ description: Use Static IP
+ - variable: staticIPConfigurations
+ label: Static IP Addresses
+ schema:
+ type: list
+ show_if: [["type", "=", "static"]]
+ items:
+ - variable: staticIP
+ label: Static IP
+ schema:
+ type: ipaddr
+ cidr: true
+ - variable: staticRoutes
+ label: Static Routes
+ schema:
+ type: list
+ show_if: [["type", "=", "static"]]
+ items:
+ - variable: staticRouteConfiguration
+ label: Static Route Configuration
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: destination
+ label: Destination
+ schema:
+ type: ipaddr
+ cidr: true
+ required: true
+ - variable: gateway
+ label: Gateway
+ schema:
+ type: ipaddr
+ cidr: false
+ required: true
diff --git a/templates/questions/service/serviceExpertRoot.yaml b/templates/questions/service/serviceExpertRoot.yaml
new file mode 100644
index 0000000..a6568b6
--- /dev/null
+++ b/templates/questions/service/serviceExpertRoot.yaml
@@ -0,0 +1,8 @@
+ - variable: serviceexpert
+ group: Networking and Services
+ label: Show Expert Config
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
diff --git a/templates/questions/service/serviceList.yaml b/templates/questions/service/serviceList.yaml
new file mode 100644
index 0000000..9206dbd
--- /dev/null
+++ b/templates/questions/service/serviceList.yaml
@@ -0,0 +1,134 @@
+ - variable: serviceList
+ label: Add Manual Custom Services
+ group: Networking and Services
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: serviceListEntry
+ label: Custom Service
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ default: ""
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
+ - value: Simple
+ description: Deprecated CHANGE THIS
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: advancedsvcset
+ label: Show Advanced Service Settings
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: externalIPs
+ label: "External IP's"
+ description: "External IP's"
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: externalIP
+ label: External IP
+ schema:
+ type: string
+ - variable: ipFamilyPolicy
+ label: IP Family Policy
+ description: Specify the IP Policy
+ schema:
+ type: string
+ default: SingleStack
+ enum:
+ - value: SingleStack
+ description: SingleStack
+ - value: PreferDualStack
+ description: PreferDualStack
+ - value: RequireDualStack
+ description: RequireDualStack
+ - variable: ipFamilies
+ label: IP Families
+ description: (Advanced) The IP Families that should be used
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ipFamily
+ label: IP Family
+ schema:
+ type: string
+ - variable: portsList
+ label: Additional Service Ports
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: portsListEntry
+ label: Custom ports
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable the Port
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: Port Name
+ schema:
+ type: string
+ default: ""
+ - 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: targetPort
+ label: Target Port
+ description: This port exposes the container port on the service
+ schema:
+ type: int
+ required: true
+ - variable: port
+ label: Container Port
+ schema:
+ type: int
+ required: true
diff --git a/templates/questions/service/serviceMain.yaml b/templates/questions/service/serviceMain.yaml
new file mode 100644
index 0000000..4733339
--- /dev/null
+++ b/templates/questions/service/serviceMain.yaml
@@ -0,0 +1,7 @@
+ - variable: main
+ label: "Main Service"
+ description: "The Primary service on which the healthcheck runs, often the webUI"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/service/serviceRoot.yaml b/templates/questions/service/serviceRoot.yaml
new file mode 100644
index 0000000..3985f2a
--- /dev/null
+++ b/templates/questions/service/serviceRoot.yaml
@@ -0,0 +1,7 @@
+ - variable: service
+ group: Networking and Services
+ label: Configure Service(s)
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/service/serviceSelectorClusterIP.yaml b/templates/questions/service/serviceSelectorClusterIP.yaml
new file mode 100644
index 0000000..c539215
--- /dev/null
+++ b/templates/questions/service/serviceSelectorClusterIP.yaml
@@ -0,0 +1,17 @@
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: ClusterIP
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
diff --git a/templates/questions/service/serviceSelectorExtras.yaml b/templates/questions/service/serviceSelectorExtras.yaml
new file mode 100644
index 0000000..1f45b63
--- /dev/null
+++ b/templates/questions/service/serviceSelectorExtras.yaml
@@ -0,0 +1,13 @@
+ - variable: loadBalancerIP
+ label: LoadBalancer IP
+ description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB"
+ schema:
+ show_if: [["type", "=", "LoadBalancer"]]
+ type: string
+ default: ""
+ - variable: ports
+ label: "Service's Port(s) Configuration"
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/service/serviceSelectorLoadBalancer.yaml b/templates/questions/service/serviceSelectorLoadBalancer.yaml
new file mode 100644
index 0000000..0a5bb0c
--- /dev/null
+++ b/templates/questions/service/serviceSelectorLoadBalancer.yaml
@@ -0,0 +1,17 @@
+ - variable: enabled
+ label: Enable the Service
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: type
+ label: Service Type
+ description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer"
+ schema:
+ type: string
+ default: LoadBalancer
+ enum:
+ - value: LoadBalancer
+ description: LoadBalancer (Expose Ports)
+ - value: ClusterIP
+ description: ClusterIP (Do Not Expose Ports)
diff --git a/templates/questions/traefik/addPrefixMiddleware.yaml b/templates/questions/traefik/addPrefixMiddleware.yaml
new file mode 100644
index 0000000..cba3c6f
--- /dev/null
+++ b/templates/questions/traefik/addPrefixMiddleware.yaml
@@ -0,0 +1,24 @@
+ - variable: addPrefix
+ label: Add Prefix
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: addPrefixEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: prefix
+ label: Prefix
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/traefik/basicAuthMiddleware.yaml b/templates/questions/traefik/basicAuthMiddleware.yaml
new file mode 100644
index 0000000..f5b1c38
--- /dev/null
+++ b/templates/questions/traefik/basicAuthMiddleware.yaml
@@ -0,0 +1,42 @@
+ - variable: basicAuth
+ label: basicAuth
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: basicAuthEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: users
+ label: Users
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: usersEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: username
+ label: Username
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: password
+ label: Password
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/traefik/bufferingMiddleware.yaml b/templates/questions/traefik/bufferingMiddleware.yaml
new file mode 100644
index 0000000..4986fa0
--- /dev/null
+++ b/templates/questions/traefik/bufferingMiddleware.yaml
@@ -0,0 +1,51 @@
+ - variable: buffering
+ label: Buffering
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: bufferingEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: maxRequestBodyBytes
+ label: Max Request Body Bytes
+ description: Leave empty and it won't be set
+ schema:
+ type: string
+ valid_chars: '^[0-9]*$'
+ default: ""
+ - variable: memRequestBodyBytes
+ label: Mem Request Body Bytes
+ description: Leave empty and it won't be set
+ schema:
+ type: string
+ valid_chars: '^[0-9]*$'
+ default: ""
+ - variable: maxResponseBodyBytes
+ label: Max Response Body Bytes
+ description: Leave empty and it won't be set
+ schema:
+ type: string
+ valid_chars: '^[0-9]*$'
+ default: ""
+ - variable: memResponseBodyBytes
+ label: Mem Response Body Bytes
+ description: Leave empty and it won't be set
+ schema:
+ type: string
+ valid_chars: '^[0-9]*$'
+ default: ""
+ - variable: retryExpression
+ label: Retry Expression
+ description: Leave empty and it won't be set
+ schema:
+ type: string
+ default: ""
diff --git a/templates/questions/traefik/chainMiddleware.yaml b/templates/questions/traefik/chainMiddleware.yaml
new file mode 100644
index 0000000..a2a5382
--- /dev/null
+++ b/templates/questions/traefik/chainMiddleware.yaml
@@ -0,0 +1,29 @@
+ - variable: chain
+ label: Chain
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: chainEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: middlewares
+ label: Middlewares to Chain
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/traefik/customFrameOptionsValueMiddleware.yaml b/templates/questions/traefik/customFrameOptionsValueMiddleware.yaml
new file mode 100644
index 0000000..11c2c4a
--- /dev/null
+++ b/templates/questions/traefik/customFrameOptionsValueMiddleware.yaml
@@ -0,0 +1,24 @@
+ - variable: customFrameOptionsValue
+ label: Custom Frame Options Value
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: customFrameOptionsValueEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: value
+ label: X-Frame-Options Header Value
+ description: The value of the header.
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/traefik/customRequestHeadersMiddleware.yaml b/templates/questions/traefik/customRequestHeadersMiddleware.yaml
new file mode 100644
index 0000000..ce108bd
--- /dev/null
+++ b/templates/questions/traefik/customRequestHeadersMiddleware.yaml
@@ -0,0 +1,43 @@
+ - variable: customRequestHeaders
+ label: Custom Request Headers
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: customRequestHeadersEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: headers
+ label: Headers to Add
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: headersEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Header Name
+ description: Name of custom header to be added to requests, eg. X-Custom-Header
+ schema:
+ valid_chars: ^[a-zA-Z0-9_\-]*$
+ type: string
+ required: true
+ default: ""
+ - variable: value
+ label: Header Value
+ description: The value of the header. If the value is empty, the header will be removed.
+ schema:
+ type: string
+ default: ""
diff --git a/templates/questions/traefik/customResponseHeadersMiddleware.yaml b/templates/questions/traefik/customResponseHeadersMiddleware.yaml
new file mode 100644
index 0000000..2e6976d
--- /dev/null
+++ b/templates/questions/traefik/customResponseHeadersMiddleware.yaml
@@ -0,0 +1,43 @@
+ - variable: customResponseHeaders
+ label: Custom Response Headers
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: customResponseHeadersEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: headers
+ label: Headers to Add
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: headersEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Header Name
+ description: Name of custom header to be added to responses, eg. X-Custom-Header
+ schema:
+ valid_chars: ^[a-zA-Z0-9_\-]*$
+ type: string
+ required: true
+ default: ""
+ - variable: value
+ label: Header Value
+ description: The value of the header. If the value is empty, the header will be removed.
+ schema:
+ type: string
+ default: ""
diff --git a/templates/questions/traefik/forwardAuthMiddleware.yaml b/templates/questions/traefik/forwardAuthMiddleware.yaml
new file mode 100644
index 0000000..1315955
--- /dev/null
+++ b/templates/questions/traefik/forwardAuthMiddleware.yaml
@@ -0,0 +1,70 @@
+ - variable: forwardAuth
+ label: forwardAuth
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: basicAuthEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: address
+ label: Address
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: trustForwardHeader
+ label: trustForwardHeader
+ schema:
+ type: boolean
+ default: false
+ - variable: tls
+ label: TLS
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: insecureSkipVerify
+ label: insecureSkipVerify (expert)
+ description: >-
+ This disables all TLS certificate validation on communications with the authentication endpoint.
+ This could be a security risk and should only be used if you know what you are doing.
+ schema:
+ type: boolean
+ default: false
+ - variable: authResponseHeadersRegex
+ label: authResponseHeadersRegex
+ schema:
+ type: string
+ default: ""
+ - variable: authResponseHeaders
+ label: authResponseHeaders
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: authResponseHeadersEntry
+ label: ""
+ schema:
+ type: string
+ default: ""
+ - variable: authRequestHeaders
+ label: authRequestHeaders
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: authRequestHeadersEntry
+ label: ""
+ schema:
+ type: string
+ default: ""
diff --git a/templates/questions/traefik/forwardedHeaders.yaml b/templates/questions/traefik/forwardedHeaders.yaml
new file mode 100644
index 0000000..62b0ae4
--- /dev/null
+++ b/templates/questions/traefik/forwardedHeaders.yaml
@@ -0,0 +1,32 @@
+ - variable: forwardedHeaders
+ label: Accept Forwarded Headers
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: trustedIPs
+ label: Trusted IPs
+ description: Trust Forwarded Headers from specific IPs.
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: trustedIPsEntry
+ label: ""
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: insecureMode
+ label: Insecure Mode
+ description: Always Trust Forwarded Headers
+ schema:
+ type: boolean
+ default: false
diff --git a/templates/questions/traefik/geoBlockMiddleware.yaml b/templates/questions/traefik/geoBlockMiddleware.yaml
new file mode 100644
index 0000000..d83cf79
--- /dev/null
+++ b/templates/questions/traefik/geoBlockMiddleware.yaml
@@ -0,0 +1,106 @@
+ - variable: geoBlock
+ label: GeoBlock
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: geoBlockEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: This is a 3rd party plugin and not maintained by TrueCharts,
+ for more information go to geoblock
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: allowLocalRequests
+ label: Allow Local Requests
+ description: If set to true, will not block request from Private IP Ranges
+ schema:
+ type: boolean
+ default: true
+ - variable: logLocalRequests
+ label: Log Local Requests
+ description: If set to true, will log every connection from any IP in the private IP range
+ schema:
+ type: boolean
+ default: false
+ - variable: logAllowedRequests
+ label: Log Allowed Requests
+ description: If set to true, will show a log message with the IP and the country of origin if a request is allowed.
+ schema:
+ type: boolean
+ default: false
+ - variable: logApiRequests
+ label: Log API Requests
+ description: If set to true, will show a log message for every API hit.
+ schema:
+ type: boolean
+ default: false
+ - variable: api
+ label: API
+ description: Defines the API URL for the IP to Country resolution. The IP to fetch can be added with {ip} to the URL.
+ schema:
+ type: string
+ required: true
+ default: https://get.geojs.io/v1/ip/country/{ip}
+ - variable: apiTimeoutMs
+ label: API Timeout in ms
+ description: Timeout for the call to the api uri.
+ schema:
+ type: int
+ required: true
+ default: 500
+ - variable: cacheSize
+ label: Cache Size
+ description: Defines the max size of the LRU (least recently used) cache.
+ schema:
+ type: int
+ required: true
+ default: 25
+ - variable: forceMonthlyUpdate
+ label: Force Monthly Update
+ description: Even if an IP stays in the cache for a period of a month (about 30 x 24 hours), it must be fetch again after a month.
+ schema:
+ type: boolean
+ default: true
+ - variable: allowUnknownCountries
+ label: Allow Unknown Countries
+ description: Some IP addresses have no country associated with them. If this option is set to true, all IPs with no associated country are also allowed.
+ schema:
+ type: boolean
+ default: false
+ - variable: unknownCountryApiResponse
+ label: Unknown Countries API Response
+ description: The API uri can be customized. This options allows to customize the response string of the API when a IP with no associated country is requested.
+ schema:
+ type: string
+ required: true
+ default: nil
+ - variable: blackListMode
+ label: Blacklist Mode
+ description: When set to true the filter logic is inverted, i.e. requests originating from countries listed in the countries list are blocked.
+ schema:
+ type: boolean
+ default: false
+ - variable: countries
+ description: Country codes (2 characters) from which connections to the service should be allowed or blocked, based on the mode.
+ label: Countries
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: countryEntry
+ label: Country
+ description: Country codes (2 characters) from which connections to the service should be allowed or blocked, based on the mode.
+ schema:
+ type: string
+ required: true
+ # Allow only 2 Characters
+ valid_chars: '^[a-zA-Z]{2}$'
+ default: ""
diff --git a/templates/questions/traefik/ipWhitelistMiddleware.yaml b/templates/questions/traefik/ipWhitelistMiddleware.yaml
new file mode 100644
index 0000000..cb2066a
--- /dev/null
+++ b/templates/questions/traefik/ipWhitelistMiddleware.yaml
@@ -0,0 +1,53 @@
+ - variable: ipWhiteList
+ label: ipWhiteList
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: ipWhiteListEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: sourceRange
+ label: Source Range
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: sourceRangeEntry
+ label: ""
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: ipStrategy
+ label: IP Strategy
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: depth
+ label: Depth
+ schema:
+ type: int
+ required: true
+ - variable: excludedIPs
+ label: Excluded IPs
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: excludedIPsEntry
+ label: ""
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/traefik/modsecurityMiddleware.yaml b/templates/questions/traefik/modsecurityMiddleware.yaml
new file mode 100644
index 0000000..e87a51f
--- /dev/null
+++ b/templates/questions/traefik/modsecurityMiddleware.yaml
@@ -0,0 +1,41 @@
+ - variable: modsecurity
+ label: modsecurity
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: modsecurityEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: This is a 3rd party plugin and not maintained by TrueCharts,
+ for more information go to traefik-modsecurity-plugin
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: modSecurityUrl
+ label: ModSecurity Url
+ description: It's the URL for the owasp/modsecurity container.
+ schema:
+ type: string
+ required: true
+ default: "https://someurl"
+ - variable: timeoutMillis
+ label: timeout Millis
+ description: timeout in milliseconds for the http client to talk with modsecurity container. (
+ schema:
+ type: int
+ required: true
+ default: 2
+ - variable: maxBodySize
+ label: maxBody Size
+ description: it's the maximum limit for requests body size. Requests exceeding this value will be rejected using HTTP 413 Request Entity Too Large. Zero means "use default value".
+ schema:
+ type: int
+ required: true
+ default: 0
diff --git a/templates/questions/traefik/proxyProtocol.yaml b/templates/questions/traefik/proxyProtocol.yaml
new file mode 100644
index 0000000..855fef5
--- /dev/null
+++ b/templates/questions/traefik/proxyProtocol.yaml
@@ -0,0 +1,33 @@
+ - variable: proxyProtocol
+ label: Accept Proxy Protocol connections
+ description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers.
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: enabled
+ label: Enable
+ schema:
+ type: boolean
+ default: false
+ show_subquestions_if: true
+ subquestions:
+ - variable: trustedIPs
+ label: Trusted IPs
+ description: Only IPs in trustedIPs will lead to remote client address replacement
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: trustedIPsEntry
+ label: ""
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: insecureMode
+ label: Insecure Mode
+ description: Trust every incoming connection
+ schema:
+ type: boolean
+ default: false
diff --git a/templates/questions/traefik/rateLimitMiddleware.yaml b/templates/questions/traefik/rateLimitMiddleware.yaml
new file mode 100644
index 0000000..80fdb3d
--- /dev/null
+++ b/templates/questions/traefik/rateLimitMiddleware.yaml
@@ -0,0 +1,29 @@
+ - variable: rateLimit
+ label: rateLimit
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: rateLimitEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: average
+ label: Average
+ schema:
+ type: int
+ required: true
+ default: 300
+ - variable: burst
+ label: Burst
+ schema:
+ type: int
+ required: true
+ default: 200
diff --git a/templates/questions/traefik/realIPMiddleware.yaml b/templates/questions/traefik/realIPMiddleware.yaml
new file mode 100644
index 0000000..aa59f89
--- /dev/null
+++ b/templates/questions/traefik/realIPMiddleware.yaml
@@ -0,0 +1,31 @@
+ - variable: realIP
+ label: Real IP
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: realIPEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: excludedNetworks
+ label: Excluded Networks
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: excludedNetEntry
+ label: Excluded Network Entry
+ description: Network to exclude setting it to X-Real-Ip
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/traefik/redirectRegexMiddleware.yaml b/templates/questions/traefik/redirectRegexMiddleware.yaml
new file mode 100644
index 0000000..75b9586
--- /dev/null
+++ b/templates/questions/traefik/redirectRegexMiddleware.yaml
@@ -0,0 +1,34 @@
+ - variable: redirectRegex
+ label: redirectRegex
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: redirectRegexEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: regex
+ label: Regex
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: replacement
+ label: Replacement
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: permanent
+ label: Permanent
+ schema:
+ type: boolean
+ default: false
diff --git a/templates/questions/traefik/redirectSchemeMiddleware.yaml b/templates/questions/traefik/redirectSchemeMiddleware.yaml
new file mode 100644
index 0000000..5b32458
--- /dev/null
+++ b/templates/questions/traefik/redirectSchemeMiddleware.yaml
@@ -0,0 +1,33 @@
+ - variable: redirectScheme
+ label: redirectScheme
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: redirectSchemeEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: scheme
+ label: Scheme
+ schema:
+ type: string
+ required: true
+ default: https
+ enum:
+ - value: https
+ description: https
+ - value: http
+ description: http
+ - variable: permanent
+ label: Permanent
+ schema:
+ type: boolean
+ default: false
diff --git a/templates/questions/traefik/rewriteResponseHeadersMiddleware.yaml b/templates/questions/traefik/rewriteResponseHeadersMiddleware.yaml
new file mode 100644
index 0000000..7fd2183
--- /dev/null
+++ b/templates/questions/traefik/rewriteResponseHeadersMiddleware.yaml
@@ -0,0 +1,49 @@
+ - variable: rewriteResponseHeaders
+ label: Rewrite Response Headers
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: rewriteResponseHeadersEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: headers
+ label: Headers To Rewrite
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: headersEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Header Name
+ description: Name of a header to modified in responses, eg. X-Custom-Header
+ schema:
+ valid_chars: ^[a-zA-Z0-9_\-]*$
+ type: string
+ required: true
+ default: ""
+ - variable: regex
+ label: Regex
+ description: The value of the header to match. Accepts regex expression.
+ schema:
+ type: string
+ default: ""
+ - variable: replacement
+ label: Replacement Regex
+ description: The new value of the header. Accepts regex expression.
+ schema:
+ type: string
+ default: ""
diff --git a/templates/questions/traefik/stripPrefixRegexMiddleware.yaml b/templates/questions/traefik/stripPrefixRegexMiddleware.yaml
new file mode 100644
index 0000000..6af8a76
--- /dev/null
+++ b/templates/questions/traefik/stripPrefixRegexMiddleware.yaml
@@ -0,0 +1,29 @@
+ - variable: stripPrefixRegex
+ label: stripPrefixRegex
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: stripPrefixRegexEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ schema:
+ type: string
+ required: true
+ - variable: regex
+ label: Regex
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: regexEntry
+ label: Regex
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/traefik/themeParkMiddleware.yaml b/templates/questions/traefik/themeParkMiddleware.yaml
new file mode 100644
index 0000000..aa2d03c
--- /dev/null
+++ b/templates/questions/traefik/themeParkMiddleware.yaml
@@ -0,0 +1,58 @@
+ - variable: themePark
+ label: theme.park
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: themeParkEntry
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: name
+ label: Name
+ description: This is a 3rd party plugin and not maintained by TrueCharts,
+ for more information go to traefik-themepark
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: appName
+ label: App Name
+ description: Lower case, name of the app to be themed.
+
Go to https://docs.theme-park.dev/themes/ to see supported apps.
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: themeName
+ label: Theme Name
+ description: Lower case, name of the theme to be applied.
+
Go to https://docs.theme-park.dev/theme-options/ to see supported themes.
+ schema:
+ type: string
+ required: true
+ default: ""
+ - variable: baseUrl
+ label: Base URL
+ description: Replace `https://theme-park.dev` URL for self-hosting reference.
+ schema:
+ type: string
+ required: true
+ default: https://theme-park.dev
+ - variable: addons
+ label: Addons
+ schema:
+ type: list
+ default: []
+ items:
+ - variable: addonEntry
+ label: Addon
+ description: Currently only supports 'darker' and '4k-logo' for *arr apps.
+
Go to https://docs.theme-park.dev/themes/addons/ for Addon information.
+
Go to https://github.com/packruler/traefik-themepark for more context on plugin
+ schema:
+ type: string
+ required: true
+ default: ""
diff --git a/templates/questions/velero/veleroSchedule.yaml b/templates/questions/velero/veleroSchedule.yaml
new file mode 100644
index 0000000..62aedd2
--- /dev/null
+++ b/templates/questions/velero/veleroSchedule.yaml
@@ -0,0 +1,50 @@
+ - variable: schedules
+ group: "Backup Configuration"
+ label: "Backup Schedules"
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: default
+ label: "Default Schedule"
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: false
+ - variable: schedule
+ label: "schedule"
+ show_if: [["enabled", "=", true]]
+ schema:
+ type: string
+ required: true
+ default: "0 0 0 * * *"
+ - variable: useOwnerReferencesInBackup
+ label: "useOwnerReferencesInBackup"
+ show_if: [["enabled", "=", true]]
+ schema:
+ type: boolean
+ default: false
+ - variable: template
+ label: template
+ show_if: [["enabled", "=", true]]
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ttl
+ label: "ttl"
+ schema:
+ type: string
+ required: true
+ default: "240h"
+ - variable: storageLocation
+ label: "storageLocation"
+ schema:
+ type: string
+ required: true
+ default: "default"
diff --git a/templates/questions/velero/veleroSchedulesList.yaml b/templates/questions/velero/veleroSchedulesList.yaml
new file mode 100644
index 0000000..9c4985d
--- /dev/null
+++ b/templates/questions/velero/veleroSchedulesList.yaml
@@ -0,0 +1,56 @@
+ - variable: schedulesList
+ group: "Backup Configuration"
+ label: "Backup Schedules"
+ schema:
+ type: list
+ items:
+ - variable: schedulesEntry
+ label: "Schedule"
+ schema:
+ type: dict
+ additional_attrs: true
+ attrs:
+ - variable: enabled
+ label: "enabled"
+ schema:
+ type: boolean
+ default: true
+ hidden: true
+ - variable: name
+ label: "Name"
+ schema:
+ type: string
+ default: ""
+ required: true
+ - variable: schedule
+ label: "schedule"
+ show_if: [["enabled", "=", true]]
+ schema:
+ type: string
+ required: true
+ default: "0 0 0 * * *"
+ - variable: useOwnerReferencesInBackup
+ label: "useOwnerReferencesInBackup"
+ show_if: [["enabled", "=", true]]
+ schema:
+ type: boolean
+ default: false
+ - variable: template
+ label: template
+ show_if: [["enabled", "=", true]]
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: ttl
+ label: "ttl"
+ schema:
+ type: string
+ required: true
+ default: "240h"
+ - variable: storageLocation
+ label: "storageLocation"
+ schema:
+ type: string
+ required: true
+ default: "default"
diff --git a/templates/questions/workload/podSpec.yaml b/templates/questions/workload/podSpec.yaml
new file mode 100644
index 0000000..130a4c7
--- /dev/null
+++ b/templates/questions/workload/podSpec.yaml
@@ -0,0 +1,12 @@
+ - variable: podSpec
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: containers
+ label: Containers
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/workload/replicas1.yaml b/templates/questions/workload/replicas1.yaml
new file mode 100644
index 0000000..57bac2d
--- /dev/null
+++ b/templates/questions/workload/replicas1.yaml
@@ -0,0 +1,7 @@
+ - variable: replicas
+ label: Replicas (Advanced)
+ description: Set the number of Replicas
+ schema:
+ type: int
+ show_if: [["type", "!=", "DaemonSet"]]
+ default: 1
diff --git a/templates/questions/workload/replicas2.yaml b/templates/questions/workload/replicas2.yaml
new file mode 100644
index 0000000..d8fbde6
--- /dev/null
+++ b/templates/questions/workload/replicas2.yaml
@@ -0,0 +1,7 @@
+ - variable: replicas
+ label: Replicas (Advanced)
+ description: Set the number of Replicas
+ schema:
+ type: int
+ show_if: [["type", "!=", "DaemonSet"]]
+ default: 2
diff --git a/templates/questions/workload/replicas3.yaml b/templates/questions/workload/replicas3.yaml
new file mode 100644
index 0000000..bd1bbab
--- /dev/null
+++ b/templates/questions/workload/replicas3.yaml
@@ -0,0 +1,7 @@
+ - variable: replicas
+ label: Replicas (Advanced)
+ description: Set the number of Replicas
+ schema:
+ type: int
+ show_if: [["type", "!=", "DaemonSet"]]
+ default: 3
diff --git a/templates/questions/workload/workload.yaml b/templates/questions/workload/workload.yaml
new file mode 100644
index 0000000..8bf5674
--- /dev/null
+++ b/templates/questions/workload/workload.yaml
@@ -0,0 +1,13 @@
+ - variable: workload
+ group: "Workload Settings"
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
+ - variable: main
+ label: ""
+ schema:
+ additional_attrs: true
+ type: dict
+ attrs:
diff --git a/templates/questions/workload/workloadDaemonset.yaml b/templates/questions/workload/workloadDaemonset.yaml
new file mode 100644
index 0000000..c13c9a9
--- /dev/null
+++ b/templates/questions/workload/workloadDaemonset.yaml
@@ -0,0 +1,10 @@
+ - variable: type
+ label: Type (Advanced)
+ schema:
+ type: string
+ default: DaemonSet
+ enum:
+ - value: Deployment
+ description: Deployment
+ - value: DaemonSet
+ description: DaemonSet
diff --git a/templates/questions/workload/workloadDeployment.yaml b/templates/questions/workload/workloadDeployment.yaml
new file mode 100644
index 0000000..5998ac6
--- /dev/null
+++ b/templates/questions/workload/workloadDeployment.yaml
@@ -0,0 +1,10 @@
+ - variable: type
+ label: Type (Advanced)
+ schema:
+ type: string
+ default: Deployment
+ enum:
+ - value: Deployment
+ description: Deployment
+ - value: DaemonSet
+ description: DaemonSet
diff --git a/templates/security.tpl b/templates/security.tpl
new file mode 100644
index 0000000..44c666b
--- /dev/null
+++ b/templates/security.tpl
@@ -0,0 +1,7 @@
+# Security Overview
+
+
+
+## Helm-Chart
+
+### Scan Results
diff --git a/templates/trivy-config.tpl b/templates/trivy-config.tpl
new file mode 100644
index 0000000..79bd871
--- /dev/null
+++ b/templates/trivy-config.tpl
@@ -0,0 +1,21 @@
+{{- if . -}}
+#### Chart Object: {{ escapeXML ( index . 0 ).Target }}
+ {{ range . }}
+
+ {{ if (eq (len .Misconfigurations) 0) }}
+| No Misconfigurations found |
+|:---------------------------------|
+
+ {{ else }}
+| Type | Misconfiguration ID | Check | Severity | Explaination | Links |
+|:----------------|:------------------:|:-----------:|:------------------:|-----------------------------------------|-----------------------------------------|
+ {{- range .Misconfigurations }}
+| {{ escapeXML .Type }} | {{ escapeXML .ID }} | {{ escapeXML .Title }} | {{ escapeXML .Severity }} | Expand...
{{ escapeXML .Description }}
{{ escapeXML .Message }} | Expand...
{{ range .References }}{{ escapeXML . }}
{{ end }} |
+ {{- end }}
+ {{- end }}
+ {{- end }}
+{{- else }}
+
+| No Misconfigurations found |
+|:---------------------------------|
+{{- end }}
diff --git a/templates/trivy-container.tpl b/templates/trivy-container.tpl
new file mode 100644
index 0000000..92291ae
--- /dev/null
+++ b/templates/trivy-container.tpl
@@ -0,0 +1,23 @@
+{{- if . -}}
+#### Container: {{ escapeXML ( index . 0 ).Target }}
+ {{ range . }}
+
+**{{ escapeXML .Type }}**
+
+ {{ if (eq (len .Vulnerabilities) 0) }}
+| No Vulnerabilities found |
+|:---------------------------------|
+
+ {{ else }}
+| Package | Vulnerability | Severity | Installed Version | Fixed Version |
+|:----------------|:------------------:|:-----------:|:------------------:|:-------------:|
+ {{- range .Vulnerabilities }}
+| {{ escapeXML .PkgName }} | {{ escapeXML .VulnerabilityID }} | {{ escapeXML .Vulnerability.Severity }} | {{ escapeXML .InstalledVersion }} | {{ escapeXML .FixedVersion }} |
+ {{- end }}
+ {{- end }}
+ {{- end }}
+{{- else }}
+
+| No Vulnerabilities found |
+|:---------------------------------|
+{{- end }}
diff --git a/tools/pre-commit-install.bat b/tools/pre-commit-install.bat
new file mode 100644
index 0000000..c815a9f
--- /dev/null
+++ b/tools/pre-commit-install.bat
@@ -0,0 +1,4 @@
+pip install pre-commit
+git config --unset-all core.hooksPath
+cd ..
+pre-commit install