app_versions.json 68 KB

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