From b91f1113b3ec413f9a8315672954df42fccf5808 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Wed, 6 Mar 2024 16:56:08 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/pihole/16.0.0/.helmignore | 30 + stable/pihole/16.0.0/CHANGELOG.md | 99 + stable/pihole/16.0.0/Chart.yaml | 38 + stable/pihole/16.0.0/README.md | 28 + stable/pihole/16.0.0/app-changelog.md | 9 + stable/pihole/16.0.0/app-readme.md | 8 + stable/pihole/16.0.0/charts/common-18.2.0.tgz | Bin 0 -> 99595 bytes stable/pihole/16.0.0/ix_values.yaml | 68 + stable/pihole/16.0.0/questions.yaml | 3201 +++++++++++++++++ stable/pihole/16.0.0/templates/_configmap.tpl | 14 + stable/pihole/16.0.0/templates/common.yaml | 11 + stable/pihole/16.0.0/values.yaml | 0 stable/teamspeak3/10.3.1/app-changelog.md | 9 - 13 files changed, 3506 insertions(+), 9 deletions(-) create mode 100644 stable/pihole/16.0.0/.helmignore create mode 100644 stable/pihole/16.0.0/CHANGELOG.md create mode 100644 stable/pihole/16.0.0/Chart.yaml create mode 100644 stable/pihole/16.0.0/README.md create mode 100644 stable/pihole/16.0.0/app-changelog.md create mode 100644 stable/pihole/16.0.0/app-readme.md create mode 100644 stable/pihole/16.0.0/charts/common-18.2.0.tgz create mode 100644 stable/pihole/16.0.0/ix_values.yaml create mode 100755 stable/pihole/16.0.0/questions.yaml create mode 100644 stable/pihole/16.0.0/templates/_configmap.tpl create mode 100644 stable/pihole/16.0.0/templates/common.yaml create mode 100644 stable/pihole/16.0.0/values.yaml delete mode 100644 stable/teamspeak3/10.3.1/app-changelog.md diff --git a/stable/pihole/16.0.0/.helmignore b/stable/pihole/16.0.0/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/stable/pihole/16.0.0/.helmignore @@ -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/stable/pihole/16.0.0/CHANGELOG.md b/stable/pihole/16.0.0/CHANGELOG.md new file mode 100644 index 00000000000..04ace02df9c --- /dev/null +++ b/stable/pihole/16.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +--- +title: Changelog +--- + + +*for the complete changelog, please refer to the website* + +**Important:** + + +## [pihole-16.0.0](https://github.com/truecharts/charts/compare/pihole-15.3.0...pihole-16.0.0) (2024-03-06) + +### Chore + + + +- BREAKING CHANGE change port/service layout for DNS + + +## [pihole-15.3.0](https://github.com/truecharts/charts/compare/pihole-15.2.4...pihole-15.3.0) (2024-03-06) + +### Chore + + + +- update container image common to v18.2.0[@9e8b7d4](https://github.com/9e8b7d4) by renovate ([#18943](https://github.com/truecharts/charts/issues/18943)) + + +## [pihole-15.2.4](https://github.com/truecharts/charts/compare/pihole-15.2.3...pihole-15.2.4) (2024-03-05) + +### Chore + + + +- bump everything to force helm release again + + +## [pihole-15.2.3](https://github.com/truecharts/charts/compare/pihole-15.2.1...pihole-15.2.3) (2024-03-05) + +### Chore + + + +- force rereleases + +- update container image common to v18.1.6[@904d84b](https://github.com/904d84b) by renovate ([#18835](https://github.com/truecharts/charts/issues/18835)) + + + + + + + + + + + + +## [pihole-14.0.5](https://github.com/truecharts/charts/compare/pihole-14.0.4...pihole-14.0.5) (2024-02-03) + +### Chore + + + +- update container image common to v17.2.30[@19ad5ec](https://github.com/19ad5ec) by renovate ([#17804](https://github.com/truecharts/charts/issues/17804)) + + +## [pihole-14.0.4](https://github.com/truecharts/charts/compare/pihole-14.0.3...pihole-14.0.4) (2024-01-26) + +### Chore + + + +- update container image common to v17.2.29[@d7c41a3](https://github.com/d7c41a3) by renovate ([#17545](https://github.com/truecharts/charts/issues/17545)) + + +## [pihole-14.0.3](https://github.com/truecharts/charts/compare/pihole-14.0.2...pihole-14.0.3) (2024-01-21) + +### Chore + + + +- update container image common to v17.2.28[@918b4c5](https://github.com/918b4c5) by renovate ([#17478](https://github.com/truecharts/charts/issues/17478)) + + +## [pihole-14.0.2](https://github.com/truecharts/charts/compare/pihole-14.0.1...pihole-14.0.2) (2024-01-21) + +### Chore + + + +- update container image common to v17.2.26[@24c98f7](https://github.com/24c98f7) by renovate ([#17409](https://github.com/truecharts/charts/issues/17409)) + + +## [pihole-14.0.1](https://github.com/truecharts/charts/compare/pihole-14.0.0...pihole-14.0.1) (2024-01-21) + +### Chore + + diff --git a/stable/pihole/16.0.0/Chart.yaml b/stable/pihole/16.0.0/Chart.yaml new file mode 100644 index 00000000000..bb242130c67 --- /dev/null +++ b/stable/pihole/16.0.0/Chart.yaml @@ -0,0 +1,38 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: networking + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.11" + truecharts.org/train: stable +apiVersion: v2 +appVersion: 2024.02.2 +dependencies: + - name: common + version: 18.2.0 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: DNS and Ad-filtering for your network +home: https://truecharts.org/charts/stable/pihole +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pihole.png +keywords: + - DNS +kubeVersion: ">=1.24.0-0" +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: pihole +sources: + - https://github.com/pi-hole + - https://github.com/pi-hole/docker-pi-hole + - https://pi-hole.net/ + - https://github.com/truecharts/charts/tree/master/charts/stable/pihole + - https://hub.docker.com/r/pihole/pihole +type: application +version: 16.0.0 diff --git a/stable/pihole/16.0.0/README.md b/stable/pihole/16.0.0/README.md new file mode 100644 index 00000000000..0f8f56aa183 --- /dev/null +++ b/stable/pihole/16.0.0/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/stable/pihole) + +**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/stable/pihole/16.0.0/app-changelog.md b/stable/pihole/16.0.0/app-changelog.md new file mode 100644 index 00000000000..1a973e97873 --- /dev/null +++ b/stable/pihole/16.0.0/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pihole-16.0.0](https://github.com/truecharts/charts/compare/pihole-15.3.0...pihole-16.0.0) (2024-03-06) + +### Chore + + + +- BREAKING CHANGE change port/service layout for DNS \ No newline at end of file diff --git a/stable/pihole/16.0.0/app-readme.md b/stable/pihole/16.0.0/app-readme.md new file mode 100644 index 00000000000..427b7f8ce26 --- /dev/null +++ b/stable/pihole/16.0.0/app-readme.md @@ -0,0 +1,8 @@ +DNS and Ad-filtering for your network + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/pihole](https://truecharts.org/charts/stable/pihole) + +--- + +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! diff --git a/stable/pihole/16.0.0/charts/common-18.2.0.tgz b/stable/pihole/16.0.0/charts/common-18.2.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a5b3906a5658ae044397aefc5e5915bb729fb6e6 GIT binary patch literal 99595 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

-61c2{C4( z)=Jir?HWXVwO;41(p|uu)OMnl(eg8N9jIQJx>fm-{RkGxyzo)D5-cf&T6>|H2wHXc zKK4+rCh{L)q*t3eeflzRx%_9x9a*RS@8rnM|GKw-*yaD;Nbv+qS(y;%MxJOT2D**c zF9cv94?dK;L)-F+l<@u7O!-eBL zeH0>M%Me1F_d2y>m^G9`YtH*8YYA-|QR!or0-MTz%a{S{rr?eb~MkEOP=k3xuax9lRa0V?rJ`@&4za`2Odxi~qKf zBDV6oX$n&uKl~tS6@$*rWkDoCH7xL3Md6-)JH3U!~f&!JxCWlB#lv`jiUGfRrZQ4_^>7*>(erSLO} z!bf88?21(?>fw*xI&EeBtl4us z_R02pvqwHz^>)vDbTdn#(BGa%qtM;A(jN3uRjLoV(hBv5Y_3}A3c6KMtjgk1y0TSG zM{9fQQ!RFPQukVV!+vvI{Juu#%YXNSG>u83GdL@mF`il*vyF zMJPxKZE6dxHEQbNCM3K|PyiSKI2EC*jd27Lg5y-Pio(A4My^&sJyEL# z;A|PdE_m}HK|zW_@RMrvvxuRc5*az_1OWc@h$QFsE)eyN0h$bX%jan$0trM}ol3_cPe&r3;gv>c5achJEO5$aa z>NK;i{704k7a*GMPGAflxH8E9!Xq5OMMA>Y`v184-@*Rr;c=(`ZK6n4nXm4uRKSE{ zLUB4@#No%-Y@4|E;oX_)n9=<+X=EIOHrg0pKk!bTRdX>bwKH>;jga%z`k5hNRw`T^ z_~&;C(|n%G=lJ<=W@KD52n^(8P}zHRytxvh^o|_>!(XS&A12R94_ywgk-}><-^Gkg z5tXC+^3>jEd1qLw|Ra*c38@1I{fQzHc-adIDwe9*f zUc2WOTDd47&T0Y!5o}jd1CZ?lLIF-0ibgv?$gDU90c1!7=oJ?85hWAwgwrvOb>qU` zNf3o8p^|Wf=mXf&2R!?!FWVM0q8vHCadh=T{yEQAUa@5|F)nM@Mkp{gLfH=3E^PU7 z$w~EZ4DI8PyFoeM`qX^)mlNAd7rBun-He`YSg@9aUkUmAv~uY>Wa6?up=5?bM0YqH z5*JnKgO1HTfoU-2dMoB_qX@7^oJjH9Gqj2q6;jgB;1|d|0{RI>Bm9BWRu;Jn(x7j@ z#0piqll{pIuW`MIXGUcKfk*WLSl zT2g4~9{7AN{`}P7Q&U@48%?X_)n7w`+THyvdG|M4=6D*NDd>MQ z!Sr7Kf@8c?(g&l|=zsfrh5TQ~C&!)sw~->_zajdd-WCJ7{y-;km-|Egrlc5VD1`T8 z1p10P^!4jylg~tWNFkjsszXY227EViLQ=0NS`Bh_5RdZrJ#t9qgO@G&O;+Hn%TgRF z8}f-MY4?ImaH?B_zM3Tasm<1e&wXe^5bJS0L-dK_6gk*gU0R?rraJ(A`Fp<*G|lL3 zdjWUxu6$;tl>RGGV;R2>UFzunaWVeS@qQQoXCuYR(#6UCT+4$Z{DcbrAjIo{#3{rv z7^7$c5T#kz3B?F7lQ-tk90V{1W0)i;25^)j3OL=t@q^|rLLrB7M)PH;3ml4mD2lmI z9}r4W5Sg6gEXPjB_d^5{$hd}|63|b{k8l$8m*g~h-}k{F<2H57CU0ZdA7K>bRQ-iS z4h*(U0T++-q%zPKGs^#-A)4~J`tj`DTRyPA-d$hyO?Wxcmr;%4jBBR^urYbke+mVP zGhqo^jXRHUq+bJuNUYiuQa%b#FivHxjg-P5H9(L!n(u(&G|k*5aGI}rHkMcYoy;b5 znSuwDGLS&ZR|+y9)B`SH;FRwazTyw)gI3@8SFvfHAPvU{Xq{5^#f^yP z>I8=$cEHw<83a)`seC=f`zcuA^_@;e1%@oz<=a)*mtUmhE~We=^InT)Y(WxpR0huL zVzUoDmI~{1(KX8+R_U{vDj%(8AS4y7_tYwbTk>8_4&7L*PDl8xOAY-G(F_NuEx~t6 z9sNH%DEfaNb@YEDrH=mR8=yVGmu<^weh%BRW2l=(v$cwrB|mxZ-z<(G>$TtqR$uF8 z2??SMvlPWajk9i5!==f;0ZbEpYrV`B5h2X%zHCAKLbL>ODZzCd&B0F++Rs2N9ajj4 zD2rx@V~{Vt)F&QD3V!-C`?>E~dD~>RSfGQhcuNia#}oK~Zl+NrBf2cc27zq0|_ z^8f=tIUjI(am_(7^1x|n6H@KlvX5f7U#xkkxROn5MEx5Bk}?p9mCFo7Y%DIF%gjUK z&bi-NfYwv$=s%$g8hwmXL;nvB4juV_|McW^ucQB)D7ExoZGck3um5fQ%w|DO>IeB> z28-BAC&`^z%?Su%wXx`?)l#5W<^^f@(HB)M!dN6FigWR*my&xC)4MarOLkn~Rige? zf%OpT=R2w&C;EEH2-H~fE==S+o+lb3nRV*MK&Y{(lKI9JfHC&3goyx?3h zgSjW6;xSmEt}RY@`|~w#xn(;BzWGwa|8<~lAB? z$dc(sc0^B&U}anuH6Sytn6U^|VOZ1{7l`Ls_TIZ-1!$%PGFt_#w%Zk!Q|gCJRdCWYhFRd17Gzf?lO=zw(-6&VUcu%~g=%>nG1sqrDx#i&)*50#7SX$@Tv04*(m-Ea z=YI1kr6uGbo31Udo$9j}jcWM69UkaBf{XZq)cXJJx%%J1>3+xmH&W{Of5`@DuL-K) zTjeCZq^Ek7aMoHEv~XFwD(D$lJEhPEU}^Qx15_)D_EL3v;^$mi(f@P*~S5EFbQr{I>+R^{T0sz#@|1SMMJUZy|ziy@Lm?Ru=-GBx<$h4P6X?&%Y@8KNzEEf*)c+(dzrCq5pfwZvMCZ zgOl$5e>3Gz;0C5CqOk}bC3gUL8lxBtr#K2Z9Zg{H2pTQ)*C$F^riS;iGFV|{3m@W{#Sn(KfL7sqyJ>H z_+<`A20{TN93j^GYQUb7-dBSmeC&NSNGJT?gyM(ZSN~7%PvAYIm`oYCym-TUgM^Y_ zQIPfqI7INJtWL?Vy}^tHBt$Pi1L!$dn2X{Q$)bf&IaLuXh6}oS+m@*6Yb12z_N;Jl>BHxTjMjBC#=WBTvK* z!0BHYAR>8)4D|LF8D)*);WQCE+yS4R-)!AR_UD_a+taUvUaBIgw#E47~m{2@}sXz52 z023185mwS#O2mi@*or9#)D-NLKoXQ*hbjm;S@st44Pdy+5f64phsQg9j81x~DaDe%M5=zE+h*K24Dgm|&UQgpN5^P4^ zD{|}z1tDfh1m`-ipS3H>W(23>7dYMqFed33QN4pw6o-5d$UyW4zNJ&EgD=7)ffU85 z0s_bgj9`ExoI(-j5ys(5LQ9||luU@IX7>t)bC8ZP4M75FiV*`iE&(yaBvOeoMlu?v znukHJcRm&h+67FJaj*~ej`w!=_ILO8vl{BW>Pm;ZK_tRIzP`KA;Cj7pM3Bi5p%d93 z9Fl1YV8ofZlnG>2F={Gw!wHI08Qz~y)g2k7PkcZ1k_bVDWMsx5eFY-)0HgmarBfur zAF~0W553+MNpXOBJ-#i=DA@}!Mr)myAS;W++Z&6wDz46Br@@XAnnl7@^)}Z(9rOe>Vku1J5fr$- z&6Y=xAw?fjkq(FAhj9vC1l!#NB{oU|KSq=K}unWCXhbzt>Onh==FA2S$e%n7Ics3gvkZg90-gNMZ-CG z;G~~{Ihl%8kyDcrF;6>^Msjj16CH#|P*glaJ$|4Wms3N`Btt?%I+c_+Ch@Lw)KnyM zYuN{!6lP3OP;b#3#=ys+c4XMl9WK&Na4HUTgeRP+_3YjTz22MA2nFJ}aPmGzz&NGZ z{vDAiO~(MnF`gmHAk9)GjWA^?NT$OG2hqHj?L&}_SJ46pSb_r1NdO0tQ3!X3%l*r@ zW-r^dPh%X6`H=ttnII-RHIIjPov7TC0$`8VP5JWbUTspdlf|G{tppr>Ot_Lj;RA)q zxF;jBa!@#iDWAd15$}$cuAUjxc#=f(oLE!zk13{-EcJpZ<%Bz$^FEPS6%oG{v4G-X z@x<fU_0~9^Uvk2?C+7Zc$;An&+ENB6WQ_RV_SZ_E@$Asd4 zqOeC1Ls5jN{2}X(q7j8SmVl>BGdz3C_IjKy1SH|?LQMRFiLwqGu6wL)2Krk3rZ%4f?j8h@b-we`u zuNer61bYcN7u8EJ==FZo(;1MMB{-OpDU0S>im(R5kEZA+n?Ozl^!#xWA9W{PdXf z2m@4hzy;M1Qx4;~ViF=o^xWij6h!2K05Zx+y38t;pGgK@XmMXo)!fiIU=1+HxI{}4 zvNUtYYq0M}Q&vnwv;oZW%TJI>)>pWR*F4OElsTkzeR z+c&R&1Q(Zg=Wow0-`#<;w{O7@XScU!SNE51?!ejA1vtOHy12Z*yuP~I>Am^e&F!1J zJ8*pqF5lg}y?k@A11_)5-+q5_dG#%L@x$f)ch}$FgSVIOF7MBHn{5-?^*6nDZ*I@O zJG;6+dwu!#^8Uvi@Xh7@6^HoE^({C9H)pr^m*?NVJ-Y=r-{0O`-@VxZSJzj&msj81 zUS56s=G~jC`yGx|@BZ@s?VCZbrzMmkqY-SDF{K|#tuUYHfB)6v`-IZiICIVUp|3yjGqXPQG4ktZ&h`+n{9E@MHQ zaEPdJ{tW4-e5{&o8d&#=a-gvNi>i8NLWdqw0A277`}#&ZzC6j4q6g>J@w$T+Xe zYQV%|z!Y<_NGymCng`Ys-)ejY^Y(nwCJ4q%!e&Z^$%m&2U11af6e`;gWs&&>W#TO# zD3losOX2wt=Flvh2f&h0vq{Y*R2wCkGJs5lf4h)Rp)v;?h*d$DukS1H0&eHPViTSu zw`8QLe6}NDo=JiO$CHF`x*1#8P{buvDGMvvS8i-e_A>=8D17O8MW5LHKl!x07;Xa` zGelFxDnF!r1+PfV*KW}39ojq26f6e4-q8SD5plGnN@24s#Y&W^0L}-Wg3;F~%Km%% z=Ir9#o53VpM<2EK|8D%x{e!*E|93Mby9IeG^K|ukfBF-+f)mc{?t(Fzpk8kmsAmpm zK|rQ)`l<)OF1V2o8D4?EZ+$b3qANH-e-}So^RvLr@4H(z09khz+`c|LUjP_yra>sc zi=(6g-H?zi0Of{+8p65EBBH8fe;GfI@WVTp*Z{K6`G^9FQWsbLEvpg02!S^rgjp>D zmvM^d2nOgC_&ffvyLBs-8`)Civi*Cn_n&}6liYpxKf&MaTEd(y!T+bovLosVqK!TT y2!#xs9Ev1xFi3^+Da8DAOvzK0ZsilBd|l~ESGw|Lm;WyS0RR6!fm$j6bPNDHY#c@a literal 0 HcmV?d00001 diff --git a/stable/pihole/16.0.0/ix_values.yaml b/stable/pihole/16.0.0/ix_values.yaml new file mode 100644 index 00000000000..83accc622d2 --- /dev/null +++ b/stable/pihole/16.0.0/ix_values.yaml @@ -0,0 +1,68 @@ +image: + repository: pihole/pihole + pullPolicy: IfNotPresent + tag: 2024.02.2@sha256:774f55647070106d20787a65beaa4354cbd455c59f734f239fde544abd679928 +pihole: + webPassword: somepassword" + dnsServers: + - "9.9.9.9" + - "149.112.112.112" +securityContext: + container: + readOnlyRootFilesystem: false + runAsNonRoot: false + allowPrivilegeEscalation: true + runAsUser: 0 + runAsGroup: 0 + capabilities: + add: + - NET_ADMIN + - SETFCAP + - SETPCAP + - KILL +workload: + main: + podSpec: + containers: + main: + envFrom: + - configMapRef: + name: pihole-env + probes: + liveness: + type: http + path: /admin/index.php + readiness: + type: http + path: /admin/index.php + startup: + type: http + path: /admin/index.php +service: + main: + ports: + main: + port: 9089 + targetPort: 80 + dns: + enabled: true + ports: + dns: + enabled: true + protocol: udp + port: 53 + targetPort: 53 + dns-tcp: + enabled: true + port: "{{ .Values.service.dns.ports.dns.port }}" + targetPort: "{{ .Values.service.dns.ports.dns.targetPort }}" +persistence: + config: + enabled: true + mountPath: "/etc/pihole" + dnsmasq: + enabled: true + mountPath: "/etc/dnsmasq.d" +portal: + open: + enabled: true diff --git a/stable/pihole/16.0.0/questions.yaml b/stable/pihole/16.0.0/questions.yaml new file mode 100755 index 00000000000..0aabf34a710 --- /dev/null +++ b/stable/pihole/16.0.0/questions.yaml @@ -0,0 +1,3201 @@ +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 + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + + path: "/" + admin: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + + path: "/admin/" +questions: + - 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 + + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + - 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 + + - 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 + + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: pihole + group: "App Configuration" + label: "Pi-Hole Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: webPassword + label: "Web Password" + description: "Sets admin password for the GUI" + schema: + type: string + default: "" + required: true + - variable: dnsServers + label: "DNS Servers" + description: "Set DNS servers. Max 2. Use #port suffix for ports" + schema: + type: list + default: ["9.9.9.9", "149.112.112.112"] + items: + - variable: dnsEntry + label: "DNS Server Entry" + schema: + type: string + default: "" + - 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: "" + + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - 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) + + - 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: + + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9089 + required: true + - variable: dns + label: "DNS Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - 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) + + - 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: + + - variable: dns + label: "DNS Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 53 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + + - 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 + + - 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 + + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: 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: "" + + - variable: dnsmasq + label: "App dnsmasq.d Storage" + description: "Stores the Application dnsmasq.d." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: 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: "" + + - 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: "" + + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + + - variable: main + label: "Main 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: 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: "" + + - 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]] + + - 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 + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 0 + # 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" + + - 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 + + - 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 + + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - 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" + +# - 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 + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + + - 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 + + - 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 + + - 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 + + - 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/stable/pihole/16.0.0/templates/_configmap.tpl b/stable/pihole/16.0.0/templates/_configmap.tpl new file mode 100644 index 00000000000..e2d62dd488d --- /dev/null +++ b/stable/pihole/16.0.0/templates/_configmap.tpl @@ -0,0 +1,14 @@ +{{/* Define the configmap */}} +{{- define "pihole.configmap" -}} +configmap: + pihole-env: + enabled: true + data: + WEBPASSWORD: {{ .Values.pihole.webPassword | quote }} + {{- with .Values.pihole.dnsServers }} + {{- if gt (len .) 2 -}} + {{- fail (printf "Pihole - Expected max 2 DNS Servers. But got [%v]" (len .)) -}} + {{- end }} + PIHOLE_DNS_: {{ join ";" . | quote }} + {{- end }} +{{- end -}} diff --git a/stable/pihole/16.0.0/templates/common.yaml b/stable/pihole/16.0.0/templates/common.yaml new file mode 100644 index 00000000000..190109ab61f --- /dev/null +++ b/stable/pihole/16.0.0/templates/common.yaml @@ -0,0 +1,11 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{/* Render configmap for pihole */}} +{{- $config := include "pihole.configmap" . | fromYaml -}} +{{- if $config -}} + {{- $_ := mustMergeOverwrite .Values $config -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/stable/pihole/16.0.0/values.yaml b/stable/pihole/16.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/stable/teamspeak3/10.3.1/app-changelog.md b/stable/teamspeak3/10.3.1/app-changelog.md deleted file mode 100644 index a3eeec29fcc..00000000000 --- a/stable/teamspeak3/10.3.1/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [teamspeak3-10.3.1](https://github.com/truecharts/charts/compare/teamspeak3-10.3.0...teamspeak3-10.3.1) (2024-03-06) - -### Fi - - - -- Changed Port Name ([#18953](https://github.com/truecharts/charts/issues/18953)) \ No newline at end of file