app_versions.json 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752
  1. {
  2. "1.1.8": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/charts/charts/community/unifi-protect-backup/1.1.8",
  7. "last_update": "2023-12-20 10:45:42",
  8. "required_features": [
  9. "normalize/ixVolume",
  10. "definitions/timezone"
  11. ],
  12. "human_version": "0.10.3_1.1.8",
  13. "version": "1.1.8",
  14. "chart_metadata": {
  15. "name": "unifi-protect-backup",
  16. "description": "Unifi Protect Backup is a python based tool for backing up UniFi Protect event clips as they occur.",
  17. "annotations": {
  18. "title": "Unifi Protect Backup"
  19. },
  20. "type": "application",
  21. "version": "1.1.8",
  22. "apiVersion": "v2",
  23. "appVersion": "0.10.3",
  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.5"
  37. }
  38. ],
  39. "home": "https://github.com/ep1cman/unifi-protect-backup",
  40. "icon": "https://media.sys.truenas.net/apps/unifi-protect-backup/icons/icon.png",
  41. "sources": [
  42. "https://github.com/ep1cman/unifi-protect-backup",
  43. "https://github.com/truenas/charts/tree/master/community/unifi-protect-backup",
  44. "https://github.com/ep1cman/unifi-protect-backup/pkgs/container/unifi-protect-backup/"
  45. ],
  46. "keywords": [
  47. "backup",
  48. "unifi-protect"
  49. ]
  50. },
  51. "app_metadata": {
  52. "runAsContext": [
  53. {
  54. "userName": "root",
  55. "groupName": "root",
  56. "gid": 0,
  57. "uid": 0,
  58. "description": "Unifi Protect Backup run as root user"
  59. }
  60. ],
  61. "capabilities": [
  62. {
  63. "name": "CHOWN",
  64. "description": "Unifi Protect Backup is able to chown files."
  65. },
  66. {
  67. "name": "FOWNER",
  68. "description": "Unifi Protect Backup is able bypass permission checks for it's sub-processes."
  69. },
  70. {
  71. "name": "SETGID",
  72. "description": "Unifi Protect Backup is able to set group ID for it's sub-processes."
  73. },
  74. {
  75. "name": "SETUID",
  76. "description": "Unifi Protect Backup is able to set user ID for it's sub-processes."
  77. }
  78. ],
  79. "hostMounts": []
  80. },
  81. "schema": {
  82. "groups": [
  83. {
  84. "name": "Unifi Protect Backup Configuration",
  85. "description": "Configure Unifi Protect Backup"
  86. },
  87. {
  88. "name": "User and Group Configuration",
  89. "description": "Configure User and Group for Unifi Protect Backup"
  90. },
  91. {
  92. "name": "Storage Configuration",
  93. "description": "Configure Storage for Unifi Protect Backup"
  94. },
  95. {
  96. "name": "Resources Configuration",
  97. "description": "Configure Resources for Unifi Protect Backup"
  98. }
  99. ],
  100. "questions": [
  101. {
  102. "variable": "TZ",
  103. "group": "Unifi Protect Backup Configuration",
  104. "label": "Timezone",
  105. "schema": {
  106. "type": "string",
  107. "default": "America/Los_Angeles",
  108. "required": true,
  109. "$ref": [
  110. "definitions/timezone"
  111. ],
  112. "enum": [
  113. {
  114. "value": "Asia/Damascus",
  115. "description": "'Asia/Damascus' timezone"
  116. },
  117. {
  118. "value": "Asia/Saigon",
  119. "description": "'Asia/Saigon' timezone"
  120. }
  121. ]
  122. }
  123. },
  124. {
  125. "variable": "upbConfig",
  126. "label": "",
  127. "group": "Unifi Protect Backup Configuration",
  128. "schema": {
  129. "type": "dict",
  130. "attrs": [
  131. {
  132. "variable": "unifiProtectUsername",
  133. "label": "Unifi Protect Username",
  134. "description": "Username to login to Unifi Protect instance",
  135. "schema": {
  136. "type": "string",
  137. "required": true
  138. }
  139. },
  140. {
  141. "variable": "unifiProtectPassword",
  142. "label": "Unifi Protect Password",
  143. "description": "Password for Unifi Protect user",
  144. "schema": {
  145. "type": "string",
  146. "required": true,
  147. "private": true
  148. }
  149. },
  150. {
  151. "variable": "unifiProtectAddress",
  152. "label": "Unifi Protect Address",
  153. "description": "Address of Unifi Protect instance",
  154. "schema": {
  155. "type": "string",
  156. "required": true
  157. }
  158. },
  159. {
  160. "variable": "unifiProtectPort",
  161. "label": "Unifi Protect Port",
  162. "description": "Port of Unifi Protect instance",
  163. "schema": {
  164. "type": "int",
  165. "min": 1,
  166. "max": 65535,
  167. "required": true,
  168. "default": 443
  169. }
  170. },
  171. {
  172. "variable": "unifiProtectVerifySsl",
  173. "label": "Unifi Protect Verify SSL",
  174. "description": "Verify SSL certificate of Unifi Protect instance",
  175. "schema": {
  176. "type": "boolean",
  177. "default": true
  178. }
  179. },
  180. {
  181. "variable": "skipMissing",
  182. "label": "Skip Missing",
  183. "description": "If set, events which are 'missing' at the start will be ignored.",
  184. "schema": {
  185. "type": "boolean",
  186. "default": false
  187. }
  188. },
  189. {
  190. "variable": "ignoreCameras",
  191. "label": "Ignore Cameras",
  192. "description": "IDs of cameras for which events should not be backed up. One per line.",
  193. "schema": {
  194. "type": "list",
  195. "default": [],
  196. "items": [
  197. {
  198. "variable": "id",
  199. "label": "Camera ID",
  200. "schema": {
  201. "type": "string",
  202. "required": true
  203. }
  204. }
  205. ]
  206. }
  207. },
  208. {
  209. "variable": "detectionTypes",
  210. "label": "Detection Types",
  211. "description": "Types of detections to back up. One per line.",
  212. "schema": {
  213. "type": "list",
  214. "default": [
  215. "motion",
  216. "person",
  217. "vehicle",
  218. "ring"
  219. ],
  220. "items": [
  221. {
  222. "variable": "type",
  223. "label": "Detection Type",
  224. "schema": {
  225. "type": "string",
  226. "required": true,
  227. "enum": [
  228. {
  229. "value": "motion",
  230. "description": "Motion"
  231. },
  232. {
  233. "value": "person",
  234. "description": "Person"
  235. },
  236. {
  237. "value": "vehicle",
  238. "description": "Vehicle"
  239. },
  240. {
  241. "value": "ring",
  242. "description": "Ring"
  243. }
  244. ]
  245. }
  246. }
  247. ]
  248. }
  249. },
  250. {
  251. "variable": "rcloneDestination",
  252. "label": "Rclone Destination",
  253. "description": "Rclone destination path in the format {rclone-remote}:{path-on-remote} </br.>\nE.g. `gdrive:/backups/unifi_protect`\n",
  254. "schema": {
  255. "type": "string",
  256. "required": true
  257. }
  258. },
  259. {
  260. "variable": "rcloneArgs",
  261. "label": "Rclone Arguments",
  262. "description": "Optional extra arguments to pass to rclone rcat directly. One per line</br>\nCommon usage for this would be to set a bandwidth limit</br>\nE.g. --bwlimit 8M\n",
  263. "schema": {
  264. "type": "list",
  265. "default": [],
  266. "items": [
  267. {
  268. "variable": "arg",
  269. "label": "Argument",
  270. "schema": {
  271. "type": "string",
  272. "required": true
  273. }
  274. }
  275. ]
  276. }
  277. },
  278. {
  279. "variable": "rclonePurgeArgs",
  280. "label": "Rclone Purge Arguments",
  281. "description": "Optional extra arguments to pass to rclone delete. One per line</br>\nCommon usage for this would be to execute a permanent delete\ninstead of using the recycle bin on a destination.</br>\nGoogle Drive example: --drive-use-trash=false\n",
  282. "schema": {
  283. "type": "list",
  284. "default": [],
  285. "items": [
  286. {
  287. "variable": "arg",
  288. "label": "Argument",
  289. "schema": {
  290. "type": "string",
  291. "required": true
  292. }
  293. }
  294. ]
  295. }
  296. },
  297. {
  298. "variable": "additionalEnvs",
  299. "label": "Additional Environment Variables",
  300. "description": "Configure additional environment variables for Unifi Protect Backup.",
  301. "schema": {
  302. "type": "list",
  303. "default": [],
  304. "items": [
  305. {
  306. "variable": "env",
  307. "label": "Environment Variable",
  308. "schema": {
  309. "type": "dict",
  310. "attrs": [
  311. {
  312. "variable": "name",
  313. "label": "Name",
  314. "schema": {
  315. "type": "string",
  316. "required": true
  317. }
  318. },
  319. {
  320. "variable": "value",
  321. "label": "Value",
  322. "schema": {
  323. "type": "string",
  324. "required": true
  325. }
  326. }
  327. ]
  328. }
  329. }
  330. ]
  331. }
  332. }
  333. ]
  334. }
  335. },
  336. {
  337. "variable": "upbID",
  338. "label": "",
  339. "group": "User and Group Configuration",
  340. "schema": {
  341. "type": "dict",
  342. "attrs": [
  343. {
  344. "variable": "user",
  345. "label": "User ID",
  346. "description": "The user id that Unifi Protect Backup files will be owned by.",
  347. "schema": {
  348. "type": "int",
  349. "min": 568,
  350. "default": 568,
  351. "required": true
  352. }
  353. },
  354. {
  355. "variable": "group",
  356. "label": "Group ID",
  357. "description": "The group id that Unifi Protect Backup files will be owned by.",
  358. "schema": {
  359. "type": "int",
  360. "min": 568,
  361. "default": 568,
  362. "required": true
  363. }
  364. }
  365. ]
  366. }
  367. },
  368. {
  369. "variable": "upbStorage",
  370. "label": "",
  371. "group": "Storage Configuration",
  372. "schema": {
  373. "type": "dict",
  374. "attrs": [
  375. {
  376. "variable": "config",
  377. "label": "Unifi Protect Backup Config Storage",
  378. "description": "The path to store Unifi Protect Backup Configuration.",
  379. "schema": {
  380. "type": "dict",
  381. "attrs": [
  382. {
  383. "variable": "type",
  384. "label": "Type",
  385. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  386. "schema": {
  387. "type": "string",
  388. "required": true,
  389. "immutable": true,
  390. "default": "ixVolume",
  391. "enum": [
  392. {
  393. "value": "hostPath",
  394. "description": "Host Path (Path that already exists on the system)"
  395. },
  396. {
  397. "value": "ixVolume",
  398. "description": "ixVolume (Dataset created automatically by the system)"
  399. }
  400. ]
  401. }
  402. },
  403. {
  404. "variable": "datasetName",
  405. "label": "Dataset Name",
  406. "schema": {
  407. "type": "string",
  408. "show_if": [
  409. [
  410. "type",
  411. "=",
  412. "ixVolume"
  413. ]
  414. ],
  415. "required": true,
  416. "hidden": true,
  417. "immutable": true,
  418. "default": "config",
  419. "$ref": [
  420. "normalize/ixVolume"
  421. ]
  422. }
  423. },
  424. {
  425. "variable": "hostPath",
  426. "label": "Host Path",
  427. "schema": {
  428. "type": "hostpath",
  429. "show_if": [
  430. [
  431. "type",
  432. "=",
  433. "hostPath"
  434. ]
  435. ],
  436. "required": true
  437. }
  438. }
  439. ]
  440. }
  441. },
  442. {
  443. "variable": "data",
  444. "label": "Unifi Protect Backup Data Storage",
  445. "description": "The path to store Unifi Protect Backup Data.",
  446. "schema": {
  447. "type": "dict",
  448. "attrs": [
  449. {
  450. "variable": "type",
  451. "label": "Type",
  452. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  453. "schema": {
  454. "type": "string",
  455. "required": true,
  456. "immutable": true,
  457. "default": "ixVolume",
  458. "enum": [
  459. {
  460. "value": "hostPath",
  461. "description": "Host Path (Path that already exists on the system)"
  462. },
  463. {
  464. "value": "ixVolume",
  465. "description": "ixVolume (Dataset created automatically by the system)"
  466. }
  467. ]
  468. }
  469. },
  470. {
  471. "variable": "datasetName",
  472. "label": "Dataset Name",
  473. "schema": {
  474. "type": "string",
  475. "show_if": [
  476. [
  477. "type",
  478. "=",
  479. "ixVolume"
  480. ]
  481. ],
  482. "required": true,
  483. "hidden": true,
  484. "immutable": true,
  485. "default": "data",
  486. "$ref": [
  487. "normalize/ixVolume"
  488. ]
  489. }
  490. },
  491. {
  492. "variable": "hostPath",
  493. "label": "Host Path",
  494. "schema": {
  495. "type": "hostpath",
  496. "show_if": [
  497. [
  498. "type",
  499. "=",
  500. "hostPath"
  501. ]
  502. ],
  503. "required": true
  504. }
  505. }
  506. ]
  507. }
  508. },
  509. {
  510. "variable": "additionalStorages",
  511. "label": "Additional Storage",
  512. "description": "Additional storage for Unifi Protect Backup.",
  513. "schema": {
  514. "type": "list",
  515. "default": [],
  516. "items": [
  517. {
  518. "variable": "storageEntry",
  519. "label": "Storage Entry",
  520. "schema": {
  521. "type": "dict",
  522. "attrs": [
  523. {
  524. "variable": "type",
  525. "label": "Type",
  526. "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",
  527. "schema": {
  528. "type": "string",
  529. "required": true,
  530. "default": "ixVolume",
  531. "immutable": true,
  532. "enum": [
  533. {
  534. "value": "hostPath",
  535. "description": "Host Path (Path that already exists on the system)"
  536. },
  537. {
  538. "value": "ixVolume",
  539. "description": "ixVolume (Dataset created automatically by the system)"
  540. },
  541. {
  542. "value": "smb-pv-pvc",
  543. "description": "SMB Share (Mounts a persistent volume claim to a SMB share)"
  544. }
  545. ]
  546. }
  547. },
  548. {
  549. "variable": "mountPath",
  550. "label": "Mount Path",
  551. "description": "The path inside the container to mount the storage.",
  552. "schema": {
  553. "type": "path",
  554. "required": true
  555. }
  556. },
  557. {
  558. "variable": "hostPath",
  559. "label": "Host Path",
  560. "description": "The host path to use for storage.",
  561. "schema": {
  562. "type": "hostpath",
  563. "show_if": [
  564. [
  565. "type",
  566. "=",
  567. "hostPath"
  568. ]
  569. ],
  570. "required": true
  571. }
  572. },
  573. {
  574. "variable": "datasetName",
  575. "label": "Dataset Name",
  576. "description": "The name of the dataset to use for storage.",
  577. "schema": {
  578. "type": "string",
  579. "show_if": [
  580. [
  581. "type",
  582. "=",
  583. "ixVolume"
  584. ]
  585. ],
  586. "required": true,
  587. "immutable": true,
  588. "default": "storage_entry",
  589. "$ref": [
  590. "normalize/ixVolume"
  591. ]
  592. }
  593. },
  594. {
  595. "variable": "server",
  596. "label": "Server",
  597. "description": "The server for the SMB share.",
  598. "schema": {
  599. "type": "string",
  600. "show_if": [
  601. [
  602. "type",
  603. "=",
  604. "smb-pv-pvc"
  605. ]
  606. ],
  607. "required": true
  608. }
  609. },
  610. {
  611. "variable": "share",
  612. "label": "Share",
  613. "description": "The share name for the SMB share.",
  614. "schema": {
  615. "type": "string",
  616. "show_if": [
  617. [
  618. "type",
  619. "=",
  620. "smb-pv-pvc"
  621. ]
  622. ],
  623. "required": true
  624. }
  625. },
  626. {
  627. "variable": "domain",
  628. "label": "Domain (Optional)",
  629. "description": "The domain for the SMB share.",
  630. "schema": {
  631. "type": "string",
  632. "show_if": [
  633. [
  634. "type",
  635. "=",
  636. "smb-pv-pvc"
  637. ]
  638. ]
  639. }
  640. },
  641. {
  642. "variable": "username",
  643. "label": "Username",
  644. "description": "The username for the SMB share.",
  645. "schema": {
  646. "type": "string",
  647. "show_if": [
  648. [
  649. "type",
  650. "=",
  651. "smb-pv-pvc"
  652. ]
  653. ],
  654. "required": true
  655. }
  656. },
  657. {
  658. "variable": "password",
  659. "label": "Password",
  660. "description": "The password for the SMB share.",
  661. "schema": {
  662. "type": "string",
  663. "show_if": [
  664. [
  665. "type",
  666. "=",
  667. "smb-pv-pvc"
  668. ]
  669. ],
  670. "required": true,
  671. "private": true
  672. }
  673. },
  674. {
  675. "variable": "size",
  676. "label": "Size (in Gi)",
  677. "description": "The size of the volume quota.",
  678. "schema": {
  679. "type": "int",
  680. "show_if": [
  681. [
  682. "type",
  683. "=",
  684. "smb-pv-pvc"
  685. ]
  686. ],
  687. "required": true,
  688. "min": 1,
  689. "default": 1
  690. }
  691. }
  692. ]
  693. }
  694. }
  695. ]
  696. }
  697. }
  698. ]
  699. }
  700. },
  701. {
  702. "variable": "resources",
  703. "group": "Resources Configuration",
  704. "label": "",
  705. "schema": {
  706. "type": "dict",
  707. "attrs": [
  708. {
  709. "variable": "limits",
  710. "label": "Limits",
  711. "schema": {
  712. "type": "dict",
  713. "attrs": [
  714. {
  715. "variable": "cpu",
  716. "label": "CPU",
  717. "description": "CPU limit for Unifi Protect Backup.",
  718. "schema": {
  719. "type": "string",
  720. "max_length": 6,
  721. "valid_chars": "^(0\\.[1-9]|[1-9][0-9]*)(\\.[0-9]|m?)$",
  722. "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",
  723. "default": "4000m",
  724. "required": true
  725. }
  726. },
  727. {
  728. "variable": "memory",
  729. "label": "Memory",
  730. "description": "Memory limit for Unifi Protect Backup.",
  731. "schema": {
  732. "type": "string",
  733. "max_length": 12,
  734. "valid_chars": "^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$",
  735. "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",
  736. "default": "8Gi",
  737. "required": true
  738. }
  739. }
  740. ]
  741. }
  742. }
  743. ]
  744. }
  745. }
  746. ]
  747. },
  748. "app_readme": "<h1>Unifi Protect Backup</h1>\n<p><a href=\"https://github.com/ep1cman/unifi-protect-backup\">Unifi Protect Backup</a> is a python based tool for backing up UniFi Protect event clips as they occur.</p>",
  749. "detailed_readme": "<h1>Unifi Protect Backup</h1>\n<p><a href=\"https://github.com/ep1cman/unifi-protect-backup\">Unifi Protect Backup</a> is a python based tool for backing up UniFi Protect event clips as they occur.</p>",
  750. "changelog": null
  751. }
  752. }