app_versions.json 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570
  1. {
  2. "1.0.24": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/charts/pihole/1.0.24",
  7. "last_update": "2024-02-06 10:03:00",
  8. "required_features": [
  9. "definitions/timezone",
  10. "normalize/ixVolume"
  11. ],
  12. "human_version": "2023.11.0_1.0.24",
  13. "version": "1.0.24",
  14. "chart_metadata": {
  15. "name": "pihole",
  16. "description": "DNS and Ad-filtering for your network.",
  17. "annotations": {
  18. "title": "Pi-hole"
  19. },
  20. "type": "application",
  21. "version": "1.0.24",
  22. "apiVersion": "v2",
  23. "appVersion": "2023.11.0",
  24. "kubeVersion": ">=1.16.0-0",
  25. "maintainers": [
  26. {
  27. "name": "truenas",
  28. "url": "https://www.truenas.com/",
  29. "email": "dev@ixsystems.com"
  30. }
  31. ],
  32. "dependencies": [
  33. {
  34. "name": "common",
  35. "repository": "file://../../../common/2304.0.1",
  36. "version": "2304.0.1"
  37. }
  38. ],
  39. "home": "https://pi-hole.net/",
  40. "icon": "https://media.sys.truenas.net/apps/pihole/icons/icon.png",
  41. "sources": [
  42. "https://pi-hole.net/",
  43. "https://github.com/truenas/charts/tree/master/charts/pihole"
  44. ],
  45. "keywords": [
  46. "networking",
  47. "dns"
  48. ]
  49. },
  50. "app_metadata": {
  51. "runAsContext": [
  52. {
  53. "userName": "root",
  54. "groupName": "root",
  55. "gid": 0,
  56. "uid": 0,
  57. "description": "Pi-hole runs as root user."
  58. }
  59. ],
  60. "capabilities": [
  61. {
  62. "name": "CHOWN",
  63. "description": "Pi-hole is able to chown files."
  64. },
  65. {
  66. "name": "FOWNER",
  67. "description": "Pi-hole is able to bypass permission checks for it's sub-processes."
  68. },
  69. {
  70. "name": "SYS_CHROOT",
  71. "description": "Pi-hole is able to use chroot."
  72. },
  73. {
  74. "name": "MKNOD",
  75. "description": "Pi-hole is able to create device nodes."
  76. },
  77. {
  78. "name": "DAC_OVERRIDE",
  79. "description": "Pi-hole is able to bypass permission checks."
  80. },
  81. {
  82. "name": "FSETID",
  83. "description": "Pi-hole is able to set file capabilities."
  84. },
  85. {
  86. "name": "KILL",
  87. "description": "Pi-hole is able to kill processes."
  88. },
  89. {
  90. "name": "SETGID",
  91. "description": "Pi-hole is able to set group ID for it's sub-processes."
  92. },
  93. {
  94. "name": "SETUID",
  95. "description": "Pi-hole is able to set user ID for it's sub-processes."
  96. },
  97. {
  98. "name": "SETPCAP",
  99. "description": "Pi-hole is able to set process capabilities."
  100. },
  101. {
  102. "name": "NET_BIND_SERVICE",
  103. "description": "Pi-hole is able to bind to privileged ports."
  104. },
  105. {
  106. "name": "SETFCAP",
  107. "description": "Pi-hole is able to set file capabilities."
  108. },
  109. {
  110. "name": "NET_RAW",
  111. "description": "Pi-hole is able to use raw sockets."
  112. },
  113. {
  114. "name": "NET_ADMIN",
  115. "description": "Pi-hole is able to perform various network-related operations."
  116. },
  117. {
  118. "name": "AUDIT_WRITE",
  119. "description": "Pi-hole is able to write to audit log."
  120. }
  121. ],
  122. "hostMounts": []
  123. },
  124. "schema": {
  125. "groups": [
  126. {
  127. "name": "Configuration",
  128. "description": "Pihole application configuration"
  129. },
  130. {
  131. "name": "Storage",
  132. "description": "Configure storage for pihole"
  133. },
  134. {
  135. "name": "Networking",
  136. "description": "Networking Configuration for pihole"
  137. },
  138. {
  139. "name": "Advanced DNS Settings",
  140. "description": "Configure DNS settings"
  141. },
  142. {
  143. "name": "Resource Limits",
  144. "description": "Set CPU/memory limits for Kubernetes Pod"
  145. }
  146. ],
  147. "portals": {
  148. "web_portal": {
  149. "protocols": [
  150. "http"
  151. ],
  152. "host": [
  153. "$node_ip"
  154. ],
  155. "ports": [
  156. "$variable-web_port"
  157. ],
  158. "path": "/admin/"
  159. }
  160. },
  161. "questions": [
  162. {
  163. "variable": "web_port",
  164. "label": "Web Port for pihole",
  165. "group": "Networking",
  166. "schema": {
  167. "type": "int",
  168. "min": 8000,
  169. "max": 65535,
  170. "default": 20720,
  171. "required": true
  172. }
  173. },
  174. {
  175. "variable": "dhcp",
  176. "label": "Enable DHCP",
  177. "group": "Networking",
  178. "schema": {
  179. "type": "boolean",
  180. "default": false,
  181. "show_subquestions_if": true,
  182. "subquestions": [
  183. {
  184. "variable": "dhcp_start",
  185. "label": "DHCP Start Address",
  186. "group": "Networking",
  187. "schema": {
  188. "type": "ipaddr",
  189. "cidr": false,
  190. "required": true
  191. }
  192. },
  193. {
  194. "variable": "dhcp_end",
  195. "label": "DHCP End Address",
  196. "group": "Networking",
  197. "schema": {
  198. "type": "ipaddr",
  199. "cidr": false,
  200. "required": true
  201. }
  202. },
  203. {
  204. "variable": "dhcp_gateway",
  205. "label": "Gateway",
  206. "group": "Networking",
  207. "schema": {
  208. "type": "ipaddr",
  209. "cidr": false,
  210. "required": true
  211. }
  212. }
  213. ]
  214. }
  215. },
  216. {
  217. "variable": "dnsConfig",
  218. "label": "DNS Configuration",
  219. "group": "Advanced DNS Settings",
  220. "schema": {
  221. "type": "dict",
  222. "attrs": [
  223. {
  224. "variable": "options",
  225. "label": "DNS Options",
  226. "schema": {
  227. "type": "list",
  228. "items": [
  229. {
  230. "variable": "optionsEntry",
  231. "label": "Option Entry Configuration",
  232. "schema": {
  233. "type": "dict",
  234. "attrs": [
  235. {
  236. "variable": "name",
  237. "label": "Option Name",
  238. "schema": {
  239. "type": "string",
  240. "required": true
  241. }
  242. },
  243. {
  244. "variable": "value",
  245. "label": "Option Value",
  246. "schema": {
  247. "type": "string",
  248. "required": true
  249. }
  250. }
  251. ]
  252. }
  253. }
  254. ]
  255. }
  256. }
  257. ]
  258. }
  259. },
  260. {
  261. "variable": "ownerUID",
  262. "label": "Storage User ID",
  263. "description": "User ID of the dnsmasq volume being used (application will chown the volume path with specified UID)",
  264. "group": "Configuration",
  265. "schema": {
  266. "type": "int",
  267. "default": 568,
  268. "min": 1,
  269. "max": 65535
  270. }
  271. },
  272. {
  273. "variable": "ownerGID",
  274. "label": "Storage Group ID",
  275. "description": "Group ID of the dnsmasq volume being used (application will chown the volume path with specified GID)",
  276. "group": "Configuration",
  277. "schema": {
  278. "type": "int",
  279. "default": 568,
  280. "min": 1,
  281. "max": 65535
  282. }
  283. },
  284. {
  285. "variable": "password",
  286. "label": "Admin password",
  287. "group": "Configuration",
  288. "schema": {
  289. "type": "string",
  290. "private": true,
  291. "required": true,
  292. "empty": false,
  293. "immutable": true
  294. }
  295. },
  296. {
  297. "variable": "timezone",
  298. "label": "Configure timezone",
  299. "group": "Configuration",
  300. "description": "Configure timezone for pihole",
  301. "schema": {
  302. "type": "string",
  303. "$ref": [
  304. "definitions/timezone"
  305. ],
  306. "enum": [
  307. {
  308. "value": "Asia/Damascus",
  309. "description": "'Asia/Damascus' timezone"
  310. },
  311. {
  312. "value": "Asia/Saigon",
  313. "description": "'Asia/Saigon' timezone"
  314. }
  315. ],
  316. "default": "America/Los_Angeles"
  317. }
  318. },
  319. {
  320. "variable": "environmentVariables",
  321. "label": "Pihole environment",
  322. "group": "Configuration",
  323. "schema": {
  324. "type": "list",
  325. "default": [],
  326. "items": [
  327. {
  328. "variable": "environmentVariable",
  329. "label": "Environment Variable",
  330. "schema": {
  331. "type": "dict",
  332. "attrs": [
  333. {
  334. "variable": "name",
  335. "label": "Name",
  336. "schema": {
  337. "type": "string"
  338. }
  339. },
  340. {
  341. "variable": "value",
  342. "label": "Value",
  343. "schema": {
  344. "type": "string"
  345. }
  346. }
  347. ]
  348. }
  349. }
  350. ]
  351. }
  352. },
  353. {
  354. "variable": "appVolumeMounts",
  355. "label": "Pihole Storage",
  356. "group": "Storage",
  357. "schema": {
  358. "type": "dict",
  359. "attrs": [
  360. {
  361. "variable": "config",
  362. "label": "Configuration Volume",
  363. "schema": {
  364. "type": "dict",
  365. "attrs": [
  366. {
  367. "variable": "datasetName",
  368. "label": "Configuration Volume Dataset Name",
  369. "schema": {
  370. "type": "string",
  371. "hidden": true,
  372. "$ref": [
  373. "normalize/ixVolume"
  374. ],
  375. "show_if": [
  376. [
  377. "hostPathEnabled",
  378. "=",
  379. false
  380. ]
  381. ],
  382. "default": "ix-pihole_config",
  383. "editable": false
  384. }
  385. },
  386. {
  387. "variable": "mountPath",
  388. "label": "Configuration Mount Path",
  389. "description": "Path where the volume will be mounted inside the pod",
  390. "schema": {
  391. "type": "path",
  392. "hidden": true,
  393. "editable": true,
  394. "default": "/etc/pihole"
  395. }
  396. },
  397. {
  398. "variable": "hostPathEnabled",
  399. "label": "Enable Custom Host Path for Pihole Configuration Volume",
  400. "schema": {
  401. "type": "boolean",
  402. "default": false,
  403. "show_subquestions_if": true,
  404. "subquestions": [
  405. {
  406. "variable": "hostPath",
  407. "label": "Host Path for Pihole Configuration Volume",
  408. "schema": {
  409. "type": "hostpath",
  410. "required": true
  411. }
  412. }
  413. ]
  414. }
  415. }
  416. ]
  417. }
  418. },
  419. {
  420. "variable": "dnsmasq",
  421. "label": "DNSMASQ Volume for pihole",
  422. "schema": {
  423. "type": "dict",
  424. "attrs": [
  425. {
  426. "variable": "datasetName",
  427. "label": "DNSMASQ Volume Dataset Name",
  428. "schema": {
  429. "type": "string",
  430. "hidden": true,
  431. "$ref": [
  432. "normalize/ixVolume"
  433. ],
  434. "show_if": [
  435. [
  436. "hostPathEnabled",
  437. "=",
  438. false
  439. ]
  440. ],
  441. "default": "ix-pihole_dnsmasq",
  442. "editable": false
  443. }
  444. },
  445. {
  446. "variable": "mountPath",
  447. "label": "DNSMASQ Mount Path",
  448. "description": "Path where the volume will be mounted inside the pod",
  449. "schema": {
  450. "type": "path",
  451. "hidden": true,
  452. "editable": true,
  453. "default": "/etc/dnsmasq.d"
  454. }
  455. },
  456. {
  457. "variable": "hostPathEnabled",
  458. "label": "Enable Custom Host Path for Pihole DNSMASQ Volume",
  459. "schema": {
  460. "type": "boolean",
  461. "default": false,
  462. "show_subquestions_if": true,
  463. "subquestions": [
  464. {
  465. "variable": "hostPath",
  466. "label": "Host Path for Pihole DNSMASQ Volume",
  467. "schema": {
  468. "type": "hostpath",
  469. "required": true
  470. }
  471. }
  472. ]
  473. }
  474. }
  475. ]
  476. }
  477. }
  478. ]
  479. }
  480. },
  481. {
  482. "variable": "extraAppVolumeMounts",
  483. "label": "Extra Host Path Volumes",
  484. "group": "Storage",
  485. "schema": {
  486. "type": "list",
  487. "items": [
  488. {
  489. "variable": "extraAppVolume",
  490. "label": "Host Path Volume",
  491. "description": "Add an extra host path volume for Pihole application",
  492. "schema": {
  493. "type": "dict",
  494. "attrs": [
  495. {
  496. "variable": "mountPath",
  497. "label": "Mount Path in Pod",
  498. "description": "Path where the volume will be mounted inside the pod",
  499. "schema": {
  500. "type": "path",
  501. "required": true
  502. }
  503. },
  504. {
  505. "variable": "hostPath",
  506. "label": "Host Path",
  507. "description": "Host path",
  508. "schema": {
  509. "type": "hostpath",
  510. "required": true
  511. }
  512. }
  513. ]
  514. }
  515. }
  516. ]
  517. }
  518. },
  519. {
  520. "variable": "enableResourceLimits",
  521. "label": "Enable Pod resource limits",
  522. "group": "Resource Limits",
  523. "schema": {
  524. "type": "boolean",
  525. "default": false
  526. }
  527. },
  528. {
  529. "variable": "cpuLimit",
  530. "label": "CPU Limit",
  531. "description": "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100.",
  532. "group": "Resource Limits",
  533. "schema": {
  534. "type": "string",
  535. "show_if": [
  536. [
  537. "enableResourceLimits",
  538. "=",
  539. true
  540. ]
  541. ],
  542. "valid_chars": "^\\d+(?:\\.\\d+(?!.*m$)|m?$)",
  543. "default": "4000m"
  544. }
  545. },
  546. {
  547. "variable": "memLimit",
  548. "label": "Memory Limit",
  549. "group": "Resource Limits",
  550. "description": "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi",
  551. "schema": {
  552. "type": "string",
  553. "show_if": [
  554. [
  555. "enableResourceLimits",
  556. "=",
  557. true
  558. ]
  559. ],
  560. "valid_chars": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$",
  561. "default": "8Gi"
  562. }
  563. }
  564. ]
  565. },
  566. "app_readme": "<h1>Pihole</h1>\n<p>DNS and Ad-filtering for your network.</p>",
  567. "detailed_readme": "<h1>Pihole</h1>\n<p>DNS and Ad-filtering for your network.</p>",
  568. "changelog": null
  569. }
  570. }