app_versions.json 72 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183
  1. {
  2. "1.2.9": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/adguard-home/1.2.9",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "v0.107.65_1.2.9",
  10. "version": "1.2.9",
  11. "app_metadata": {
  12. "annotations": {
  13. "min_scale_version": "24.10.2.2"
  14. },
  15. "app_version": "v0.107.65",
  16. "capabilities": [
  17. {
  18. "description": "Adguard is able to change file ownership arbitrarily",
  19. "name": "CHOWN"
  20. },
  21. {
  22. "description": "Adguard is able to bypass file permission checks",
  23. "name": "DAC_OVERRIDE"
  24. },
  25. {
  26. "description": "Adguard is able to bypass permission checks for file operations",
  27. "name": "FOWNER"
  28. },
  29. {
  30. "description": "Adguard is able to bind to privileged ports (< 1024)",
  31. "name": "NET_BIND_SERVICE"
  32. },
  33. {
  34. "description": "Adguard is able to use raw and packet sockets",
  35. "name": "NET_RAW"
  36. }
  37. ],
  38. "categories": [
  39. "networking"
  40. ],
  41. "changelog_url": "https://github.com/AdguardTeam/AdGuardHome/releases",
  42. "date_added": "2024-06-20",
  43. "description": "Free and open source, powerful network-wide ads & trackers blocking DNS server.",
  44. "home": "https://github.com/AdguardTeam/AdGuardHome",
  45. "host_mounts": [],
  46. "icon": "https://media.sys.truenas.net/apps/adguard-home/icons/icon.svg",
  47. "keywords": [
  48. "dns",
  49. "adblock"
  50. ],
  51. "lib_version": "2.1.49",
  52. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  53. "maintainers": [
  54. {
  55. "email": "dev@ixsystems.com",
  56. "name": "truenas",
  57. "url": "https://www.truenas.com/"
  58. }
  59. ],
  60. "name": "adguard-home",
  61. "run_as_context": [
  62. {
  63. "description": "AdGuard Home runs as root user.",
  64. "gid": 0,
  65. "group_name": "root",
  66. "uid": 0,
  67. "user_name": "root"
  68. }
  69. ],
  70. "screenshots": [
  71. "https://media.sys.truenas.net/apps/adguard-home/screenshots/screenshot1.png",
  72. "https://media.sys.truenas.net/apps/adguard-home/screenshots/screenshot2.png"
  73. ],
  74. "sources": [
  75. "https://github.com/AdguardTeam/AdGuardHome",
  76. "https://hub.docker.com/r/adguard/adguardhome"
  77. ],
  78. "title": "AdGuard Home",
  79. "train": "community",
  80. "version": "1.2.9"
  81. },
  82. "schema": {
  83. "groups": [
  84. {
  85. "name": "AdGuard Home Configuration",
  86. "description": "Configure AdGuard Home"
  87. },
  88. {
  89. "name": "Network Configuration",
  90. "description": "Configure Network for AdGuard Home"
  91. },
  92. {
  93. "name": "Storage Configuration",
  94. "description": "Configure Storage for AdGuard Home"
  95. },
  96. {
  97. "name": "Labels Configuration",
  98. "description": "Configure Labels for AdGuard Home"
  99. },
  100. {
  101. "name": "Resources Configuration",
  102. "description": "Configure Resources for AdGuard Home"
  103. }
  104. ],
  105. "questions": [
  106. {
  107. "variable": "adguard",
  108. "label": "",
  109. "group": "AdGuard Home Configuration",
  110. "schema": {
  111. "type": "dict",
  112. "attrs": [
  113. {
  114. "variable": "use_https_probe",
  115. "label": "Use HTTPS Probe",
  116. "description": "Use HTTPS probe for AdGuard Home.</br>\nOnly enable this after you have configured HTTPS\nin the AdGuard Home web UI.\n",
  117. "schema": {
  118. "type": "boolean",
  119. "default": false
  120. }
  121. },
  122. {
  123. "variable": "https_port_to_probe",
  124. "label": "HTTPS Port to Probe",
  125. "description": "The port to probe for HTTPS.</br>\nOnly enable this after you have configured HTTPS\nin the AdGuard Home web UI.</br>\nNote that usually this port is different from the WebUI port.\n",
  126. "schema": {
  127. "type": "int",
  128. "default": 30004,
  129. "required": true,
  130. "show_if": [
  131. [
  132. "use_https_probe",
  133. "=",
  134. true
  135. ]
  136. ]
  137. }
  138. },
  139. {
  140. "variable": "additional_envs",
  141. "label": "Additional Environment Variables",
  142. "schema": {
  143. "type": "list",
  144. "default": [],
  145. "items": [
  146. {
  147. "variable": "env",
  148. "label": "Environment Variable",
  149. "schema": {
  150. "type": "dict",
  151. "attrs": [
  152. {
  153. "variable": "name",
  154. "label": "Name",
  155. "schema": {
  156. "type": "string",
  157. "required": true
  158. }
  159. },
  160. {
  161. "variable": "value",
  162. "label": "Value",
  163. "schema": {
  164. "type": "string"
  165. }
  166. }
  167. ]
  168. }
  169. }
  170. ]
  171. }
  172. }
  173. ]
  174. }
  175. },
  176. {
  177. "variable": "network",
  178. "label": "",
  179. "group": "Network Configuration",
  180. "schema": {
  181. "type": "dict",
  182. "attrs": [
  183. {
  184. "variable": "web_port",
  185. "label": "WebUI Port",
  186. "schema": {
  187. "type": "dict",
  188. "attrs": [
  189. {
  190. "variable": "bind_mode",
  191. "label": "Port Bind Mode",
  192. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  193. "schema": {
  194. "type": "string",
  195. "default": "published",
  196. "enum": [
  197. {
  198. "value": "published",
  199. "description": "Publish port on the host for external access"
  200. },
  201. {
  202. "value": "exposed",
  203. "description": "Expose port for inter-container communication"
  204. },
  205. {
  206. "value": "",
  207. "description": "None"
  208. }
  209. ]
  210. }
  211. },
  212. {
  213. "variable": "port_number",
  214. "label": "Port Number",
  215. "schema": {
  216. "type": "int",
  217. "default": 30004,
  218. "min": 1,
  219. "max": 65535,
  220. "required": true
  221. }
  222. },
  223. {
  224. "variable": "host_ips",
  225. "label": "Host IPs",
  226. "description": "IPs on the host to bind this port",
  227. "schema": {
  228. "type": "list",
  229. "show_if": [
  230. [
  231. "bind_mode",
  232. "=",
  233. "published"
  234. ]
  235. ],
  236. "default": [],
  237. "items": [
  238. {
  239. "variable": "host_ip",
  240. "label": "Host IP",
  241. "schema": {
  242. "type": "string",
  243. "required": true,
  244. "$ref": [
  245. "definitions/node_bind_ip"
  246. ]
  247. }
  248. }
  249. ]
  250. }
  251. }
  252. ]
  253. }
  254. },
  255. {
  256. "variable": "dns_port",
  257. "label": "DNS Port",
  258. "schema": {
  259. "type": "dict",
  260. "attrs": [
  261. {
  262. "variable": "bind_mode",
  263. "label": "Port Bind Mode",
  264. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  265. "schema": {
  266. "type": "string",
  267. "default": "published",
  268. "enum": [
  269. {
  270. "value": "published",
  271. "description": "Publish port on the host for external access"
  272. },
  273. {
  274. "value": "exposed",
  275. "description": "Expose port for inter-container communication"
  276. },
  277. {
  278. "value": "",
  279. "description": "None"
  280. }
  281. ]
  282. }
  283. },
  284. {
  285. "variable": "port_number",
  286. "label": "Port Number",
  287. "schema": {
  288. "type": "int",
  289. "show_if": [
  290. [
  291. "bind_mode",
  292. "=",
  293. "published"
  294. ]
  295. ],
  296. "default": 53,
  297. "min": 1,
  298. "max": 65535,
  299. "required": true
  300. }
  301. },
  302. {
  303. "variable": "host_ips",
  304. "label": "Host IPs",
  305. "description": "IPs on the host to bind this port",
  306. "schema": {
  307. "type": "list",
  308. "show_if": [
  309. [
  310. "bind_mode",
  311. "=",
  312. "published"
  313. ]
  314. ],
  315. "default": [],
  316. "items": [
  317. {
  318. "variable": "host_ip",
  319. "label": "Host IP",
  320. "schema": {
  321. "type": "string",
  322. "required": true,
  323. "$ref": [
  324. "definitions/node_bind_ip"
  325. ]
  326. }
  327. }
  328. ]
  329. }
  330. }
  331. ]
  332. }
  333. },
  334. {
  335. "variable": "host_network",
  336. "label": "Host Network",
  337. "description": "Bind to the host network. It's recommended to keep this disabled.\n",
  338. "schema": {
  339. "type": "boolean",
  340. "show_if": [
  341. [
  342. "dhcp_enabled",
  343. "=",
  344. false
  345. ]
  346. ],
  347. "default": false
  348. }
  349. },
  350. {
  351. "variable": "dhcp_enabled",
  352. "label": "DHCP Enabled",
  353. "description": "Enable DHCP for the network.</br>\nThis will automatically enable host network.\n",
  354. "schema": {
  355. "type": "boolean",
  356. "default": false
  357. }
  358. },
  359. {
  360. "variable": "additional_ports",
  361. "label": "Additional Ports",
  362. "schema": {
  363. "type": "list",
  364. "show_if": [
  365. [
  366. "host_network",
  367. "=",
  368. false
  369. ]
  370. ],
  371. "items": [
  372. {
  373. "variable": "port",
  374. "label": "Port",
  375. "schema": {
  376. "type": "dict",
  377. "attrs": [
  378. {
  379. "variable": "bind_mode",
  380. "label": "Port Bind Mode",
  381. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n",
  382. "schema": {
  383. "type": "string",
  384. "default": "published",
  385. "enum": [
  386. {
  387. "value": "published",
  388. "description": "Publish port on the host for external access"
  389. },
  390. {
  391. "value": "exposed",
  392. "description": "Expose port for inter-container communication"
  393. }
  394. ]
  395. }
  396. },
  397. {
  398. "variable": "port_number",
  399. "label": "Port Number",
  400. "schema": {
  401. "type": "int",
  402. "min": 1,
  403. "max": 65535,
  404. "required": true
  405. }
  406. },
  407. {
  408. "variable": "container_port",
  409. "label": "Container Port",
  410. "schema": {
  411. "type": "int",
  412. "min": 1,
  413. "max": 65535,
  414. "required": true
  415. }
  416. },
  417. {
  418. "variable": "protocol",
  419. "label": "Protocol",
  420. "schema": {
  421. "type": "string",
  422. "required": true,
  423. "default": "tcp",
  424. "enum": [
  425. {
  426. "value": "tcp",
  427. "description": "TCP"
  428. },
  429. {
  430. "value": "udp",
  431. "description": "UDP"
  432. }
  433. ]
  434. }
  435. },
  436. {
  437. "variable": "host_ips",
  438. "label": "Host IPs",
  439. "description": "IPs on the host to bind this port",
  440. "schema": {
  441. "type": "list",
  442. "show_if": [
  443. [
  444. "bind_mode",
  445. "=",
  446. "published"
  447. ]
  448. ],
  449. "default": [],
  450. "items": [
  451. {
  452. "variable": "host_ip",
  453. "label": "Host IP",
  454. "schema": {
  455. "type": "string",
  456. "required": true,
  457. "$ref": [
  458. "definitions/node_bind_ip"
  459. ]
  460. }
  461. }
  462. ]
  463. }
  464. }
  465. ]
  466. }
  467. }
  468. ]
  469. }
  470. }
  471. ]
  472. }
  473. },
  474. {
  475. "variable": "storage",
  476. "label": "",
  477. "group": "Storage Configuration",
  478. "schema": {
  479. "type": "dict",
  480. "attrs": [
  481. {
  482. "variable": "config",
  483. "label": "AdGuard Home Config Storage",
  484. "description": "The path to store AdGuard Home Config.",
  485. "schema": {
  486. "type": "dict",
  487. "attrs": [
  488. {
  489. "variable": "type",
  490. "label": "Type",
  491. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  492. "schema": {
  493. "type": "string",
  494. "required": true,
  495. "default": "ix_volume",
  496. "enum": [
  497. {
  498. "value": "host_path",
  499. "description": "Host Path (Path that already exists on the system)"
  500. },
  501. {
  502. "value": "ix_volume",
  503. "description": "ixVolume (Dataset created automatically by the system)"
  504. }
  505. ]
  506. }
  507. },
  508. {
  509. "variable": "ix_volume_config",
  510. "label": "ixVolume Configuration",
  511. "description": "The configuration for the ixVolume dataset.",
  512. "schema": {
  513. "type": "dict",
  514. "show_if": [
  515. [
  516. "type",
  517. "=",
  518. "ix_volume"
  519. ]
  520. ],
  521. "$ref": [
  522. "normalize/ix_volume"
  523. ],
  524. "attrs": [
  525. {
  526. "variable": "acl_enable",
  527. "label": "Enable ACL",
  528. "description": "Enable ACL for the storage.",
  529. "schema": {
  530. "type": "boolean",
  531. "default": false
  532. }
  533. },
  534. {
  535. "variable": "dataset_name",
  536. "label": "Dataset Name",
  537. "description": "The name of the dataset to use for storage.",
  538. "schema": {
  539. "type": "string",
  540. "required": true,
  541. "hidden": true,
  542. "default": "config"
  543. }
  544. },
  545. {
  546. "variable": "acl_entries",
  547. "label": "ACL Configuration",
  548. "schema": {
  549. "type": "dict",
  550. "show_if": [
  551. [
  552. "acl_enable",
  553. "=",
  554. true
  555. ]
  556. ],
  557. "attrs": []
  558. }
  559. }
  560. ]
  561. }
  562. },
  563. {
  564. "variable": "host_path_config",
  565. "label": "Host Path Configuration",
  566. "schema": {
  567. "type": "dict",
  568. "show_if": [
  569. [
  570. "type",
  571. "=",
  572. "host_path"
  573. ]
  574. ],
  575. "attrs": [
  576. {
  577. "variable": "acl_enable",
  578. "label": "Enable ACL",
  579. "description": "Enable ACL for the storage.",
  580. "schema": {
  581. "type": "boolean",
  582. "default": false
  583. }
  584. },
  585. {
  586. "variable": "acl",
  587. "label": "ACL Configuration",
  588. "schema": {
  589. "type": "dict",
  590. "show_if": [
  591. [
  592. "acl_enable",
  593. "=",
  594. true
  595. ]
  596. ],
  597. "attrs": [],
  598. "$ref": [
  599. "normalize/acl"
  600. ]
  601. }
  602. },
  603. {
  604. "variable": "path",
  605. "label": "Host Path",
  606. "description": "The host path to use for storage.",
  607. "schema": {
  608. "type": "hostpath",
  609. "show_if": [
  610. [
  611. "acl_enable",
  612. "=",
  613. false
  614. ]
  615. ],
  616. "required": true
  617. }
  618. }
  619. ]
  620. }
  621. }
  622. ]
  623. }
  624. },
  625. {
  626. "variable": "work",
  627. "label": "AdGuard Home WorkDir Storage",
  628. "description": "The path to store AdGuard Home WorkDir.",
  629. "schema": {
  630. "type": "dict",
  631. "attrs": [
  632. {
  633. "variable": "type",
  634. "label": "Type",
  635. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  636. "schema": {
  637. "type": "string",
  638. "required": true,
  639. "default": "ix_volume",
  640. "enum": [
  641. {
  642. "value": "host_path",
  643. "description": "Host Path (Path that already exists on the system)"
  644. },
  645. {
  646. "value": "ix_volume",
  647. "description": "ixVolume (Dataset created automatically by the system)"
  648. }
  649. ]
  650. }
  651. },
  652. {
  653. "variable": "ix_volume_config",
  654. "label": "ixVolume Configuration",
  655. "description": "The configuration for the ixVolume dataset.",
  656. "schema": {
  657. "type": "dict",
  658. "show_if": [
  659. [
  660. "type",
  661. "=",
  662. "ix_volume"
  663. ]
  664. ],
  665. "$ref": [
  666. "normalize/ix_volume"
  667. ],
  668. "attrs": [
  669. {
  670. "variable": "acl_enable",
  671. "label": "Enable ACL",
  672. "description": "Enable ACL for the storage.",
  673. "schema": {
  674. "type": "boolean",
  675. "default": false
  676. }
  677. },
  678. {
  679. "variable": "dataset_name",
  680. "label": "Dataset Name",
  681. "description": "The name of the dataset to use for storage.",
  682. "schema": {
  683. "type": "string",
  684. "required": true,
  685. "hidden": true,
  686. "default": "work"
  687. }
  688. },
  689. {
  690. "variable": "acl_entries",
  691. "label": "ACL Configuration",
  692. "schema": {
  693. "type": "dict",
  694. "show_if": [
  695. [
  696. "acl_enable",
  697. "=",
  698. true
  699. ]
  700. ],
  701. "attrs": []
  702. }
  703. }
  704. ]
  705. }
  706. },
  707. {
  708. "variable": "host_path_config",
  709. "label": "Host Path Configuration",
  710. "schema": {
  711. "type": "dict",
  712. "show_if": [
  713. [
  714. "type",
  715. "=",
  716. "host_path"
  717. ]
  718. ],
  719. "attrs": [
  720. {
  721. "variable": "acl_enable",
  722. "label": "Enable ACL",
  723. "description": "Enable ACL for the storage.",
  724. "schema": {
  725. "type": "boolean",
  726. "default": false
  727. }
  728. },
  729. {
  730. "variable": "acl",
  731. "label": "ACL Configuration",
  732. "schema": {
  733. "type": "dict",
  734. "show_if": [
  735. [
  736. "acl_enable",
  737. "=",
  738. true
  739. ]
  740. ],
  741. "attrs": [],
  742. "$ref": [
  743. "normalize/acl"
  744. ]
  745. }
  746. },
  747. {
  748. "variable": "path",
  749. "label": "Host Path",
  750. "description": "The host path to use for storage.",
  751. "schema": {
  752. "type": "hostpath",
  753. "show_if": [
  754. [
  755. "acl_enable",
  756. "=",
  757. false
  758. ]
  759. ],
  760. "required": true
  761. }
  762. }
  763. ]
  764. }
  765. }
  766. ]
  767. }
  768. },
  769. {
  770. "variable": "additional_storage",
  771. "label": "Additional Storage",
  772. "schema": {
  773. "type": "list",
  774. "default": [],
  775. "items": [
  776. {
  777. "variable": "storageEntry",
  778. "label": "Storage Entry",
  779. "schema": {
  780. "type": "dict",
  781. "attrs": [
  782. {
  783. "variable": "type",
  784. "label": "Type",
  785. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.</br>\nSMB Share: Is a SMB share that is mounted to as a volume.\n",
  786. "schema": {
  787. "type": "string",
  788. "required": true,
  789. "default": "ix_volume",
  790. "enum": [
  791. {
  792. "value": "host_path",
  793. "description": "Host Path (Path that already exists on the system)"
  794. },
  795. {
  796. "value": "ix_volume",
  797. "description": "ixVolume (Dataset created automatically by the system)"
  798. },
  799. {
  800. "value": "cifs",
  801. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  802. }
  803. ]
  804. }
  805. },
  806. {
  807. "variable": "read_only",
  808. "label": "Read Only",
  809. "description": "Mount the volume as read only.",
  810. "schema": {
  811. "type": "boolean",
  812. "default": false
  813. }
  814. },
  815. {
  816. "variable": "mount_path",
  817. "label": "Mount Path",
  818. "description": "The path inside the container to mount the storage.",
  819. "schema": {
  820. "type": "path",
  821. "required": true
  822. }
  823. },
  824. {
  825. "variable": "host_path_config",
  826. "label": "Host Path Configuration",
  827. "schema": {
  828. "type": "dict",
  829. "show_if": [
  830. [
  831. "type",
  832. "=",
  833. "host_path"
  834. ]
  835. ],
  836. "attrs": [
  837. {
  838. "variable": "acl_enable",
  839. "label": "Enable ACL",
  840. "description": "Enable ACL for the storage.",
  841. "schema": {
  842. "type": "boolean",
  843. "default": false
  844. }
  845. },
  846. {
  847. "variable": "acl",
  848. "label": "ACL Configuration",
  849. "schema": {
  850. "type": "dict",
  851. "show_if": [
  852. [
  853. "acl_enable",
  854. "=",
  855. true
  856. ]
  857. ],
  858. "attrs": [],
  859. "$ref": [
  860. "normalize/acl"
  861. ]
  862. }
  863. },
  864. {
  865. "variable": "path",
  866. "label": "Host Path",
  867. "description": "The host path to use for storage.",
  868. "schema": {
  869. "type": "hostpath",
  870. "show_if": [
  871. [
  872. "acl_enable",
  873. "=",
  874. false
  875. ]
  876. ],
  877. "required": true
  878. }
  879. }
  880. ]
  881. }
  882. },
  883. {
  884. "variable": "ix_volume_config",
  885. "label": "ixVolume Configuration",
  886. "description": "The configuration for the ixVolume dataset.",
  887. "schema": {
  888. "type": "dict",
  889. "show_if": [
  890. [
  891. "type",
  892. "=",
  893. "ix_volume"
  894. ]
  895. ],
  896. "$ref": [
  897. "normalize/ix_volume"
  898. ],
  899. "attrs": [
  900. {
  901. "variable": "acl_enable",
  902. "label": "Enable ACL",
  903. "description": "Enable ACL for the storage.",
  904. "schema": {
  905. "type": "boolean",
  906. "default": false
  907. }
  908. },
  909. {
  910. "variable": "dataset_name",
  911. "label": "Dataset Name",
  912. "description": "The name of the dataset to use for storage.",
  913. "schema": {
  914. "type": "string",
  915. "required": true,
  916. "default": "storage_entry"
  917. }
  918. },
  919. {
  920. "variable": "acl_entries",
  921. "label": "ACL Configuration",
  922. "schema": {
  923. "type": "dict",
  924. "show_if": [
  925. [
  926. "acl_enable",
  927. "=",
  928. true
  929. ]
  930. ],
  931. "attrs": []
  932. }
  933. }
  934. ]
  935. }
  936. },
  937. {
  938. "variable": "cifs_config",
  939. "label": "SMB Configuration",
  940. "description": "The configuration for the SMB dataset.",
  941. "schema": {
  942. "type": "dict",
  943. "show_if": [
  944. [
  945. "type",
  946. "=",
  947. "cifs"
  948. ]
  949. ],
  950. "attrs": [
  951. {
  952. "variable": "server",
  953. "label": "Server",
  954. "description": "The server to mount the SMB share.",
  955. "schema": {
  956. "type": "string",
  957. "required": true
  958. }
  959. },
  960. {
  961. "variable": "path",
  962. "label": "Path",
  963. "description": "The path to mount the SMB share.",
  964. "schema": {
  965. "type": "string",
  966. "required": true
  967. }
  968. },
  969. {
  970. "variable": "username",
  971. "label": "Username",
  972. "description": "The username to use for the SMB share.",
  973. "schema": {
  974. "type": "string",
  975. "required": true
  976. }
  977. },
  978. {
  979. "variable": "password",
  980. "label": "Password",
  981. "description": "The password to use for the SMB share.",
  982. "schema": {
  983. "type": "string",
  984. "required": true,
  985. "private": true
  986. }
  987. },
  988. {
  989. "variable": "domain",
  990. "label": "Domain",
  991. "description": "The domain to use for the SMB share.",
  992. "schema": {
  993. "type": "string"
  994. }
  995. }
  996. ]
  997. }
  998. }
  999. ]
  1000. }
  1001. }
  1002. ]
  1003. }
  1004. }
  1005. ]
  1006. }
  1007. },
  1008. {
  1009. "variable": "labels",
  1010. "label": "",
  1011. "group": "Labels Configuration",
  1012. "schema": {
  1013. "type": "list",
  1014. "default": [],
  1015. "items": [
  1016. {
  1017. "variable": "label",
  1018. "label": "Label",
  1019. "schema": {
  1020. "type": "dict",
  1021. "attrs": [
  1022. {
  1023. "variable": "key",
  1024. "label": "Key",
  1025. "schema": {
  1026. "type": "string",
  1027. "required": true
  1028. }
  1029. },
  1030. {
  1031. "variable": "value",
  1032. "label": "Value",
  1033. "schema": {
  1034. "type": "string",
  1035. "required": true
  1036. }
  1037. },
  1038. {
  1039. "variable": "containers",
  1040. "label": "Containers",
  1041. "description": "Containers where the label should be applied",
  1042. "schema": {
  1043. "type": "list",
  1044. "items": [
  1045. {
  1046. "variable": "container",
  1047. "label": "Container",
  1048. "schema": {
  1049. "type": "string",
  1050. "required": true,
  1051. "enum": [
  1052. {
  1053. "value": "adguard",
  1054. "description": "adguard"
  1055. }
  1056. ]
  1057. }
  1058. }
  1059. ]
  1060. }
  1061. }
  1062. ]
  1063. }
  1064. }
  1065. ]
  1066. }
  1067. },
  1068. {
  1069. "variable": "resources",
  1070. "label": "",
  1071. "group": "Resources Configuration",
  1072. "schema": {
  1073. "type": "dict",
  1074. "attrs": [
  1075. {
  1076. "variable": "limits",
  1077. "label": "Limits",
  1078. "schema": {
  1079. "type": "dict",
  1080. "attrs": [
  1081. {
  1082. "variable": "cpus",
  1083. "label": "CPUs",
  1084. "description": "CPUs limit for Adguard Home.",
  1085. "schema": {
  1086. "type": "int",
  1087. "default": 2,
  1088. "required": true
  1089. }
  1090. },
  1091. {
  1092. "variable": "memory",
  1093. "label": "Memory (in MB)",
  1094. "description": "Memory limit for Adguard Home.",
  1095. "schema": {
  1096. "type": "int",
  1097. "default": 4096,
  1098. "required": true
  1099. }
  1100. }
  1101. ]
  1102. }
  1103. }
  1104. ]
  1105. }
  1106. }
  1107. ]
  1108. },
  1109. "readme": "<h1>AdGuard Home</h1> <p><a href=\"https://github.com/AdguardTeam/AdGuardHome\">AdGuard Home</a> is a network-wide ads &amp; trackers blocking DNS server</p> <p>During the setup wizard, AdGuard Home presents an option to select on which port the web interface will be available. (Defaults to 80. Which is a privileged port and also usually the TrueNAS SCALE UI uses that port) Because of that, App will force the webUI to listen to port 30000 (or the port selected by user in the TrueNAS SCALE UI).</p> <p>If you select a different port in the wizard, the Dashboard will not work initially but after a couple of minutes container will automatically restart and the Dashboard will be available on the port you selected on the TrueNAS SCALE UI.</p>",
  1110. "changelog": null,
  1111. "chart_metadata": {
  1112. "annotations": {
  1113. "min_scale_version": "24.10.2.2"
  1114. },
  1115. "app_version": "v0.107.65",
  1116. "capabilities": [
  1117. {
  1118. "description": "Adguard is able to change file ownership arbitrarily",
  1119. "name": "CHOWN"
  1120. },
  1121. {
  1122. "description": "Adguard is able to bypass file permission checks",
  1123. "name": "DAC_OVERRIDE"
  1124. },
  1125. {
  1126. "description": "Adguard is able to bypass permission checks for file operations",
  1127. "name": "FOWNER"
  1128. },
  1129. {
  1130. "description": "Adguard is able to bind to privileged ports (< 1024)",
  1131. "name": "NET_BIND_SERVICE"
  1132. },
  1133. {
  1134. "description": "Adguard is able to use raw and packet sockets",
  1135. "name": "NET_RAW"
  1136. }
  1137. ],
  1138. "categories": [
  1139. "networking"
  1140. ],
  1141. "changelog_url": "https://github.com/AdguardTeam/AdGuardHome/releases",
  1142. "date_added": "2024-06-20",
  1143. "description": "Free and open source, powerful network-wide ads & trackers blocking DNS server.",
  1144. "home": "https://github.com/AdguardTeam/AdGuardHome",
  1145. "host_mounts": [],
  1146. "icon": "https://media.sys.truenas.net/apps/adguard-home/icons/icon.svg",
  1147. "keywords": [
  1148. "dns",
  1149. "adblock"
  1150. ],
  1151. "lib_version": "2.1.49",
  1152. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1153. "maintainers": [
  1154. {
  1155. "email": "dev@ixsystems.com",
  1156. "name": "truenas",
  1157. "url": "https://www.truenas.com/"
  1158. }
  1159. ],
  1160. "name": "adguard-home",
  1161. "run_as_context": [
  1162. {
  1163. "description": "AdGuard Home runs as root user.",
  1164. "gid": 0,
  1165. "group_name": "root",
  1166. "uid": 0,
  1167. "user_name": "root"
  1168. }
  1169. ],
  1170. "screenshots": [
  1171. "https://media.sys.truenas.net/apps/adguard-home/screenshots/screenshot1.png",
  1172. "https://media.sys.truenas.net/apps/adguard-home/screenshots/screenshot2.png"
  1173. ],
  1174. "sources": [
  1175. "https://github.com/AdguardTeam/AdGuardHome",
  1176. "https://hub.docker.com/r/adguard/adguardhome"
  1177. ],
  1178. "title": "AdGuard Home",
  1179. "train": "community",
  1180. "version": "1.2.9"
  1181. }
  1182. }
  1183. }