app_versions.json 63 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076
  1. {
  2. "1.2.7": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/unifi-protect-backup/1.2.7",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "0.14.0_1.2.7",
  10. "version": "1.2.7",
  11. "app_metadata": {
  12. "app_version": "0.14.0",
  13. "capabilities": [
  14. {
  15. "description": "Unifi Protect Backup is able to change file ownership arbitrarily",
  16. "name": "CHOWN"
  17. },
  18. {
  19. "description": "Unifi Protect Backup is able to bypass permission checks for file operations",
  20. "name": "FOWNER"
  21. },
  22. {
  23. "description": "Unifi Protect Backup is able to change group ID of processes",
  24. "name": "SETGID"
  25. },
  26. {
  27. "description": "Unifi Protect Backup is able to change user ID of processes",
  28. "name": "SETUID"
  29. }
  30. ],
  31. "categories": [
  32. "storage"
  33. ],
  34. "changelog_url": "https://github.com/ep1cman/unifi-protect-backup/blob/main/CHANGELOG.md",
  35. "date_added": "2024-08-12",
  36. "description": "Unifi Protect Backup is a python based tool for backing up UniFi Protect event clips as they occur.",
  37. "home": "https://github.com/ep1cman/unifi-protect-backup",
  38. "host_mounts": [],
  39. "icon": "https://media.sys.truenas.net/apps/unifi-protect-backup/icons/icon.svg",
  40. "keywords": [
  41. "backup",
  42. "unifi-protect"
  43. ],
  44. "lib_version": "2.1.49",
  45. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  46. "maintainers": [
  47. {
  48. "email": "dev@ixsystems.com",
  49. "name": "truenas",
  50. "url": "https://www.truenas.com/"
  51. }
  52. ],
  53. "name": "unifi-protect-backup",
  54. "run_as_context": [
  55. {
  56. "description": "Unifi Protect Backup runs as root user.",
  57. "gid": 0,
  58. "group_name": "root",
  59. "uid": 0,
  60. "user_name": "root"
  61. }
  62. ],
  63. "screenshots": [],
  64. "sources": [
  65. "https://github.com/ep1cman/unifi-protect-backup",
  66. "https://github.com/ep1cman/unifi-protect-backup/pkgs/container/unifi-protect-backup"
  67. ],
  68. "title": "Unifi Protect Backup",
  69. "train": "community",
  70. "version": "1.2.7"
  71. },
  72. "schema": {
  73. "groups": [
  74. {
  75. "name": "Unifi Protect Backup Configuration",
  76. "description": "Configure Unifi Protect Backup"
  77. },
  78. {
  79. "name": "User and Group Configuration",
  80. "description": "Configure User and Group for Unifi Protect Backup"
  81. },
  82. {
  83. "name": "Network Configuration",
  84. "description": "Configure Network for Unifi Protect Backup"
  85. },
  86. {
  87. "name": "Storage Configuration",
  88. "description": "Configure Storage for Unifi Protect Backup"
  89. },
  90. {
  91. "name": "Labels Configuration",
  92. "description": "Configure Labels for Unifi Protect Backup"
  93. },
  94. {
  95. "name": "Resources Configuration",
  96. "description": "Configure Resources for Unifi Protect Backup"
  97. }
  98. ],
  99. "questions": [
  100. {
  101. "variable": "TZ",
  102. "group": "Unifi Protect Backup Configuration",
  103. "label": "Timezone",
  104. "schema": {
  105. "type": "string",
  106. "default": "Etc/UTC",
  107. "required": true,
  108. "$ref": [
  109. "definitions/timezone"
  110. ]
  111. }
  112. },
  113. {
  114. "variable": "unifi_protect_backup",
  115. "label": "",
  116. "group": "Unifi Protect Backup Configuration",
  117. "schema": {
  118. "type": "dict",
  119. "attrs": [
  120. {
  121. "variable": "username",
  122. "label": "Unifi Protect Username",
  123. "description": "Username to login to Unifi Protect instance",
  124. "schema": {
  125. "type": "string",
  126. "required": true
  127. }
  128. },
  129. {
  130. "variable": "password",
  131. "label": "Unifi Protect Password",
  132. "description": "Password for Unifi Protect user",
  133. "schema": {
  134. "type": "string",
  135. "required": true,
  136. "private": true
  137. }
  138. },
  139. {
  140. "variable": "address",
  141. "label": "Unifi Protect Address",
  142. "description": "Address of Unifi Protect instance",
  143. "schema": {
  144. "type": "string",
  145. "required": true
  146. }
  147. },
  148. {
  149. "variable": "port",
  150. "label": "Unifi Protect Port",
  151. "description": "Port of Unifi Protect instance",
  152. "schema": {
  153. "type": "int",
  154. "min": 1,
  155. "max": 65535,
  156. "required": true,
  157. "default": 443
  158. }
  159. },
  160. {
  161. "variable": "ssl_verify",
  162. "label": "Unifi Protect Verify SSL",
  163. "description": "Verify SSL certificate of Unifi Protect instance",
  164. "schema": {
  165. "type": "boolean",
  166. "default": true
  167. }
  168. },
  169. {
  170. "variable": "skip_missing",
  171. "label": "Skip Missing",
  172. "description": "If set, events which are 'missing' at the start will be ignored.",
  173. "schema": {
  174. "type": "boolean",
  175. "default": false
  176. }
  177. },
  178. {
  179. "variable": "ignore_cameras",
  180. "label": "Ignore Cameras",
  181. "description": "IDs of cameras for which events should not be backed up. One per line.",
  182. "schema": {
  183. "type": "list",
  184. "default": [],
  185. "items": [
  186. {
  187. "variable": "id",
  188. "label": "Camera ID",
  189. "schema": {
  190. "type": "string",
  191. "required": true
  192. }
  193. }
  194. ]
  195. }
  196. },
  197. {
  198. "variable": "detection_types",
  199. "label": "Detection Types",
  200. "description": "Types of detections to back up. One per line.",
  201. "schema": {
  202. "type": "list",
  203. "default": [
  204. "motion",
  205. "person",
  206. "vehicle",
  207. "ring"
  208. ],
  209. "items": [
  210. {
  211. "variable": "type",
  212. "label": "Detection Type",
  213. "schema": {
  214. "type": "string",
  215. "required": true,
  216. "enum": [
  217. {
  218. "value": "motion",
  219. "description": "Motion"
  220. },
  221. {
  222. "value": "person",
  223. "description": "Person"
  224. },
  225. {
  226. "value": "vehicle",
  227. "description": "Vehicle"
  228. },
  229. {
  230. "value": "ring",
  231. "description": "Ring"
  232. }
  233. ]
  234. }
  235. }
  236. ]
  237. }
  238. },
  239. {
  240. "variable": "rclone_destination",
  241. "label": "Rclone Destination",
  242. "description": "Rclone destination path in the format {rclone-remote}:{path-on-remote} </br.>\nE.g. `gdrive:/backups/unifi_protect`\n",
  243. "schema": {
  244. "type": "string",
  245. "required": true
  246. }
  247. },
  248. {
  249. "variable": "rclone_args",
  250. "label": "Rclone Arguments",
  251. "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",
  252. "schema": {
  253. "type": "list",
  254. "default": [],
  255. "items": [
  256. {
  257. "variable": "arg",
  258. "label": "Argument",
  259. "schema": {
  260. "type": "string",
  261. "required": true
  262. }
  263. }
  264. ]
  265. }
  266. },
  267. {
  268. "variable": "rclone_purge_args",
  269. "label": "Rclone Purge Arguments",
  270. "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",
  271. "schema": {
  272. "type": "list",
  273. "default": [],
  274. "items": [
  275. {
  276. "variable": "arg",
  277. "label": "Argument",
  278. "schema": {
  279. "type": "string",
  280. "required": true
  281. }
  282. }
  283. ]
  284. }
  285. },
  286. {
  287. "variable": "additional_envs",
  288. "label": "Additional Environment Variables",
  289. "schema": {
  290. "type": "list",
  291. "default": [],
  292. "items": [
  293. {
  294. "variable": "env",
  295. "label": "Environment Variable",
  296. "schema": {
  297. "type": "dict",
  298. "attrs": [
  299. {
  300. "variable": "name",
  301. "label": "Name",
  302. "schema": {
  303. "type": "string",
  304. "required": true
  305. }
  306. },
  307. {
  308. "variable": "value",
  309. "label": "Value",
  310. "schema": {
  311. "type": "string"
  312. }
  313. }
  314. ]
  315. }
  316. }
  317. ]
  318. }
  319. }
  320. ]
  321. }
  322. },
  323. {
  324. "variable": "run_as",
  325. "label": "",
  326. "group": "User and Group Configuration",
  327. "schema": {
  328. "type": "dict",
  329. "attrs": [
  330. {
  331. "variable": "user",
  332. "label": "User ID",
  333. "description": "The user id that Unifi Protect Backup files will be owned by.",
  334. "schema": {
  335. "type": "int",
  336. "min": 568,
  337. "default": 568,
  338. "required": true
  339. }
  340. },
  341. {
  342. "variable": "group",
  343. "label": "Group ID",
  344. "description": "The group id that Unifi Protect Backup files will be owned by.",
  345. "schema": {
  346. "type": "int",
  347. "min": 568,
  348. "default": 568,
  349. "required": true
  350. }
  351. }
  352. ]
  353. }
  354. },
  355. {
  356. "variable": "network",
  357. "label": "",
  358. "group": "Network Configuration",
  359. "schema": {
  360. "type": "dict",
  361. "attrs": [
  362. {
  363. "variable": "host_network",
  364. "label": "Host Network",
  365. "description": "Bind to the host network. It's recommended to keep this disabled.\n",
  366. "schema": {
  367. "type": "boolean",
  368. "default": false
  369. }
  370. }
  371. ]
  372. }
  373. },
  374. {
  375. "variable": "storage",
  376. "label": "",
  377. "group": "Storage Configuration",
  378. "schema": {
  379. "type": "dict",
  380. "attrs": [
  381. {
  382. "variable": "config",
  383. "label": "Unifi Protect Backup Config Storage",
  384. "description": "The path to store Unifi Protect Backup Config.",
  385. "schema": {
  386. "type": "dict",
  387. "attrs": [
  388. {
  389. "variable": "type",
  390. "label": "Type",
  391. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  392. "schema": {
  393. "type": "string",
  394. "required": true,
  395. "default": "ix_volume",
  396. "enum": [
  397. {
  398. "value": "host_path",
  399. "description": "Host Path (Path that already exists on the system)"
  400. },
  401. {
  402. "value": "ix_volume",
  403. "description": "ixVolume (Dataset created automatically by the system)"
  404. }
  405. ]
  406. }
  407. },
  408. {
  409. "variable": "ix_volume_config",
  410. "label": "ixVolume Configuration",
  411. "description": "The configuration for the ixVolume dataset.",
  412. "schema": {
  413. "type": "dict",
  414. "show_if": [
  415. [
  416. "type",
  417. "=",
  418. "ix_volume"
  419. ]
  420. ],
  421. "$ref": [
  422. "normalize/ix_volume"
  423. ],
  424. "attrs": [
  425. {
  426. "variable": "acl_enable",
  427. "label": "Enable ACL",
  428. "description": "Enable ACL for the storage.",
  429. "schema": {
  430. "type": "boolean",
  431. "default": false
  432. }
  433. },
  434. {
  435. "variable": "dataset_name",
  436. "label": "Dataset Name",
  437. "description": "The name of the dataset to use for storage.",
  438. "schema": {
  439. "type": "string",
  440. "required": true,
  441. "hidden": true,
  442. "default": "config"
  443. }
  444. },
  445. {
  446. "variable": "acl_entries",
  447. "label": "ACL Configuration",
  448. "schema": {
  449. "type": "dict",
  450. "show_if": [
  451. [
  452. "acl_enable",
  453. "=",
  454. true
  455. ]
  456. ],
  457. "attrs": []
  458. }
  459. }
  460. ]
  461. }
  462. },
  463. {
  464. "variable": "host_path_config",
  465. "label": "Host Path Configuration",
  466. "schema": {
  467. "type": "dict",
  468. "show_if": [
  469. [
  470. "type",
  471. "=",
  472. "host_path"
  473. ]
  474. ],
  475. "attrs": [
  476. {
  477. "variable": "acl_enable",
  478. "label": "Enable ACL",
  479. "description": "Enable ACL for the storage.",
  480. "schema": {
  481. "type": "boolean",
  482. "default": false
  483. }
  484. },
  485. {
  486. "variable": "acl",
  487. "label": "ACL Configuration",
  488. "schema": {
  489. "type": "dict",
  490. "show_if": [
  491. [
  492. "acl_enable",
  493. "=",
  494. true
  495. ]
  496. ],
  497. "attrs": [],
  498. "$ref": [
  499. "normalize/acl"
  500. ]
  501. }
  502. },
  503. {
  504. "variable": "path",
  505. "label": "Host Path",
  506. "description": "The host path to use for storage.",
  507. "schema": {
  508. "type": "hostpath",
  509. "show_if": [
  510. [
  511. "acl_enable",
  512. "=",
  513. false
  514. ]
  515. ],
  516. "required": true
  517. }
  518. }
  519. ]
  520. }
  521. }
  522. ]
  523. }
  524. },
  525. {
  526. "variable": "data",
  527. "label": "Unifi Protect Backup Data Storage",
  528. "description": "The path to store Unifi Protect Backup Data.",
  529. "schema": {
  530. "type": "dict",
  531. "attrs": [
  532. {
  533. "variable": "type",
  534. "label": "Type",
  535. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  536. "schema": {
  537. "type": "string",
  538. "required": true,
  539. "default": "ix_volume",
  540. "enum": [
  541. {
  542. "value": "host_path",
  543. "description": "Host Path (Path that already exists on the system)"
  544. },
  545. {
  546. "value": "ix_volume",
  547. "description": "ixVolume (Dataset created automatically by the system)"
  548. }
  549. ]
  550. }
  551. },
  552. {
  553. "variable": "ix_volume_config",
  554. "label": "ixVolume Configuration",
  555. "description": "The configuration for the ixVolume dataset.",
  556. "schema": {
  557. "type": "dict",
  558. "show_if": [
  559. [
  560. "type",
  561. "=",
  562. "ix_volume"
  563. ]
  564. ],
  565. "$ref": [
  566. "normalize/ix_volume"
  567. ],
  568. "attrs": [
  569. {
  570. "variable": "acl_enable",
  571. "label": "Enable ACL",
  572. "description": "Enable ACL for the storage.",
  573. "schema": {
  574. "type": "boolean",
  575. "default": false
  576. }
  577. },
  578. {
  579. "variable": "dataset_name",
  580. "label": "Dataset Name",
  581. "description": "The name of the dataset to use for storage.",
  582. "schema": {
  583. "type": "string",
  584. "required": true,
  585. "hidden": true,
  586. "default": "data"
  587. }
  588. },
  589. {
  590. "variable": "acl_entries",
  591. "label": "ACL Configuration",
  592. "schema": {
  593. "type": "dict",
  594. "show_if": [
  595. [
  596. "acl_enable",
  597. "=",
  598. true
  599. ]
  600. ],
  601. "attrs": []
  602. }
  603. }
  604. ]
  605. }
  606. },
  607. {
  608. "variable": "host_path_config",
  609. "label": "Host Path Configuration",
  610. "schema": {
  611. "type": "dict",
  612. "show_if": [
  613. [
  614. "type",
  615. "=",
  616. "host_path"
  617. ]
  618. ],
  619. "attrs": [
  620. {
  621. "variable": "acl_enable",
  622. "label": "Enable ACL",
  623. "description": "Enable ACL for the storage.",
  624. "schema": {
  625. "type": "boolean",
  626. "default": false
  627. }
  628. },
  629. {
  630. "variable": "acl",
  631. "label": "ACL Configuration",
  632. "schema": {
  633. "type": "dict",
  634. "show_if": [
  635. [
  636. "acl_enable",
  637. "=",
  638. true
  639. ]
  640. ],
  641. "attrs": [],
  642. "$ref": [
  643. "normalize/acl"
  644. ]
  645. }
  646. },
  647. {
  648. "variable": "path",
  649. "label": "Host Path",
  650. "description": "The host path to use for storage.",
  651. "schema": {
  652. "type": "hostpath",
  653. "show_if": [
  654. [
  655. "acl_enable",
  656. "=",
  657. false
  658. ]
  659. ],
  660. "required": true
  661. }
  662. }
  663. ]
  664. }
  665. }
  666. ]
  667. }
  668. },
  669. {
  670. "variable": "additional_storage",
  671. "label": "Additional Storage",
  672. "schema": {
  673. "type": "list",
  674. "default": [],
  675. "items": [
  676. {
  677. "variable": "storageEntry",
  678. "label": "Storage Entry",
  679. "schema": {
  680. "type": "dict",
  681. "attrs": [
  682. {
  683. "variable": "type",
  684. "label": "Type",
  685. "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",
  686. "schema": {
  687. "type": "string",
  688. "required": true,
  689. "default": "ix_volume",
  690. "enum": [
  691. {
  692. "value": "host_path",
  693. "description": "Host Path (Path that already exists on the system)"
  694. },
  695. {
  696. "value": "ix_volume",
  697. "description": "ixVolume (Dataset created automatically by the system)"
  698. },
  699. {
  700. "value": "cifs",
  701. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  702. }
  703. ]
  704. }
  705. },
  706. {
  707. "variable": "read_only",
  708. "label": "Read Only",
  709. "description": "Mount the volume as read only.",
  710. "schema": {
  711. "type": "boolean",
  712. "default": false
  713. }
  714. },
  715. {
  716. "variable": "mount_path",
  717. "label": "Mount Path",
  718. "description": "The path inside the container to mount the storage.",
  719. "schema": {
  720. "type": "path",
  721. "required": true
  722. }
  723. },
  724. {
  725. "variable": "host_path_config",
  726. "label": "Host Path Configuration",
  727. "schema": {
  728. "type": "dict",
  729. "show_if": [
  730. [
  731. "type",
  732. "=",
  733. "host_path"
  734. ]
  735. ],
  736. "attrs": [
  737. {
  738. "variable": "acl_enable",
  739. "label": "Enable ACL",
  740. "description": "Enable ACL for the storage.",
  741. "schema": {
  742. "type": "boolean",
  743. "default": false
  744. }
  745. },
  746. {
  747. "variable": "acl",
  748. "label": "ACL Configuration",
  749. "schema": {
  750. "type": "dict",
  751. "show_if": [
  752. [
  753. "acl_enable",
  754. "=",
  755. true
  756. ]
  757. ],
  758. "attrs": [],
  759. "$ref": [
  760. "normalize/acl"
  761. ]
  762. }
  763. },
  764. {
  765. "variable": "path",
  766. "label": "Host Path",
  767. "description": "The host path to use for storage.",
  768. "schema": {
  769. "type": "hostpath",
  770. "show_if": [
  771. [
  772. "acl_enable",
  773. "=",
  774. false
  775. ]
  776. ],
  777. "required": true
  778. }
  779. }
  780. ]
  781. }
  782. },
  783. {
  784. "variable": "ix_volume_config",
  785. "label": "ixVolume Configuration",
  786. "description": "The configuration for the ixVolume dataset.",
  787. "schema": {
  788. "type": "dict",
  789. "show_if": [
  790. [
  791. "type",
  792. "=",
  793. "ix_volume"
  794. ]
  795. ],
  796. "$ref": [
  797. "normalize/ix_volume"
  798. ],
  799. "attrs": [
  800. {
  801. "variable": "acl_enable",
  802. "label": "Enable ACL",
  803. "description": "Enable ACL for the storage.",
  804. "schema": {
  805. "type": "boolean",
  806. "default": false
  807. }
  808. },
  809. {
  810. "variable": "dataset_name",
  811. "label": "Dataset Name",
  812. "description": "The name of the dataset to use for storage.",
  813. "schema": {
  814. "type": "string",
  815. "required": true,
  816. "default": "storage_entry"
  817. }
  818. },
  819. {
  820. "variable": "acl_entries",
  821. "label": "ACL Configuration",
  822. "schema": {
  823. "type": "dict",
  824. "show_if": [
  825. [
  826. "acl_enable",
  827. "=",
  828. true
  829. ]
  830. ],
  831. "attrs": [],
  832. "$ref": [
  833. "normalize/acl"
  834. ]
  835. }
  836. }
  837. ]
  838. }
  839. },
  840. {
  841. "variable": "cifs_config",
  842. "label": "SMB Configuration",
  843. "description": "The configuration for the SMB dataset.",
  844. "schema": {
  845. "type": "dict",
  846. "show_if": [
  847. [
  848. "type",
  849. "=",
  850. "cifs"
  851. ]
  852. ],
  853. "attrs": [
  854. {
  855. "variable": "server",
  856. "label": "Server",
  857. "description": "The server to mount the SMB share.",
  858. "schema": {
  859. "type": "string",
  860. "required": true
  861. }
  862. },
  863. {
  864. "variable": "path",
  865. "label": "Path",
  866. "description": "The path to mount the SMB share.",
  867. "schema": {
  868. "type": "string",
  869. "required": true
  870. }
  871. },
  872. {
  873. "variable": "username",
  874. "label": "Username",
  875. "description": "The username to use for the SMB share.",
  876. "schema": {
  877. "type": "string",
  878. "required": true
  879. }
  880. },
  881. {
  882. "variable": "password",
  883. "label": "Password",
  884. "description": "The password to use for the SMB share.",
  885. "schema": {
  886. "type": "string",
  887. "required": true,
  888. "private": true
  889. }
  890. },
  891. {
  892. "variable": "domain",
  893. "label": "Domain",
  894. "description": "The domain to use for the SMB share.",
  895. "schema": {
  896. "type": "string"
  897. }
  898. }
  899. ]
  900. }
  901. }
  902. ]
  903. }
  904. }
  905. ]
  906. }
  907. }
  908. ]
  909. }
  910. },
  911. {
  912. "variable": "labels",
  913. "label": "",
  914. "group": "Labels Configuration",
  915. "schema": {
  916. "type": "list",
  917. "default": [],
  918. "items": [
  919. {
  920. "variable": "label",
  921. "label": "Label",
  922. "schema": {
  923. "type": "dict",
  924. "attrs": [
  925. {
  926. "variable": "key",
  927. "label": "Key",
  928. "schema": {
  929. "type": "string",
  930. "required": true
  931. }
  932. },
  933. {
  934. "variable": "value",
  935. "label": "Value",
  936. "schema": {
  937. "type": "string",
  938. "required": true
  939. }
  940. },
  941. {
  942. "variable": "containers",
  943. "label": "Containers",
  944. "description": "Containers where the label should be applied",
  945. "schema": {
  946. "type": "list",
  947. "items": [
  948. {
  949. "variable": "container",
  950. "label": "Container",
  951. "schema": {
  952. "type": "string",
  953. "required": true,
  954. "enum": [
  955. {
  956. "value": "unifi-protect-backup",
  957. "description": "unifi-protect-backup"
  958. }
  959. ]
  960. }
  961. }
  962. ]
  963. }
  964. }
  965. ]
  966. }
  967. }
  968. ]
  969. }
  970. },
  971. {
  972. "variable": "resources",
  973. "label": "",
  974. "group": "Resources Configuration",
  975. "schema": {
  976. "type": "dict",
  977. "attrs": [
  978. {
  979. "variable": "limits",
  980. "label": "Limits",
  981. "schema": {
  982. "type": "dict",
  983. "attrs": [
  984. {
  985. "variable": "cpus",
  986. "label": "CPUs",
  987. "description": "CPUs limit for Unifi Protect Backup.",
  988. "schema": {
  989. "type": "int",
  990. "default": 2,
  991. "required": true
  992. }
  993. },
  994. {
  995. "variable": "memory",
  996. "label": "Memory (in MB)",
  997. "description": "Memory limit for Unifi Protect Backup.",
  998. "schema": {
  999. "type": "int",
  1000. "default": 4096,
  1001. "required": true
  1002. }
  1003. }
  1004. ]
  1005. }
  1006. }
  1007. ]
  1008. }
  1009. }
  1010. ]
  1011. },
  1012. "readme": "<h1>Unifi Protect Backup</h1> <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>",
  1013. "changelog": null,
  1014. "chart_metadata": {
  1015. "app_version": "0.14.0",
  1016. "capabilities": [
  1017. {
  1018. "description": "Unifi Protect Backup is able to change file ownership arbitrarily",
  1019. "name": "CHOWN"
  1020. },
  1021. {
  1022. "description": "Unifi Protect Backup is able to bypass permission checks for file operations",
  1023. "name": "FOWNER"
  1024. },
  1025. {
  1026. "description": "Unifi Protect Backup is able to change group ID of processes",
  1027. "name": "SETGID"
  1028. },
  1029. {
  1030. "description": "Unifi Protect Backup is able to change user ID of processes",
  1031. "name": "SETUID"
  1032. }
  1033. ],
  1034. "categories": [
  1035. "storage"
  1036. ],
  1037. "changelog_url": "https://github.com/ep1cman/unifi-protect-backup/blob/main/CHANGELOG.md",
  1038. "date_added": "2024-08-12",
  1039. "description": "Unifi Protect Backup is a python based tool for backing up UniFi Protect event clips as they occur.",
  1040. "home": "https://github.com/ep1cman/unifi-protect-backup",
  1041. "host_mounts": [],
  1042. "icon": "https://media.sys.truenas.net/apps/unifi-protect-backup/icons/icon.svg",
  1043. "keywords": [
  1044. "backup",
  1045. "unifi-protect"
  1046. ],
  1047. "lib_version": "2.1.49",
  1048. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1049. "maintainers": [
  1050. {
  1051. "email": "dev@ixsystems.com",
  1052. "name": "truenas",
  1053. "url": "https://www.truenas.com/"
  1054. }
  1055. ],
  1056. "name": "unifi-protect-backup",
  1057. "run_as_context": [
  1058. {
  1059. "description": "Unifi Protect Backup runs as root user.",
  1060. "gid": 0,
  1061. "group_name": "root",
  1062. "uid": 0,
  1063. "user_name": "root"
  1064. }
  1065. ],
  1066. "screenshots": [],
  1067. "sources": [
  1068. "https://github.com/ep1cman/unifi-protect-backup",
  1069. "https://github.com/ep1cman/unifi-protect-backup/pkgs/container/unifi-protect-backup"
  1070. ],
  1071. "title": "Unifi Protect Backup",
  1072. "train": "community",
  1073. "version": "1.2.7"
  1074. }
  1075. }
  1076. }