app_versions.json 139 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797
  1. {
  2. "1.2.15": {
  3. "healthy": true,
  4. "supported": false,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/community/linkding/1.2.15",
  7. "last_update": "2025-03-05 14:27:33",
  8. "required_features": [
  9. "normalize/ixVolume",
  10. "normalize/acl"
  11. ],
  12. "human_version": "1.27.0_1.2.15",
  13. "version": "1.2.15",
  14. "chart_metadata": {
  15. "name": "linkding",
  16. "description": "Linkding is a bookmark manager that you can host yourself.",
  17. "annotations": {
  18. "title": "Linkding"
  19. },
  20. "type": "application",
  21. "version": "1.2.15",
  22. "apiVersion": "v2",
  23. "appVersion": "1.27.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",
  36. "version": "1.2.9"
  37. }
  38. ],
  39. "home": "https://github.com/sissbruecker/linkding",
  40. "icon": "https://media.sys.truenas.net/apps/linkding/icons/icon.svg",
  41. "sources": [
  42. "https://github.com/truenas/charts/tree/master/library/ix-dev/community/linkding",
  43. "https://github.com/sissbruecker/linkding",
  44. "https://hub.docker.com/r/sissbruecker/linkding/"
  45. ],
  46. "keywords": [
  47. "bookmark"
  48. ]
  49. },
  50. "app_metadata": {
  51. "runAsContext": [
  52. {
  53. "userName": "linkding",
  54. "groupName": "linkding",
  55. "gid": 568,
  56. "uid": 568,
  57. "description": "Linkding can run as any non-root user."
  58. },
  59. {
  60. "userName": "postgres",
  61. "groupName": "postgres",
  62. "gid": 999,
  63. "uid": 999,
  64. "description": "Postgres runs as a non-root user."
  65. }
  66. ],
  67. "capabilities": [],
  68. "hostMounts": []
  69. },
  70. "schema": {
  71. "groups": [
  72. {
  73. "name": "Linkding Configuration",
  74. "description": "Configure Linkding"
  75. },
  76. {
  77. "name": "Network Configuration",
  78. "description": "Configure Network for Linkding"
  79. },
  80. {
  81. "name": "User and Group Configuration",
  82. "description": "Configure User and Group for Linkding"
  83. },
  84. {
  85. "name": "Storage Configuration",
  86. "description": "Configure Storage for Linkding"
  87. },
  88. {
  89. "name": "Resources Configuration",
  90. "description": "Configure Resources for Linkding"
  91. }
  92. ],
  93. "portals": {
  94. "web_portal": {
  95. "protocols": [
  96. "$kubernetes-resource_configmap_portal_protocol"
  97. ],
  98. "host": [
  99. "$kubernetes-resource_configmap_portal_host"
  100. ],
  101. "ports": [
  102. "$kubernetes-resource_configmap_portal_port"
  103. ],
  104. "path": "$kubernetes-resource_configmap_portal_path"
  105. }
  106. },
  107. "questions": [
  108. {
  109. "variable": "linkdingConfig",
  110. "label": "",
  111. "group": "Linkding Configuration",
  112. "schema": {
  113. "type": "dict",
  114. "attrs": [
  115. {
  116. "variable": "imageSelector",
  117. "label": "Image",
  118. "description": "The image to use for Linkding",
  119. "schema": {
  120. "type": "string",
  121. "default": "image",
  122. "required": true,
  123. "enum": [
  124. {
  125. "value": "image",
  126. "description": "Normal Linkding image"
  127. },
  128. {
  129. "value": "plusImage",
  130. "description": "Plus Linkding image"
  131. }
  132. ]
  133. }
  134. },
  135. {
  136. "variable": "username",
  137. "label": "Username",
  138. "description": "The username for Linkding. </br>\nIt creates a superuser if it doesn't exist.</br>\nLeaving this empty will disable authentication.\n",
  139. "schema": {
  140. "type": "string",
  141. "default": ""
  142. }
  143. },
  144. {
  145. "variable": "password",
  146. "label": "Password",
  147. "description": "The password for Linkding.</br>\nIt creates a superuser if it doesn't exist.</br>\nLeaving this empty will disable authentication.\n",
  148. "schema": {
  149. "type": "string",
  150. "show_if": [
  151. [
  152. "username",
  153. "!=",
  154. ""
  155. ]
  156. ],
  157. "default": "",
  158. "private": true
  159. }
  160. },
  161. {
  162. "variable": "disableBackgroundTasks",
  163. "label": "Disable Background Tasks",
  164. "description": "Disables background tasks, such as creating snapshots for bookmarks\non the the Internet Archive Wayback Machine.\n",
  165. "schema": {
  166. "type": "boolean",
  167. "default": false
  168. }
  169. },
  170. {
  171. "variable": "disableUrlValidation",
  172. "label": "Disable URL Validation",
  173. "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",
  174. "schema": {
  175. "type": "boolean",
  176. "default": false
  177. }
  178. },
  179. {
  180. "variable": "enableAuthProxy",
  181. "label": "Enable Auth Proxy",
  182. "description": "Enable authentication proxy. </br>\nThis will disable the built-in authentication and use the\nauthentication proxy instead.\n",
  183. "schema": {
  184. "type": "boolean",
  185. "default": false
  186. }
  187. },
  188. {
  189. "variable": "authProxyUsernameHeader",
  190. "label": "Auth Proxy Username Header",
  191. "description": "The HTTP header that contains the username for the authentication\nproxy.\n",
  192. "schema": {
  193. "type": "string",
  194. "show_if": [
  195. [
  196. "enableAuthProxy",
  197. "=",
  198. true
  199. ]
  200. ],
  201. "default": "",
  202. "required": true
  203. }
  204. },
  205. {
  206. "variable": "authProxyLogoutUrl",
  207. "label": "Auth Proxy Logout URL",
  208. "description": "The URL to redirect to when logging out of the authentication proxy.\n",
  209. "schema": {
  210. "type": "string",
  211. "show_if": [
  212. [
  213. "enableAuthProxy",
  214. "=",
  215. true
  216. ]
  217. ],
  218. "default": ""
  219. }
  220. },
  221. {
  222. "variable": "csrfTrustedOrigins",
  223. "label": "CSRF Trusted Origins",
  224. "description": "A list of origins that are allowed to bypass the CSRF protection.\n",
  225. "schema": {
  226. "type": "list",
  227. "default": [],
  228. "items": [
  229. {
  230. "variable": "origin",
  231. "label": "Origin",
  232. "schema": {
  233. "type": "string",
  234. "required": true
  235. }
  236. }
  237. ]
  238. }
  239. },
  240. {
  241. "variable": "additionalEnvs",
  242. "label": "Additional Environment Variables",
  243. "description": "Configure additional environment variables for Linkding.",
  244. "schema": {
  245. "type": "list",
  246. "default": [],
  247. "items": [
  248. {
  249. "variable": "env",
  250. "label": "Environment Variable",
  251. "schema": {
  252. "type": "dict",
  253. "attrs": [
  254. {
  255. "variable": "name",
  256. "label": "Name",
  257. "schema": {
  258. "type": "string",
  259. "required": true
  260. }
  261. },
  262. {
  263. "variable": "value",
  264. "label": "Value",
  265. "schema": {
  266. "type": "string",
  267. "required": true
  268. }
  269. }
  270. ]
  271. }
  272. }
  273. ]
  274. }
  275. }
  276. ]
  277. }
  278. },
  279. {
  280. "variable": "linkdingNetwork",
  281. "label": "",
  282. "group": "Network Configuration",
  283. "schema": {
  284. "type": "dict",
  285. "attrs": [
  286. {
  287. "variable": "webPort",
  288. "label": "Web Port",
  289. "description": "The port for the Linkding Web UI.",
  290. "schema": {
  291. "type": "int",
  292. "default": 30083,
  293. "min": 9000,
  294. "max": 65535,
  295. "required": true
  296. }
  297. },
  298. {
  299. "variable": "hostNetwork",
  300. "label": "Host Network",
  301. "description": "Bind to the host network. It's recommended to keep this disabled.</br>\n",
  302. "schema": {
  303. "type": "boolean",
  304. "default": false
  305. }
  306. }
  307. ]
  308. }
  309. },
  310. {
  311. "variable": "linkdingRunAs",
  312. "label": "",
  313. "group": "User and Group Configuration",
  314. "schema": {
  315. "type": "dict",
  316. "attrs": [
  317. {
  318. "variable": "user",
  319. "label": "User ID",
  320. "description": "The user id that Linkding will run as.",
  321. "schema": {
  322. "type": "int",
  323. "min": 2,
  324. "default": 568,
  325. "required": true
  326. }
  327. },
  328. {
  329. "variable": "group",
  330. "label": "Group ID",
  331. "description": "The group id that Linkding will run as.",
  332. "schema": {
  333. "type": "int",
  334. "min": 2,
  335. "default": 568,
  336. "required": true
  337. }
  338. }
  339. ]
  340. }
  341. },
  342. {
  343. "variable": "linkdingStorage",
  344. "label": "",
  345. "group": "Storage Configuration",
  346. "schema": {
  347. "type": "dict",
  348. "attrs": [
  349. {
  350. "variable": "data",
  351. "label": "Linkding Data Storage",
  352. "description": "The path to store Linkding Data.",
  353. "schema": {
  354. "type": "dict",
  355. "attrs": [
  356. {
  357. "variable": "type",
  358. "label": "Type",
  359. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  360. "schema": {
  361. "type": "string",
  362. "required": true,
  363. "immutable": true,
  364. "default": "ixVolume",
  365. "enum": [
  366. {
  367. "value": "hostPath",
  368. "description": "Host Path (Path that already exists on the system)"
  369. },
  370. {
  371. "value": "ixVolume",
  372. "description": "ixVolume (Dataset created automatically by the system)"
  373. }
  374. ]
  375. }
  376. },
  377. {
  378. "variable": "ixVolumeConfig",
  379. "label": "ixVolume Configuration",
  380. "description": "The configuration for the ixVolume dataset.",
  381. "schema": {
  382. "type": "dict",
  383. "show_if": [
  384. [
  385. "type",
  386. "=",
  387. "ixVolume"
  388. ]
  389. ],
  390. "$ref": [
  391. "normalize/ixVolume"
  392. ],
  393. "attrs": [
  394. {
  395. "variable": "aclEnable",
  396. "label": "Enable ACL",
  397. "description": "Enable ACL for the dataset.",
  398. "schema": {
  399. "type": "boolean",
  400. "default": false
  401. }
  402. },
  403. {
  404. "variable": "datasetName",
  405. "label": "Dataset Name",
  406. "description": "The name of the dataset to use for storage.",
  407. "schema": {
  408. "type": "string",
  409. "required": true,
  410. "immutable": true,
  411. "hidden": true,
  412. "default": "data"
  413. }
  414. },
  415. {
  416. "variable": "aclEntries",
  417. "label": "ACL Configuration",
  418. "schema": {
  419. "type": "dict",
  420. "show_if": [
  421. [
  422. "aclEnable",
  423. "=",
  424. true
  425. ]
  426. ],
  427. "attrs": [
  428. {
  429. "variable": "path",
  430. "label": "Path",
  431. "description": "Path to perform ACL",
  432. "schema": {
  433. "type": "string",
  434. "hidden": true
  435. }
  436. },
  437. {
  438. "variable": "entries",
  439. "label": "ACL Entries",
  440. "description": "ACL Entries",
  441. "schema": {
  442. "type": "list",
  443. "items": [
  444. {
  445. "variable": "aclEntry",
  446. "label": "ACL Entry",
  447. "schema": {
  448. "type": "dict",
  449. "attrs": [
  450. {
  451. "variable": "id_type",
  452. "label": "ID Type",
  453. "schema": {
  454. "type": "string",
  455. "enum": [
  456. {
  457. "value": "USER",
  458. "description": "Entry is for a USER"
  459. },
  460. {
  461. "value": "GROUP",
  462. "description": "Entry is for a GROUP"
  463. }
  464. ],
  465. "default": "USER"
  466. }
  467. },
  468. {
  469. "variable": "id",
  470. "label": "ID",
  471. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  472. "schema": {
  473. "type": "int",
  474. "required": true,
  475. "min": 0
  476. }
  477. },
  478. {
  479. "variable": "access",
  480. "label": "Access",
  481. "schema": {
  482. "type": "string",
  483. "enum": [
  484. {
  485. "value": "READ",
  486. "description": "Read Access"
  487. },
  488. {
  489. "value": "MODIFY",
  490. "description": "Modify Access"
  491. },
  492. {
  493. "value": "FULL_CONTROL",
  494. "description": "FULL_CONTROL Access"
  495. }
  496. ]
  497. }
  498. }
  499. ]
  500. }
  501. }
  502. ]
  503. }
  504. }
  505. ]
  506. }
  507. }
  508. ]
  509. }
  510. },
  511. {
  512. "variable": "hostPathConfig",
  513. "label": "Host Path Configuration",
  514. "schema": {
  515. "type": "dict",
  516. "show_if": [
  517. [
  518. "type",
  519. "=",
  520. "hostPath"
  521. ]
  522. ],
  523. "attrs": [
  524. {
  525. "variable": "aclEnable",
  526. "label": "Enable ACL",
  527. "description": "Enable ACL for the dataset.",
  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. "aclEnable",
  541. "=",
  542. true
  543. ]
  544. ],
  545. "attrs": [
  546. {
  547. "variable": "path",
  548. "label": "Host Path",
  549. "description": "Host Path to perform ACL",
  550. "schema": {
  551. "type": "hostpath",
  552. "required": true,
  553. "empty": false
  554. }
  555. },
  556. {
  557. "variable": "entries",
  558. "label": "ACL Entries",
  559. "description": "ACL Entries",
  560. "schema": {
  561. "type": "list",
  562. "items": [
  563. {
  564. "variable": "aclEntry",
  565. "label": "ACL Entry",
  566. "schema": {
  567. "type": "dict",
  568. "attrs": [
  569. {
  570. "variable": "id_type",
  571. "label": "ID Type",
  572. "schema": {
  573. "type": "string",
  574. "enum": [
  575. {
  576. "value": "USER",
  577. "description": "Entry is for a USER"
  578. },
  579. {
  580. "value": "GROUP",
  581. "description": "Entry is for a GROUP"
  582. }
  583. ],
  584. "default": "USER"
  585. }
  586. },
  587. {
  588. "variable": "id",
  589. "label": "ID",
  590. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  591. "schema": {
  592. "type": "int",
  593. "required": true,
  594. "min": 0
  595. }
  596. },
  597. {
  598. "variable": "access",
  599. "label": "Access",
  600. "schema": {
  601. "type": "string",
  602. "enum": [
  603. {
  604. "value": "READ",
  605. "description": "Read Access"
  606. },
  607. {
  608. "value": "MODIFY",
  609. "description": "Modify Access"
  610. },
  611. {
  612. "value": "FULL_CONTROL",
  613. "description": "FULL_CONTROL Access"
  614. }
  615. ]
  616. }
  617. }
  618. ]
  619. }
  620. }
  621. ]
  622. }
  623. },
  624. {
  625. "variable": "options",
  626. "label": "ACL Options",
  627. "schema": {
  628. "type": "dict",
  629. "attrs": [
  630. {
  631. "variable": "force",
  632. "label": "Force Flag",
  633. "description": "Enabling `Force` applies ACL even if the path has existing data",
  634. "schema": {
  635. "type": "boolean",
  636. "default": false
  637. }
  638. }
  639. ]
  640. }
  641. }
  642. ],
  643. "$ref": [
  644. "normalize/acl"
  645. ]
  646. }
  647. },
  648. {
  649. "variable": "hostPath",
  650. "label": "Host Path",
  651. "description": "The host path to use for storage.",
  652. "schema": {
  653. "type": "hostpath",
  654. "show_if": [
  655. [
  656. "aclEnable",
  657. "=",
  658. false
  659. ]
  660. ],
  661. "required": true
  662. }
  663. }
  664. ]
  665. }
  666. }
  667. ]
  668. }
  669. },
  670. {
  671. "variable": "pgData",
  672. "label": "Postgres Data Storage",
  673. "description": "The path to store Postgres Data.",
  674. "schema": {
  675. "type": "dict",
  676. "attrs": [
  677. {
  678. "variable": "type",
  679. "label": "Type",
  680. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  681. "schema": {
  682. "type": "string",
  683. "required": true,
  684. "immutable": true,
  685. "default": "ixVolume",
  686. "enum": [
  687. {
  688. "value": "hostPath",
  689. "description": "Host Path (Path that already exists on the system)"
  690. },
  691. {
  692. "value": "ixVolume",
  693. "description": "ixVolume (Dataset created automatically by the system)"
  694. }
  695. ]
  696. }
  697. },
  698. {
  699. "variable": "ixVolumeConfig",
  700. "label": "ixVolume Configuration",
  701. "description": "The configuration for the ixVolume dataset.",
  702. "schema": {
  703. "type": "dict",
  704. "hidden": true,
  705. "show_if": [
  706. [
  707. "type",
  708. "=",
  709. "ixVolume"
  710. ]
  711. ],
  712. "$ref": [
  713. "normalize/ixVolume"
  714. ],
  715. "attrs": [
  716. {
  717. "variable": "aclEnable",
  718. "label": "Enable ACL",
  719. "description": "Enable ACL for the dataset.",
  720. "schema": {
  721. "type": "boolean",
  722. "hidden": true,
  723. "default": false
  724. }
  725. },
  726. {
  727. "variable": "datasetName",
  728. "label": "Dataset Name",
  729. "description": "The name of the dataset to use for storage.",
  730. "schema": {
  731. "type": "string",
  732. "required": true,
  733. "immutable": true,
  734. "hidden": true,
  735. "default": "pgData"
  736. }
  737. },
  738. {
  739. "variable": "aclEntries",
  740. "label": "ACL Configuration",
  741. "schema": {
  742. "type": "dict",
  743. "show_if": [
  744. [
  745. "aclEnable",
  746. "=",
  747. true
  748. ]
  749. ],
  750. "attrs": [
  751. {
  752. "variable": "path",
  753. "label": "Path",
  754. "description": "Path to perform ACL",
  755. "schema": {
  756. "type": "string",
  757. "hidden": true
  758. }
  759. },
  760. {
  761. "variable": "entries",
  762. "label": "ACL Entries",
  763. "description": "ACL Entries",
  764. "schema": {
  765. "type": "list",
  766. "items": [
  767. {
  768. "variable": "aclEntry",
  769. "label": "ACL Entry",
  770. "schema": {
  771. "type": "dict",
  772. "attrs": [
  773. {
  774. "variable": "id_type",
  775. "label": "ID Type",
  776. "schema": {
  777. "type": "string",
  778. "enum": [
  779. {
  780. "value": "USER",
  781. "description": "Entry is for a USER"
  782. },
  783. {
  784. "value": "GROUP",
  785. "description": "Entry is for a GROUP"
  786. }
  787. ],
  788. "default": "USER"
  789. }
  790. },
  791. {
  792. "variable": "id",
  793. "label": "ID",
  794. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  795. "schema": {
  796. "type": "int",
  797. "required": true,
  798. "min": 0
  799. }
  800. },
  801. {
  802. "variable": "access",
  803. "label": "Access",
  804. "schema": {
  805. "type": "string",
  806. "enum": [
  807. {
  808. "value": "READ",
  809. "description": "Read Access"
  810. },
  811. {
  812. "value": "MODIFY",
  813. "description": "Modify Access"
  814. },
  815. {
  816. "value": "FULL_CONTROL",
  817. "description": "FULL_CONTROL Access"
  818. }
  819. ]
  820. }
  821. }
  822. ]
  823. }
  824. }
  825. ]
  826. }
  827. }
  828. ]
  829. }
  830. }
  831. ]
  832. }
  833. },
  834. {
  835. "variable": "hostPathConfig",
  836. "label": "Host Path Configuration",
  837. "schema": {
  838. "type": "dict",
  839. "show_if": [
  840. [
  841. "type",
  842. "=",
  843. "hostPath"
  844. ]
  845. ],
  846. "attrs": [
  847. {
  848. "variable": "aclEnable",
  849. "label": "Enable ACL",
  850. "description": "Enable ACL for the dataset.",
  851. "schema": {
  852. "type": "boolean",
  853. "hidden": true,
  854. "default": false
  855. }
  856. },
  857. {
  858. "variable": "acl",
  859. "label": "ACL Configuration",
  860. "schema": {
  861. "type": "dict",
  862. "show_if": [
  863. [
  864. "aclEnable",
  865. "=",
  866. true
  867. ]
  868. ],
  869. "attrs": [
  870. {
  871. "variable": "path",
  872. "label": "Host Path",
  873. "description": "Host Path to perform ACL",
  874. "schema": {
  875. "type": "hostpath",
  876. "required": true,
  877. "empty": false
  878. }
  879. },
  880. {
  881. "variable": "entries",
  882. "label": "ACL Entries",
  883. "description": "ACL Entries",
  884. "schema": {
  885. "type": "list",
  886. "items": [
  887. {
  888. "variable": "aclEntry",
  889. "label": "ACL Entry",
  890. "schema": {
  891. "type": "dict",
  892. "attrs": [
  893. {
  894. "variable": "id_type",
  895. "label": "ID Type",
  896. "schema": {
  897. "type": "string",
  898. "enum": [
  899. {
  900. "value": "USER",
  901. "description": "Entry is for a USER"
  902. },
  903. {
  904. "value": "GROUP",
  905. "description": "Entry is for a GROUP"
  906. }
  907. ],
  908. "default": "USER"
  909. }
  910. },
  911. {
  912. "variable": "id",
  913. "label": "ID",
  914. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  915. "schema": {
  916. "type": "int",
  917. "required": true,
  918. "min": 0
  919. }
  920. },
  921. {
  922. "variable": "access",
  923. "label": "Access",
  924. "schema": {
  925. "type": "string",
  926. "enum": [
  927. {
  928. "value": "READ",
  929. "description": "Read Access"
  930. },
  931. {
  932. "value": "MODIFY",
  933. "description": "Modify Access"
  934. },
  935. {
  936. "value": "FULL_CONTROL",
  937. "description": "FULL_CONTROL Access"
  938. }
  939. ]
  940. }
  941. }
  942. ]
  943. }
  944. }
  945. ]
  946. }
  947. },
  948. {
  949. "variable": "options",
  950. "label": "ACL Options",
  951. "schema": {
  952. "type": "dict",
  953. "attrs": [
  954. {
  955. "variable": "force",
  956. "label": "Force Flag",
  957. "description": "Enabling `Force` applies ACL even if the path has existing data",
  958. "schema": {
  959. "type": "boolean",
  960. "default": false
  961. }
  962. }
  963. ]
  964. }
  965. }
  966. ],
  967. "$ref": [
  968. "normalize/acl"
  969. ]
  970. }
  971. },
  972. {
  973. "variable": "hostPath",
  974. "label": "Host Path",
  975. "description": "The host path to use for storage.",
  976. "schema": {
  977. "type": "hostpath",
  978. "show_if": [
  979. [
  980. "aclEnable",
  981. "=",
  982. false
  983. ]
  984. ],
  985. "required": true
  986. }
  987. }
  988. ]
  989. }
  990. }
  991. ]
  992. }
  993. },
  994. {
  995. "variable": "pgBackup",
  996. "label": "Postgres Backup Storage",
  997. "description": "The path to store Postgres Backup.",
  998. "schema": {
  999. "type": "dict",
  1000. "attrs": [
  1001. {
  1002. "variable": "type",
  1003. "label": "Type",
  1004. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  1005. "schema": {
  1006. "type": "string",
  1007. "required": true,
  1008. "immutable": true,
  1009. "default": "ixVolume",
  1010. "enum": [
  1011. {
  1012. "value": "hostPath",
  1013. "description": "Host Path (Path that already exists on the system)"
  1014. },
  1015. {
  1016. "value": "ixVolume",
  1017. "description": "ixVolume (Dataset created automatically by the system)"
  1018. }
  1019. ]
  1020. }
  1021. },
  1022. {
  1023. "variable": "ixVolumeConfig",
  1024. "label": "ixVolume Configuration",
  1025. "description": "The configuration for the ixVolume dataset.",
  1026. "schema": {
  1027. "type": "dict",
  1028. "hidden": true,
  1029. "show_if": [
  1030. [
  1031. "type",
  1032. "=",
  1033. "ixVolume"
  1034. ]
  1035. ],
  1036. "$ref": [
  1037. "normalize/ixVolume"
  1038. ],
  1039. "attrs": [
  1040. {
  1041. "variable": "aclEnable",
  1042. "label": "Enable ACL",
  1043. "description": "Enable ACL for the dataset.",
  1044. "schema": {
  1045. "type": "boolean",
  1046. "hidden": true,
  1047. "default": false
  1048. }
  1049. },
  1050. {
  1051. "variable": "datasetName",
  1052. "label": "Dataset Name",
  1053. "description": "The name of the dataset to use for storage.",
  1054. "schema": {
  1055. "type": "string",
  1056. "required": true,
  1057. "immutable": true,
  1058. "hidden": true,
  1059. "default": "pgBackup"
  1060. }
  1061. },
  1062. {
  1063. "variable": "aclEntries",
  1064. "label": "ACL Configuration",
  1065. "schema": {
  1066. "type": "dict",
  1067. "show_if": [
  1068. [
  1069. "aclEnable",
  1070. "=",
  1071. true
  1072. ]
  1073. ],
  1074. "attrs": [
  1075. {
  1076. "variable": "path",
  1077. "label": "Path",
  1078. "description": "Path to perform ACL",
  1079. "schema": {
  1080. "type": "string",
  1081. "hidden": true
  1082. }
  1083. },
  1084. {
  1085. "variable": "entries",
  1086. "label": "ACL Entries",
  1087. "description": "ACL Entries",
  1088. "schema": {
  1089. "type": "list",
  1090. "items": [
  1091. {
  1092. "variable": "aclEntry",
  1093. "label": "ACL Entry",
  1094. "schema": {
  1095. "type": "dict",
  1096. "attrs": [
  1097. {
  1098. "variable": "id_type",
  1099. "label": "ID Type",
  1100. "schema": {
  1101. "type": "string",
  1102. "enum": [
  1103. {
  1104. "value": "USER",
  1105. "description": "Entry is for a USER"
  1106. },
  1107. {
  1108. "value": "GROUP",
  1109. "description": "Entry is for a GROUP"
  1110. }
  1111. ],
  1112. "default": "USER"
  1113. }
  1114. },
  1115. {
  1116. "variable": "id",
  1117. "label": "ID",
  1118. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  1119. "schema": {
  1120. "type": "int",
  1121. "required": true,
  1122. "min": 0
  1123. }
  1124. },
  1125. {
  1126. "variable": "access",
  1127. "label": "Access",
  1128. "schema": {
  1129. "type": "string",
  1130. "enum": [
  1131. {
  1132. "value": "READ",
  1133. "description": "Read Access"
  1134. },
  1135. {
  1136. "value": "MODIFY",
  1137. "description": "Modify Access"
  1138. },
  1139. {
  1140. "value": "FULL_CONTROL",
  1141. "description": "FULL_CONTROL Access"
  1142. }
  1143. ]
  1144. }
  1145. }
  1146. ]
  1147. }
  1148. }
  1149. ]
  1150. }
  1151. }
  1152. ]
  1153. }
  1154. }
  1155. ]
  1156. }
  1157. },
  1158. {
  1159. "variable": "hostPathConfig",
  1160. "label": "Host Path Configuration",
  1161. "schema": {
  1162. "type": "dict",
  1163. "show_if": [
  1164. [
  1165. "type",
  1166. "=",
  1167. "hostPath"
  1168. ]
  1169. ],
  1170. "attrs": [
  1171. {
  1172. "variable": "aclEnable",
  1173. "label": "Enable ACL",
  1174. "description": "Enable ACL for the dataset.",
  1175. "schema": {
  1176. "type": "boolean",
  1177. "hidden": true,
  1178. "default": false
  1179. }
  1180. },
  1181. {
  1182. "variable": "acl",
  1183. "label": "ACL Configuration",
  1184. "schema": {
  1185. "type": "dict",
  1186. "show_if": [
  1187. [
  1188. "aclEnable",
  1189. "=",
  1190. true
  1191. ]
  1192. ],
  1193. "attrs": [
  1194. {
  1195. "variable": "path",
  1196. "label": "Host Path",
  1197. "description": "Host Path to perform ACL",
  1198. "schema": {
  1199. "type": "hostpath",
  1200. "required": true,
  1201. "empty": false
  1202. }
  1203. },
  1204. {
  1205. "variable": "entries",
  1206. "label": "ACL Entries",
  1207. "description": "ACL Entries",
  1208. "schema": {
  1209. "type": "list",
  1210. "items": [
  1211. {
  1212. "variable": "aclEntry",
  1213. "label": "ACL Entry",
  1214. "schema": {
  1215. "type": "dict",
  1216. "attrs": [
  1217. {
  1218. "variable": "id_type",
  1219. "label": "ID Type",
  1220. "schema": {
  1221. "type": "string",
  1222. "enum": [
  1223. {
  1224. "value": "USER",
  1225. "description": "Entry is for a USER"
  1226. },
  1227. {
  1228. "value": "GROUP",
  1229. "description": "Entry is for a GROUP"
  1230. }
  1231. ],
  1232. "default": "USER"
  1233. }
  1234. },
  1235. {
  1236. "variable": "id",
  1237. "label": "ID",
  1238. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  1239. "schema": {
  1240. "type": "int",
  1241. "required": true,
  1242. "min": 0
  1243. }
  1244. },
  1245. {
  1246. "variable": "access",
  1247. "label": "Access",
  1248. "schema": {
  1249. "type": "string",
  1250. "enum": [
  1251. {
  1252. "value": "READ",
  1253. "description": "Read Access"
  1254. },
  1255. {
  1256. "value": "MODIFY",
  1257. "description": "Modify Access"
  1258. },
  1259. {
  1260. "value": "FULL_CONTROL",
  1261. "description": "FULL_CONTROL Access"
  1262. }
  1263. ]
  1264. }
  1265. }
  1266. ]
  1267. }
  1268. }
  1269. ]
  1270. }
  1271. },
  1272. {
  1273. "variable": "options",
  1274. "label": "ACL Options",
  1275. "schema": {
  1276. "type": "dict",
  1277. "attrs": [
  1278. {
  1279. "variable": "force",
  1280. "label": "Force Flag",
  1281. "description": "Enabling `Force` applies ACL even if the path has existing data",
  1282. "schema": {
  1283. "type": "boolean",
  1284. "default": false
  1285. }
  1286. }
  1287. ]
  1288. }
  1289. }
  1290. ],
  1291. "$ref": [
  1292. "normalize/acl"
  1293. ]
  1294. }
  1295. },
  1296. {
  1297. "variable": "hostPath",
  1298. "label": "Host Path",
  1299. "description": "The host path to use for storage.",
  1300. "schema": {
  1301. "type": "hostpath",
  1302. "show_if": [
  1303. [
  1304. "aclEnable",
  1305. "=",
  1306. false
  1307. ]
  1308. ],
  1309. "required": true
  1310. }
  1311. }
  1312. ]
  1313. }
  1314. }
  1315. ]
  1316. }
  1317. },
  1318. {
  1319. "variable": "additionalStorages",
  1320. "label": "Additional Storage",
  1321. "description": "Additional storage for Linkding.",
  1322. "schema": {
  1323. "type": "list",
  1324. "default": [],
  1325. "items": [
  1326. {
  1327. "variable": "storageEntry",
  1328. "label": "Storage Entry",
  1329. "schema": {
  1330. "type": "dict",
  1331. "attrs": [
  1332. {
  1333. "variable": "type",
  1334. "label": "Type",
  1335. "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 a persistent volume claim.\n",
  1336. "schema": {
  1337. "type": "string",
  1338. "required": true,
  1339. "default": "ixVolume",
  1340. "immutable": true,
  1341. "enum": [
  1342. {
  1343. "value": "hostPath",
  1344. "description": "Host Path (Path that already exists on the system)"
  1345. },
  1346. {
  1347. "value": "ixVolume",
  1348. "description": "ixVolume (Dataset created automatically by the system)"
  1349. },
  1350. {
  1351. "value": "smb-pv-pvc",
  1352. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  1353. }
  1354. ]
  1355. }
  1356. },
  1357. {
  1358. "variable": "readOnly",
  1359. "label": "Read Only",
  1360. "description": "Mount the volume as read only.",
  1361. "schema": {
  1362. "type": "boolean",
  1363. "default": false
  1364. }
  1365. },
  1366. {
  1367. "variable": "mountPath",
  1368. "label": "Mount Path",
  1369. "description": "The path inside the container to mount the storage.",
  1370. "schema": {
  1371. "type": "path",
  1372. "required": true
  1373. }
  1374. },
  1375. {
  1376. "variable": "hostPathConfig",
  1377. "label": "Host Path Configuration",
  1378. "schema": {
  1379. "type": "dict",
  1380. "show_if": [
  1381. [
  1382. "type",
  1383. "=",
  1384. "hostPath"
  1385. ]
  1386. ],
  1387. "attrs": [
  1388. {
  1389. "variable": "aclEnable",
  1390. "label": "Enable ACL",
  1391. "description": "Enable ACL for the dataset.",
  1392. "schema": {
  1393. "type": "boolean",
  1394. "default": false
  1395. }
  1396. },
  1397. {
  1398. "variable": "acl",
  1399. "label": "ACL Configuration",
  1400. "schema": {
  1401. "type": "dict",
  1402. "show_if": [
  1403. [
  1404. "aclEnable",
  1405. "=",
  1406. true
  1407. ]
  1408. ],
  1409. "attrs": [
  1410. {
  1411. "variable": "path",
  1412. "label": "Host Path",
  1413. "description": "Host Path to perform ACL",
  1414. "schema": {
  1415. "type": "hostpath",
  1416. "required": true,
  1417. "empty": false
  1418. }
  1419. },
  1420. {
  1421. "variable": "entries",
  1422. "label": "ACL Entries",
  1423. "description": "ACL Entries",
  1424. "schema": {
  1425. "type": "list",
  1426. "items": [
  1427. {
  1428. "variable": "aclEntry",
  1429. "label": "ACL Entry",
  1430. "schema": {
  1431. "type": "dict",
  1432. "attrs": [
  1433. {
  1434. "variable": "id_type",
  1435. "label": "ID Type",
  1436. "schema": {
  1437. "type": "string",
  1438. "enum": [
  1439. {
  1440. "value": "USER",
  1441. "description": "Entry is for a USER"
  1442. },
  1443. {
  1444. "value": "GROUP",
  1445. "description": "Entry is for a GROUP"
  1446. }
  1447. ],
  1448. "default": "USER"
  1449. }
  1450. },
  1451. {
  1452. "variable": "id",
  1453. "label": "ID",
  1454. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  1455. "schema": {
  1456. "type": "int",
  1457. "required": true,
  1458. "min": 0
  1459. }
  1460. },
  1461. {
  1462. "variable": "access",
  1463. "label": "Access",
  1464. "schema": {
  1465. "type": "string",
  1466. "enum": [
  1467. {
  1468. "value": "READ",
  1469. "description": "Read Access"
  1470. },
  1471. {
  1472. "value": "MODIFY",
  1473. "description": "Modify Access"
  1474. },
  1475. {
  1476. "value": "FULL_CONTROL",
  1477. "description": "FULL_CONTROL Access"
  1478. }
  1479. ]
  1480. }
  1481. }
  1482. ]
  1483. }
  1484. }
  1485. ]
  1486. }
  1487. },
  1488. {
  1489. "variable": "options",
  1490. "label": "ACL Options",
  1491. "schema": {
  1492. "type": "dict",
  1493. "attrs": [
  1494. {
  1495. "variable": "force",
  1496. "label": "Force Flag",
  1497. "description": "Enabling `Force` applies ACL even if the path has existing data",
  1498. "schema": {
  1499. "type": "boolean",
  1500. "default": false
  1501. }
  1502. }
  1503. ]
  1504. }
  1505. }
  1506. ],
  1507. "$ref": [
  1508. "normalize/acl"
  1509. ]
  1510. }
  1511. },
  1512. {
  1513. "variable": "hostPath",
  1514. "label": "Host Path",
  1515. "description": "The host path to use for storage.",
  1516. "schema": {
  1517. "type": "hostpath",
  1518. "show_if": [
  1519. [
  1520. "aclEnable",
  1521. "=",
  1522. false
  1523. ]
  1524. ],
  1525. "required": true
  1526. }
  1527. }
  1528. ]
  1529. }
  1530. },
  1531. {
  1532. "variable": "ixVolumeConfig",
  1533. "label": "ixVolume Configuration",
  1534. "description": "The configuration for the ixVolume dataset.",
  1535. "schema": {
  1536. "type": "dict",
  1537. "show_if": [
  1538. [
  1539. "type",
  1540. "=",
  1541. "ixVolume"
  1542. ]
  1543. ],
  1544. "$ref": [
  1545. "normalize/ixVolume"
  1546. ],
  1547. "attrs": [
  1548. {
  1549. "variable": "aclEnable",
  1550. "label": "Enable ACL",
  1551. "description": "Enable ACL for the dataset.",
  1552. "schema": {
  1553. "type": "boolean",
  1554. "default": false
  1555. }
  1556. },
  1557. {
  1558. "variable": "datasetName",
  1559. "label": "Dataset Name",
  1560. "description": "The name of the dataset to use for storage.",
  1561. "schema": {
  1562. "type": "string",
  1563. "required": true,
  1564. "immutable": true,
  1565. "default": "storage_entry"
  1566. }
  1567. },
  1568. {
  1569. "variable": "aclEntries",
  1570. "label": "ACL Configuration",
  1571. "schema": {
  1572. "type": "dict",
  1573. "show_if": [
  1574. [
  1575. "aclEnable",
  1576. "=",
  1577. true
  1578. ]
  1579. ],
  1580. "attrs": [
  1581. {
  1582. "variable": "path",
  1583. "label": "Path",
  1584. "description": "Path to perform ACL",
  1585. "schema": {
  1586. "type": "string",
  1587. "hidden": true
  1588. }
  1589. },
  1590. {
  1591. "variable": "entries",
  1592. "label": "ACL Entries",
  1593. "description": "ACL Entries",
  1594. "schema": {
  1595. "type": "list",
  1596. "items": [
  1597. {
  1598. "variable": "aclEntry",
  1599. "label": "ACL Entry",
  1600. "schema": {
  1601. "type": "dict",
  1602. "attrs": [
  1603. {
  1604. "variable": "id_type",
  1605. "label": "ID Type",
  1606. "schema": {
  1607. "type": "string",
  1608. "enum": [
  1609. {
  1610. "value": "USER",
  1611. "description": "Entry is for a USER"
  1612. },
  1613. {
  1614. "value": "GROUP",
  1615. "description": "Entry is for a GROUP"
  1616. }
  1617. ],
  1618. "default": "USER"
  1619. }
  1620. },
  1621. {
  1622. "variable": "id",
  1623. "label": "ID",
  1624. "description": "Make sure to check the ID value is correct and aligns with RunAs user context of the application",
  1625. "schema": {
  1626. "type": "int",
  1627. "required": true,
  1628. "min": 0
  1629. }
  1630. },
  1631. {
  1632. "variable": "access",
  1633. "label": "Access",
  1634. "schema": {
  1635. "type": "string",
  1636. "enum": [
  1637. {
  1638. "value": "READ",
  1639. "description": "Read Access"
  1640. },
  1641. {
  1642. "value": "MODIFY",
  1643. "description": "Modify Access"
  1644. },
  1645. {
  1646. "value": "FULL_CONTROL",
  1647. "description": "FULL_CONTROL Access"
  1648. }
  1649. ]
  1650. }
  1651. }
  1652. ]
  1653. }
  1654. }
  1655. ]
  1656. }
  1657. }
  1658. ]
  1659. }
  1660. }
  1661. ]
  1662. }
  1663. },
  1664. {
  1665. "variable": "smbConfig",
  1666. "label": "SMB Share Configuration",
  1667. "description": "The configuration for the SMB Share.",
  1668. "schema": {
  1669. "type": "dict",
  1670. "show_if": [
  1671. [
  1672. "type",
  1673. "=",
  1674. "smb-pv-pvc"
  1675. ]
  1676. ],
  1677. "attrs": [
  1678. {
  1679. "variable": "server",
  1680. "label": "Server",
  1681. "description": "The server for the SMB share.",
  1682. "schema": {
  1683. "type": "string",
  1684. "required": true
  1685. }
  1686. },
  1687. {
  1688. "variable": "share",
  1689. "label": "Share",
  1690. "description": "The share name for the SMB share.",
  1691. "schema": {
  1692. "type": "string",
  1693. "required": true
  1694. }
  1695. },
  1696. {
  1697. "variable": "domain",
  1698. "label": "Domain (Optional)",
  1699. "description": "The domain for the SMB share.",
  1700. "schema": {
  1701. "type": "string"
  1702. }
  1703. },
  1704. {
  1705. "variable": "username",
  1706. "label": "Username",
  1707. "description": "The username for the SMB share.",
  1708. "schema": {
  1709. "type": "string",
  1710. "required": true
  1711. }
  1712. },
  1713. {
  1714. "variable": "password",
  1715. "label": "Password",
  1716. "description": "The password for the SMB share.",
  1717. "schema": {
  1718. "type": "string",
  1719. "required": true,
  1720. "private": true
  1721. }
  1722. },
  1723. {
  1724. "variable": "size",
  1725. "label": "Size (in Gi)",
  1726. "description": "The size of the volume quota.",
  1727. "schema": {
  1728. "type": "int",
  1729. "required": true,
  1730. "min": 1,
  1731. "default": 1
  1732. }
  1733. }
  1734. ]
  1735. }
  1736. }
  1737. ]
  1738. }
  1739. }
  1740. ]
  1741. }
  1742. }
  1743. ]
  1744. }
  1745. },
  1746. {
  1747. "variable": "resources",
  1748. "group": "Resources Configuration",
  1749. "label": "",
  1750. "schema": {
  1751. "type": "dict",
  1752. "attrs": [
  1753. {
  1754. "variable": "limits",
  1755. "label": "Limits",
  1756. "schema": {
  1757. "type": "dict",
  1758. "attrs": [
  1759. {
  1760. "variable": "cpu",
  1761. "label": "CPU",
  1762. "description": "CPU limit for Linkding.",
  1763. "schema": {
  1764. "type": "string",
  1765. "max_length": 6,
  1766. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  1767. "valid_chars_error": "Valid CPU limit formats are</br>\n- Plain Integer - eg. 1</br>\n- Float - eg. 0.5</br>\n- Milicpu - eg. 500m\n",
  1768. "default": "4000m",
  1769. "required": true
  1770. }
  1771. },
  1772. {
  1773. "variable": "memory",
  1774. "label": "Memory",
  1775. "description": "Memory limit for Linkding.",
  1776. "schema": {
  1777. "type": "string",
  1778. "max_length": 12,
  1779. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  1780. "valid_chars_error": "Valid Memory limit formats are</br>\n- Suffixed with E/P/T/G/M/K - eg. 1G</br>\n- Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi</br>\n- Plain Integer in bytes - eg. 1024</br>\n- Exponent - eg. 134e6\n",
  1781. "default": "8Gi",
  1782. "required": true
  1783. }
  1784. }
  1785. ]
  1786. }
  1787. }
  1788. ]
  1789. }
  1790. }
  1791. ]
  1792. },
  1793. "app_readme": "<h1>Linkding</h1>\n<p><a href=\"https://github.com/sissbruecker/linkding\">Linkding</a> is a bookmark manager that you can host yourself.</p>\n<blockquote>\n<p>When application is installed, a container will be launched with <strong>root</strong> privileges.\nThis is required in order to apply the correct permissions to the <code>linkding</code> directories.\nAfterward, the <code>linkding</code> container will run as a <strong>non</strong>-root user (Default: <code>568</code>).\nSame applies to the <code>postgres</code> container. This will run afterwards as a <strong>non</strong>-root user (<code>999</code>).\nOn each upgrade, a container will be launched with <strong>root</strong> privileges in order to apply the correct\npermissions to the <code>postgres</code> <strong>backups</strong> directory. Container that performs the backup will run as a <strong>non</strong>-root user (<code>999</code>) afterwards.\nKeep in mind the permissions on the backup directory will be changed to <code>999:999</code> on <strong>every</strong> update.\nBut will only be changed once for the <code>linkding</code> and <code>postgres</code> data directories.</p>\n</blockquote>",
  1794. "detailed_readme": "<h1>Linkding</h1>\n<p><a href=\"https://github.com/sissbruecker/linkding\">Linkding</a> is a bookmark manager that you can host yourself.</p>\n<blockquote>\n<p>When application is installed, a container will be launched with <strong>root</strong> privileges.\nThis is required in order to apply the correct permissions to the <code>linkding</code> directories.\nAfterward, the <code>linkding</code> container will run as a <strong>non</strong>-root user (Default: <code>568</code>).\nSame applies to the <code>postgres</code> container. This will run afterwards as a <strong>non</strong>-root user (<code>999</code>).\nOn each upgrade, a container will be launched with <strong>root</strong> privileges in order to apply the correct\npermissions to the <code>postgres</code> <strong>backups</strong> directory. Container that performs the backup will run as a <strong>non</strong>-root user (<code>999</code>) afterwards.\nKeep in mind the permissions on the backup directory will be changed to <code>999:999</code> on <strong>every</strong> update.\nBut will only be changed once for the <code>linkding</code> and <code>postgres</code> data directories.</p>\n</blockquote>",
  1795. "changelog": null
  1796. }
  1797. }