app_versions.json 95 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602
  1. {
  2. "2.0.25": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/stable/nextcloud/2.0.25",
  7. "last_update": "2025-09-05 14:25:56",
  8. "required_features": [],
  9. "human_version": "31.0.8_2.0.25",
  10. "version": "2.0.25",
  11. "app_metadata": {
  12. "annotations": {
  13. "min_scale_version": "24.10.2.2"
  14. },
  15. "app_version": "31.0.8",
  16. "capabilities": [
  17. {
  18. "description": "Cron, Nextcloud, Nginx are able to change file ownership arbitrarily",
  19. "name": "CHOWN"
  20. },
  21. {
  22. "description": "Cron, Nextcloud, Nginx are able to bypass file permission checks",
  23. "name": "DAC_OVERRIDE"
  24. },
  25. {
  26. "description": "Cron, Nextcloud, Nginx are able to bypass permission checks for file operations",
  27. "name": "FOWNER"
  28. },
  29. {
  30. "description": "Cron, Nextcloud, Nginx are able to bind to privileged ports (< 1024)",
  31. "name": "NET_BIND_SERVICE"
  32. },
  33. {
  34. "description": "Cron, Nextcloud, Nginx are able to use raw and packet sockets",
  35. "name": "NET_RAW"
  36. },
  37. {
  38. "description": "Cron, Nextcloud, Nginx are able to change group ID of processes",
  39. "name": "SETGID"
  40. },
  41. {
  42. "description": "Cron, Nextcloud, Nginx are able to change user ID of processes",
  43. "name": "SETUID"
  44. },
  45. {
  46. "description": "Imaginary is able to modify process scheduling priority",
  47. "name": "SYS_NICE"
  48. }
  49. ],
  50. "categories": [
  51. "productivity"
  52. ],
  53. "changelog_url": "https://nextcloud.com/changelog/",
  54. "date_added": "2024-08-07",
  55. "description": "A file sharing server that puts the control and security of your own data back into your hands.",
  56. "home": "https://nextcloud.com/",
  57. "host_mounts": [],
  58. "icon": "https://media.sys.truenas.net/apps/nextcloud/icons/icon.svg",
  59. "keywords": [
  60. "nextcloud",
  61. "storage",
  62. "sync",
  63. "http",
  64. "web",
  65. "php"
  66. ],
  67. "lib_version": "2.1.49",
  68. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  69. "maintainers": [
  70. {
  71. "email": "dev@ixsystems.com",
  72. "name": "truenas",
  73. "url": "https://www.truenas.com/"
  74. }
  75. ],
  76. "name": "nextcloud",
  77. "run_as_context": [
  78. {
  79. "description": "Nextcloud runs as root user.",
  80. "gid": 0,
  81. "group_name": "root",
  82. "uid": 0,
  83. "user_name": "root"
  84. },
  85. {
  86. "description": "Postgres runs as non-root user.",
  87. "gid": 999,
  88. "group_name": "postgres",
  89. "uid": 999,
  90. "user_name": "postgres"
  91. },
  92. {
  93. "description": "Redis runs as any non-root user.",
  94. "gid": 568,
  95. "group_name": "redis",
  96. "uid": 568,
  97. "user_name": "redis"
  98. },
  99. {
  100. "description": "Nginx runs as root user.",
  101. "gid": 0,
  102. "group_name": "root",
  103. "uid": 0,
  104. "user_name": "root"
  105. },
  106. {
  107. "description": "Imaginary runs as non-root user.",
  108. "gid": 568,
  109. "group_name": "imaginary",
  110. "uid": 568,
  111. "user_name": "imaginary"
  112. }
  113. ],
  114. "screenshots": [
  115. "https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot1.png",
  116. "https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot2.png",
  117. "https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot3.png"
  118. ],
  119. "sources": [
  120. "https://github.com/nextcloud/docker"
  121. ],
  122. "title": "Nextcloud",
  123. "train": "stable",
  124. "version": "2.0.25"
  125. },
  126. "schema": {
  127. "groups": [
  128. {
  129. "name": "Nextcloud Configuration",
  130. "description": "Configure Nextcloud"
  131. },
  132. {
  133. "name": "Network Configuration",
  134. "description": "Configure Network for Nextcloud"
  135. },
  136. {
  137. "name": "Storage Configuration",
  138. "description": "Configure Storage for Nextcloud"
  139. },
  140. {
  141. "name": "Labels Configuration",
  142. "description": "Configure Labels for Nextcloud"
  143. },
  144. {
  145. "name": "Resources Configuration",
  146. "description": "Configure Resources for Nextcloud"
  147. }
  148. ],
  149. "questions": [
  150. {
  151. "variable": "nextcloud",
  152. "label": "",
  153. "group": "Nextcloud Configuration",
  154. "schema": {
  155. "type": "dict",
  156. "attrs": [
  157. {
  158. "variable": "postgres_image_selector",
  159. "label": "Postgres Image (CAUTION)",
  160. "description": "If you are changing this after the postgres directory has been initialized,</br>\nSTOP! and make sure you have a backup of your data.</br>\nChanging this will trigger an one way database upgrade.</br>\nYou can only select newer versions of postgres.</br>\nSelecting an older version will refuse to start.</br>\nIf something goes wrong, you will have to restore from backup.\n",
  161. "schema": {
  162. "type": "string",
  163. "default": "postgres_17_image",
  164. "required": true,
  165. "enum": [
  166. {
  167. "value": "postgres_13_image",
  168. "description": "Postgres 13"
  169. },
  170. {
  171. "value": "postgres_17_image",
  172. "description": "Postgres 17"
  173. }
  174. ]
  175. }
  176. },
  177. {
  178. "variable": "admin_user",
  179. "label": "Admin User",
  180. "description": "The admin user for Nextcloud.",
  181. "schema": {
  182. "type": "string",
  183. "default": "",
  184. "required": true
  185. }
  186. },
  187. {
  188. "variable": "admin_password",
  189. "label": "Admin Password",
  190. "description": "The admin password for Nextcloud.",
  191. "schema": {
  192. "type": "string",
  193. "default": "",
  194. "required": true,
  195. "private": true
  196. }
  197. },
  198. {
  199. "variable": "apt_packages",
  200. "label": "APT Packages",
  201. "description": "The APT packages to install.</br>\nFor additional packages, please open an issue on GitHub.</br>\nSources and documentation links can help expedite the process.\n",
  202. "schema": {
  203. "type": "list",
  204. "default": [],
  205. "items": [
  206. {
  207. "variable": "package",
  208. "label": "Package",
  209. "schema": {
  210. "type": "string",
  211. "required": true,
  212. "enum": [
  213. {
  214. "value": "ffmpeg",
  215. "description": "ffmpeg"
  216. },
  217. {
  218. "value": "smbclient",
  219. "description": "smbclient"
  220. },
  221. {
  222. "value": "ocrmypdf",
  223. "description": "ocrmypdf"
  224. },
  225. {
  226. "value": "libreoffice",
  227. "description": "libreoffice"
  228. }
  229. ]
  230. }
  231. }
  232. ]
  233. }
  234. },
  235. {
  236. "variable": "tesseract_languages",
  237. "label": "Tesseract Language Codes",
  238. "description": "The tesseract languages to install for OCRmypdf.</br>\nSee a list of language codes here https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html.</br>\nTyping a wrong language code will block the container from starting.</br>\nOnly takes effect if ocrmypdf is selected above.\n",
  239. "schema": {
  240. "type": "list",
  241. "default": [],
  242. "items": [
  243. {
  244. "variable": "language",
  245. "label": "Language",
  246. "schema": {
  247. "type": "string",
  248. "min_length": 3,
  249. "max_length": 7,
  250. "required": true
  251. }
  252. }
  253. ]
  254. }
  255. },
  256. {
  257. "variable": "imaginary",
  258. "label": "Imaginary",
  259. "description": "Imaginary can help improve performance for generating image previews.</br>\nPlease see https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#previews for more information.</br>\n",
  260. "schema": {
  261. "type": "dict",
  262. "attrs": [
  263. {
  264. "variable": "enabled",
  265. "label": "Enabled",
  266. "description": "Enable Imaginary",
  267. "schema": {
  268. "type": "boolean",
  269. "default": false
  270. }
  271. }
  272. ]
  273. }
  274. },
  275. {
  276. "variable": "host",
  277. "label": "Host",
  278. "description": "Nextcloud host to create application URLs</br>\nExamples: </br>\ncloud.domain.com:30001</br>\ncloud.domain.com (if you use port 443 externally)</br>\n192.168.1.100:9001 (replace ip and port with your own)</br></br>\nThis will be appended to the trusted domains list, but changing that will not remove it from the list.</br>\n",
  279. "schema": {
  280. "type": "string",
  281. "default": ""
  282. }
  283. },
  284. {
  285. "variable": "data_dir_path",
  286. "label": "Data Directory Path",
  287. "description": "Configures the data directory where Nextcloud stores all files from the users.\nThe path refers to the path inside the container</br>\nIt is recommended to keep the default value. (/var/www/html/data)\n",
  288. "schema": {
  289. "type": "string",
  290. "default": "/var/www/html/data",
  291. "required": true
  292. }
  293. },
  294. {
  295. "variable": "redis_password",
  296. "label": "Redis Password",
  297. "description": "The password for Redis.",
  298. "schema": {
  299. "type": "string",
  300. "default": "",
  301. "required": true,
  302. "private": true
  303. }
  304. },
  305. {
  306. "variable": "db_user",
  307. "label": "Database User",
  308. "description": "The user for the database.",
  309. "schema": {
  310. "type": "string",
  311. "default": "nextcloud",
  312. "required": true,
  313. "private": true,
  314. "hidden": true
  315. }
  316. },
  317. {
  318. "variable": "db_password",
  319. "label": "Database Password",
  320. "description": "The password for the database.",
  321. "schema": {
  322. "type": "string",
  323. "default": "",
  324. "required": true,
  325. "private": true
  326. }
  327. },
  328. {
  329. "variable": "php_upload_limit",
  330. "label": "PHP Upload Limit (in GB)",
  331. "description": "Applies the timeout to the following settings:</br>\n- client_max_body_size in nginx</br>\n- post_max_size and upload_max_filesize in php</br>\n",
  332. "schema": {
  333. "type": "int",
  334. "min": 1,
  335. "default": 3,
  336. "required": true
  337. }
  338. },
  339. {
  340. "variable": "max_execution_time",
  341. "label": "Max Execution Time (in seconds)",
  342. "description": "The max execution time for Nextcloud.",
  343. "schema": {
  344. "type": "int",
  345. "min": 30,
  346. "default": 30,
  347. "required": true
  348. }
  349. },
  350. {
  351. "variable": "php_memory_limit",
  352. "label": "PHP Memory Limit (in MB)",
  353. "description": "The PHP memory limit.",
  354. "schema": {
  355. "type": "int",
  356. "min": 128,
  357. "max": 4096,
  358. "default": 512,
  359. "required": true
  360. }
  361. },
  362. {
  363. "variable": "op_cache_interned_strings_buffer",
  364. "label": "Op Cache Interned Strings Buffer (in MB)",
  365. "description": "The Op Cache interned strings buffer.",
  366. "schema": {
  367. "type": "int",
  368. "min": 32,
  369. "max": 1024,
  370. "default": 32,
  371. "required": true
  372. }
  373. },
  374. {
  375. "variable": "op_cache_memory_consumption",
  376. "label": "Op Cache Memory Consumption (in MB)",
  377. "description": "The Op Cache memory consumption.",
  378. "schema": {
  379. "type": "int",
  380. "min": 128,
  381. "max": 1024,
  382. "default": 128,
  383. "required": true
  384. }
  385. },
  386. {
  387. "variable": "cron",
  388. "label": "Cron",
  389. "description": "The cron schedule.",
  390. "schema": {
  391. "type": "dict",
  392. "attrs": [
  393. {
  394. "variable": "enabled",
  395. "label": "Enabled",
  396. "description": "Enable cron.",
  397. "schema": {
  398. "type": "boolean",
  399. "default": false
  400. }
  401. },
  402. {
  403. "variable": "schedule",
  404. "label": "Schedule",
  405. "description": "The cron schedule.",
  406. "schema": {
  407. "type": "string",
  408. "show_if": [
  409. [
  410. "enabled",
  411. "=",
  412. true
  413. ]
  414. ],
  415. "default": "*/5 * * * *",
  416. "required": true
  417. }
  418. }
  419. ]
  420. }
  421. },
  422. {
  423. "variable": "additional_envs",
  424. "label": "Additional Environment Variables",
  425. "schema": {
  426. "type": "list",
  427. "default": [],
  428. "items": [
  429. {
  430. "variable": "env",
  431. "label": "Environment Variable",
  432. "schema": {
  433. "type": "dict",
  434. "attrs": [
  435. {
  436. "variable": "name",
  437. "label": "Name",
  438. "schema": {
  439. "type": "string",
  440. "required": true
  441. }
  442. },
  443. {
  444. "variable": "value",
  445. "label": "Value",
  446. "schema": {
  447. "type": "string"
  448. }
  449. }
  450. ]
  451. }
  452. }
  453. ]
  454. }
  455. }
  456. ]
  457. }
  458. },
  459. {
  460. "variable": "network",
  461. "label": "",
  462. "group": "Network Configuration",
  463. "schema": {
  464. "type": "dict",
  465. "attrs": [
  466. {
  467. "variable": "web_port",
  468. "label": "WebUI Port",
  469. "schema": {
  470. "type": "dict",
  471. "attrs": [
  472. {
  473. "variable": "bind_mode",
  474. "label": "Port Bind Mode",
  475. "description": "The port bind mode.</br>\n- Publish: The port will be published on the host for external access.</br>\n- Expose: The port will be exposed for inter-container communication.</br>\n- None: The port will not be exposed or published.</br>\nNote: If the Dockerfile defines an EXPOSE directive,\nthe port will still be exposed for inter-container communication regardless of this setting.\n",
  476. "schema": {
  477. "type": "string",
  478. "default": "published",
  479. "enum": [
  480. {
  481. "value": "published",
  482. "description": "Publish port on the host for external access"
  483. },
  484. {
  485. "value": "exposed",
  486. "description": "Expose port for inter-container communication"
  487. },
  488. {
  489. "value": "",
  490. "description": "None"
  491. }
  492. ]
  493. }
  494. },
  495. {
  496. "variable": "port_number",
  497. "label": "Port Number",
  498. "schema": {
  499. "type": "int",
  500. "show_if": [
  501. [
  502. "bind_mode",
  503. "=",
  504. "published"
  505. ]
  506. ],
  507. "default": 30027,
  508. "min": 1,
  509. "max": 65535,
  510. "required": true
  511. }
  512. },
  513. {
  514. "variable": "host_ips",
  515. "label": "Host IPs",
  516. "description": "IPs on the host to bind this port",
  517. "schema": {
  518. "type": "list",
  519. "show_if": [
  520. [
  521. "bind_mode",
  522. "=",
  523. "published"
  524. ]
  525. ],
  526. "default": [],
  527. "items": [
  528. {
  529. "variable": "host_ip",
  530. "label": "Host IP",
  531. "schema": {
  532. "type": "string",
  533. "required": true,
  534. "$ref": [
  535. "definitions/node_bind_ip"
  536. ]
  537. }
  538. }
  539. ]
  540. }
  541. }
  542. ]
  543. }
  544. },
  545. {
  546. "variable": "dns_opts",
  547. "label": "DNS Options",
  548. "description": "DNS options for the container.</br>\nFormat: key:value</br>\nExample: attempts:3\n",
  549. "schema": {
  550. "type": "list",
  551. "default": [],
  552. "items": [
  553. {
  554. "variable": "option",
  555. "label": "Option",
  556. "schema": {
  557. "type": "string",
  558. "required": true
  559. }
  560. }
  561. ]
  562. }
  563. },
  564. {
  565. "variable": "certificate_id",
  566. "label": "Certificate ID",
  567. "description": "The certificate ID to use for Nextcloud.",
  568. "schema": {
  569. "type": "int",
  570. "null": true,
  571. "$ref": [
  572. "definitions/certificate"
  573. ]
  574. }
  575. },
  576. {
  577. "variable": "nginx",
  578. "label": "Nginx Configuration",
  579. "description": "The configuration for the Nginx.",
  580. "schema": {
  581. "type": "dict",
  582. "show_if": [
  583. [
  584. "certificate_id",
  585. "!=",
  586. null
  587. ]
  588. ],
  589. "attrs": [
  590. {
  591. "variable": "proxy_timeout",
  592. "label": "Proxy Timeout",
  593. "description": "Applies the timeout to the following settings:</br>\n- proxy_connect_timeout</br>\n- proxy_send_timeout</br>\n- proxy_read_timeout</br>\n",
  594. "schema": {
  595. "type": "int",
  596. "min": 30,
  597. "default": 60,
  598. "required": true
  599. }
  600. },
  601. {
  602. "variable": "use_different_port",
  603. "label": "Use different port for URL rewrites",
  604. "description": "If enabled, the URL rewrite will use [Access Port] defined below instead of the [Node Port].</br>\nNote that Nextcloud will still listen on the [Node Port]. (Default 9001)\n",
  605. "schema": {
  606. "type": "boolean",
  607. "default": false
  608. }
  609. },
  610. {
  611. "variable": "external_port",
  612. "label": "External Port",
  613. "description": "The external port for Nginx.",
  614. "schema": {
  615. "type": "int",
  616. "default": 443,
  617. "min": 443,
  618. "max": 65535,
  619. "show_if": [
  620. [
  621. "use_different_port",
  622. "=",
  623. true
  624. ]
  625. ],
  626. "required": true
  627. }
  628. },
  629. {
  630. "variable": "custom_confs",
  631. "label": "Custom Nginx Configurations",
  632. "description": "List of custom Nginx configurations.",
  633. "schema": {
  634. "type": "list",
  635. "default": [],
  636. "items": [
  637. {
  638. "variable": "conf",
  639. "label": "Configuration",
  640. "schema": {
  641. "type": "hostpath",
  642. "required": true
  643. }
  644. }
  645. ]
  646. }
  647. }
  648. ]
  649. }
  650. }
  651. ]
  652. }
  653. },
  654. {
  655. "variable": "storage",
  656. "label": "",
  657. "group": "Storage Configuration",
  658. "schema": {
  659. "type": "dict",
  660. "attrs": [
  661. {
  662. "variable": "html",
  663. "label": "Nextcloud AppData Storage (HTML, Custom Themes, Apps, etc.)",
  664. "description": "The path to store Nextcloud HTML and AppData.",
  665. "schema": {
  666. "type": "dict",
  667. "attrs": [
  668. {
  669. "variable": "type",
  670. "label": "Type",
  671. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  672. "schema": {
  673. "type": "string",
  674. "required": true,
  675. "default": "ix_volume",
  676. "enum": [
  677. {
  678. "value": "host_path",
  679. "description": "Host Path (Path that already exists on the system)"
  680. },
  681. {
  682. "value": "ix_volume",
  683. "description": "ixVolume (Dataset created automatically by the system)"
  684. }
  685. ]
  686. }
  687. },
  688. {
  689. "variable": "ix_volume_config",
  690. "label": "ixVolume Configuration",
  691. "description": "The configuration for the ixVolume dataset.",
  692. "schema": {
  693. "type": "dict",
  694. "show_if": [
  695. [
  696. "type",
  697. "=",
  698. "ix_volume"
  699. ]
  700. ],
  701. "$ref": [
  702. "normalize/ix_volume"
  703. ],
  704. "attrs": [
  705. {
  706. "variable": "acl_enable",
  707. "label": "Enable ACL",
  708. "description": "Enable ACL for the storage.",
  709. "schema": {
  710. "type": "boolean",
  711. "default": false
  712. }
  713. },
  714. {
  715. "variable": "dataset_name",
  716. "label": "Dataset Name",
  717. "description": "The name of the dataset to use for storage.",
  718. "schema": {
  719. "type": "string",
  720. "required": true,
  721. "hidden": true,
  722. "default": "html"
  723. }
  724. },
  725. {
  726. "variable": "acl_entries",
  727. "label": "ACL Configuration",
  728. "schema": {
  729. "type": "dict",
  730. "show_if": [
  731. [
  732. "acl_enable",
  733. "=",
  734. true
  735. ]
  736. ],
  737. "attrs": []
  738. }
  739. }
  740. ]
  741. }
  742. },
  743. {
  744. "variable": "host_path_config",
  745. "label": "Host Path Configuration",
  746. "schema": {
  747. "type": "dict",
  748. "show_if": [
  749. [
  750. "type",
  751. "=",
  752. "host_path"
  753. ]
  754. ],
  755. "attrs": [
  756. {
  757. "variable": "acl_enable",
  758. "label": "Enable ACL",
  759. "description": "Enable ACL for the storage.",
  760. "schema": {
  761. "type": "boolean",
  762. "default": false
  763. }
  764. },
  765. {
  766. "variable": "acl",
  767. "label": "ACL Configuration",
  768. "schema": {
  769. "type": "dict",
  770. "show_if": [
  771. [
  772. "acl_enable",
  773. "=",
  774. true
  775. ]
  776. ],
  777. "attrs": [],
  778. "$ref": [
  779. "normalize/acl"
  780. ]
  781. }
  782. },
  783. {
  784. "variable": "path",
  785. "label": "Host Path",
  786. "description": "The host path to use for storage.",
  787. "schema": {
  788. "type": "hostpath",
  789. "show_if": [
  790. [
  791. "acl_enable",
  792. "=",
  793. false
  794. ]
  795. ],
  796. "required": true
  797. }
  798. }
  799. ]
  800. }
  801. }
  802. ]
  803. }
  804. },
  805. {
  806. "variable": "data",
  807. "label": "Nextcloud User Data Storage",
  808. "description": "The path to store Nextcloud User Data.",
  809. "schema": {
  810. "type": "dict",
  811. "attrs": [
  812. {
  813. "variable": "type",
  814. "label": "Type",
  815. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  816. "schema": {
  817. "type": "string",
  818. "required": true,
  819. "default": "ix_volume",
  820. "enum": [
  821. {
  822. "value": "host_path",
  823. "description": "Host Path (Path that already exists on the system)"
  824. },
  825. {
  826. "value": "ix_volume",
  827. "description": "ixVolume (Dataset created automatically by the system)"
  828. }
  829. ]
  830. }
  831. },
  832. {
  833. "variable": "ix_volume_config",
  834. "label": "ixVolume Configuration",
  835. "description": "The configuration for the ixVolume dataset.",
  836. "schema": {
  837. "type": "dict",
  838. "show_if": [
  839. [
  840. "type",
  841. "=",
  842. "ix_volume"
  843. ]
  844. ],
  845. "$ref": [
  846. "normalize/ix_volume"
  847. ],
  848. "attrs": [
  849. {
  850. "variable": "acl_enable",
  851. "label": "Enable ACL",
  852. "description": "Enable ACL for the storage.",
  853. "schema": {
  854. "type": "boolean",
  855. "default": false
  856. }
  857. },
  858. {
  859. "variable": "dataset_name",
  860. "label": "Dataset Name",
  861. "description": "The name of the dataset to use for storage.",
  862. "schema": {
  863. "type": "string",
  864. "required": true,
  865. "hidden": true,
  866. "default": "data"
  867. }
  868. },
  869. {
  870. "variable": "acl_entries",
  871. "label": "ACL Configuration",
  872. "schema": {
  873. "type": "dict",
  874. "show_if": [
  875. [
  876. "acl_enable",
  877. "=",
  878. true
  879. ]
  880. ],
  881. "attrs": []
  882. }
  883. }
  884. ]
  885. }
  886. },
  887. {
  888. "variable": "host_path_config",
  889. "label": "Host Path Configuration",
  890. "schema": {
  891. "type": "dict",
  892. "show_if": [
  893. [
  894. "type",
  895. "=",
  896. "host_path"
  897. ]
  898. ],
  899. "attrs": [
  900. {
  901. "variable": "acl_enable",
  902. "label": "Enable ACL",
  903. "description": "Enable ACL for the storage.",
  904. "schema": {
  905. "type": "boolean",
  906. "default": false
  907. }
  908. },
  909. {
  910. "variable": "acl",
  911. "label": "ACL Configuration",
  912. "schema": {
  913. "type": "dict",
  914. "show_if": [
  915. [
  916. "acl_enable",
  917. "=",
  918. true
  919. ]
  920. ],
  921. "attrs": [],
  922. "$ref": [
  923. "normalize/acl"
  924. ]
  925. }
  926. },
  927. {
  928. "variable": "path",
  929. "label": "Host Path",
  930. "description": "The host path to use for storage.",
  931. "schema": {
  932. "type": "hostpath",
  933. "show_if": [
  934. [
  935. "acl_enable",
  936. "=",
  937. false
  938. ]
  939. ],
  940. "required": true
  941. }
  942. }
  943. ]
  944. }
  945. }
  946. ]
  947. }
  948. },
  949. {
  950. "variable": "postgres_data",
  951. "label": "Nextcloud Postgres Data Storage",
  952. "description": "The path to store Nextcloud Postgres Data.",
  953. "schema": {
  954. "type": "dict",
  955. "attrs": [
  956. {
  957. "variable": "type",
  958. "label": "Type",
  959. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  960. "schema": {
  961. "type": "string",
  962. "required": true,
  963. "default": "ix_volume",
  964. "enum": [
  965. {
  966. "value": "host_path",
  967. "description": "Host Path (Path that already exists on the system)"
  968. },
  969. {
  970. "value": "ix_volume",
  971. "description": "ixVolume (Dataset created automatically by the system)"
  972. }
  973. ]
  974. }
  975. },
  976. {
  977. "variable": "ix_volume_config",
  978. "label": "ixVolume Configuration",
  979. "description": "The configuration for the ixVolume dataset.",
  980. "schema": {
  981. "type": "dict",
  982. "show_if": [
  983. [
  984. "type",
  985. "=",
  986. "ix_volume"
  987. ]
  988. ],
  989. "$ref": [
  990. "normalize/ix_volume"
  991. ],
  992. "attrs": [
  993. {
  994. "variable": "acl_enable",
  995. "label": "Enable ACL",
  996. "description": "Enable ACL for the storage.",
  997. "schema": {
  998. "type": "boolean",
  999. "default": false
  1000. }
  1001. },
  1002. {
  1003. "variable": "dataset_name",
  1004. "label": "Dataset Name",
  1005. "description": "The name of the dataset to use for storage.",
  1006. "schema": {
  1007. "type": "string",
  1008. "required": true,
  1009. "hidden": true,
  1010. "default": "postgres_data"
  1011. }
  1012. },
  1013. {
  1014. "variable": "acl_entries",
  1015. "label": "ACL Configuration",
  1016. "schema": {
  1017. "type": "dict",
  1018. "show_if": [
  1019. [
  1020. "acl_enable",
  1021. "=",
  1022. true
  1023. ]
  1024. ],
  1025. "attrs": []
  1026. }
  1027. }
  1028. ]
  1029. }
  1030. },
  1031. {
  1032. "variable": "host_path_config",
  1033. "label": "Host Path Configuration",
  1034. "schema": {
  1035. "type": "dict",
  1036. "show_if": [
  1037. [
  1038. "type",
  1039. "=",
  1040. "host_path"
  1041. ]
  1042. ],
  1043. "attrs": [
  1044. {
  1045. "variable": "acl_enable",
  1046. "label": "Enable ACL",
  1047. "description": "Enable ACL for the storage.",
  1048. "schema": {
  1049. "type": "boolean",
  1050. "default": false
  1051. }
  1052. },
  1053. {
  1054. "variable": "acl",
  1055. "label": "ACL Configuration",
  1056. "schema": {
  1057. "type": "dict",
  1058. "show_if": [
  1059. [
  1060. "acl_enable",
  1061. "=",
  1062. true
  1063. ]
  1064. ],
  1065. "attrs": [],
  1066. "$ref": [
  1067. "normalize/acl"
  1068. ]
  1069. }
  1070. },
  1071. {
  1072. "variable": "path",
  1073. "label": "Host Path",
  1074. "description": "The host path to use for storage.",
  1075. "schema": {
  1076. "type": "hostpath",
  1077. "show_if": [
  1078. [
  1079. "acl_enable",
  1080. "=",
  1081. false
  1082. ]
  1083. ],
  1084. "required": true
  1085. }
  1086. },
  1087. {
  1088. "variable": "auto_permissions",
  1089. "label": "Automatic Permissions",
  1090. "description": "Automatically set permissions for the host path.\nEnabling this, will check the top level directory,</br>\nIf it finds incorrect permissions, it will `chown` the\nhost path to the user and group required for the\npostgres container.\n",
  1091. "schema": {
  1092. "type": "boolean",
  1093. "default": false,
  1094. "show_if": [
  1095. [
  1096. "acl_enable",
  1097. "=",
  1098. false
  1099. ]
  1100. ]
  1101. }
  1102. }
  1103. ]
  1104. }
  1105. }
  1106. ]
  1107. }
  1108. },
  1109. {
  1110. "variable": "additional_storage",
  1111. "label": "Additional Storage",
  1112. "schema": {
  1113. "type": "list",
  1114. "default": [],
  1115. "items": [
  1116. {
  1117. "variable": "storageEntry",
  1118. "label": "Storage Entry",
  1119. "schema": {
  1120. "type": "dict",
  1121. "attrs": [
  1122. {
  1123. "variable": "type",
  1124. "label": "Type",
  1125. "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",
  1126. "schema": {
  1127. "type": "string",
  1128. "required": true,
  1129. "default": "ix_volume",
  1130. "enum": [
  1131. {
  1132. "value": "host_path",
  1133. "description": "Host Path (Path that already exists on the system)"
  1134. },
  1135. {
  1136. "value": "ix_volume",
  1137. "description": "ixVolume (Dataset created automatically by the system)"
  1138. },
  1139. {
  1140. "value": "cifs",
  1141. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  1142. }
  1143. ]
  1144. }
  1145. },
  1146. {
  1147. "variable": "read_only",
  1148. "label": "Read Only",
  1149. "description": "Mount the volume as read only.",
  1150. "schema": {
  1151. "type": "boolean",
  1152. "default": false
  1153. }
  1154. },
  1155. {
  1156. "variable": "mount_path",
  1157. "label": "Mount Path",
  1158. "description": "The path inside the container to mount the storage.",
  1159. "schema": {
  1160. "type": "path",
  1161. "required": true
  1162. }
  1163. },
  1164. {
  1165. "variable": "host_path_config",
  1166. "label": "Host Path Configuration",
  1167. "schema": {
  1168. "type": "dict",
  1169. "show_if": [
  1170. [
  1171. "type",
  1172. "=",
  1173. "host_path"
  1174. ]
  1175. ],
  1176. "attrs": [
  1177. {
  1178. "variable": "acl_enable",
  1179. "label": "Enable ACL",
  1180. "description": "Enable ACL for the storage.",
  1181. "schema": {
  1182. "type": "boolean",
  1183. "default": false
  1184. }
  1185. },
  1186. {
  1187. "variable": "acl",
  1188. "label": "ACL Configuration",
  1189. "schema": {
  1190. "type": "dict",
  1191. "show_if": [
  1192. [
  1193. "acl_enable",
  1194. "=",
  1195. true
  1196. ]
  1197. ],
  1198. "attrs": [],
  1199. "$ref": [
  1200. "normalize/acl"
  1201. ]
  1202. }
  1203. },
  1204. {
  1205. "variable": "path",
  1206. "label": "Host Path",
  1207. "description": "The host path to use for storage.",
  1208. "schema": {
  1209. "type": "hostpath",
  1210. "show_if": [
  1211. [
  1212. "acl_enable",
  1213. "=",
  1214. false
  1215. ]
  1216. ],
  1217. "required": true
  1218. }
  1219. }
  1220. ]
  1221. }
  1222. },
  1223. {
  1224. "variable": "ix_volume_config",
  1225. "label": "ixVolume Configuration",
  1226. "description": "The configuration for the ixVolume dataset.",
  1227. "schema": {
  1228. "type": "dict",
  1229. "show_if": [
  1230. [
  1231. "type",
  1232. "=",
  1233. "ix_volume"
  1234. ]
  1235. ],
  1236. "$ref": [
  1237. "normalize/ix_volume"
  1238. ],
  1239. "attrs": [
  1240. {
  1241. "variable": "acl_enable",
  1242. "label": "Enable ACL",
  1243. "description": "Enable ACL for the storage.",
  1244. "schema": {
  1245. "type": "boolean",
  1246. "default": false
  1247. }
  1248. },
  1249. {
  1250. "variable": "dataset_name",
  1251. "label": "Dataset Name",
  1252. "description": "The name of the dataset to use for storage.",
  1253. "schema": {
  1254. "type": "string",
  1255. "required": true,
  1256. "default": "storage_entry"
  1257. }
  1258. },
  1259. {
  1260. "variable": "acl_entries",
  1261. "label": "ACL Configuration",
  1262. "schema": {
  1263. "type": "dict",
  1264. "show_if": [
  1265. [
  1266. "acl_enable",
  1267. "=",
  1268. true
  1269. ]
  1270. ],
  1271. "attrs": [],
  1272. "$ref": [
  1273. "normalize/acl"
  1274. ]
  1275. }
  1276. }
  1277. ]
  1278. }
  1279. },
  1280. {
  1281. "variable": "cifs_config",
  1282. "label": "SMB Configuration",
  1283. "description": "The configuration for the SMB dataset.",
  1284. "schema": {
  1285. "type": "dict",
  1286. "show_if": [
  1287. [
  1288. "type",
  1289. "=",
  1290. "cifs"
  1291. ]
  1292. ],
  1293. "attrs": [
  1294. {
  1295. "variable": "server",
  1296. "label": "Server",
  1297. "description": "The server to mount the SMB share.",
  1298. "schema": {
  1299. "type": "string",
  1300. "required": true
  1301. }
  1302. },
  1303. {
  1304. "variable": "path",
  1305. "label": "Path",
  1306. "description": "The path to mount the SMB share.",
  1307. "schema": {
  1308. "type": "string",
  1309. "required": true
  1310. }
  1311. },
  1312. {
  1313. "variable": "username",
  1314. "label": "Username",
  1315. "description": "The username to use for the SMB share.",
  1316. "schema": {
  1317. "type": "string",
  1318. "required": true
  1319. }
  1320. },
  1321. {
  1322. "variable": "password",
  1323. "label": "Password",
  1324. "description": "The password to use for the SMB share.",
  1325. "schema": {
  1326. "type": "string",
  1327. "required": true,
  1328. "private": true
  1329. }
  1330. },
  1331. {
  1332. "variable": "domain",
  1333. "label": "Domain",
  1334. "description": "The domain to use for the SMB share.",
  1335. "schema": {
  1336. "type": "string"
  1337. }
  1338. }
  1339. ]
  1340. }
  1341. }
  1342. ]
  1343. }
  1344. }
  1345. ]
  1346. }
  1347. }
  1348. ]
  1349. }
  1350. },
  1351. {
  1352. "variable": "labels",
  1353. "label": "",
  1354. "group": "Labels Configuration",
  1355. "schema": {
  1356. "type": "list",
  1357. "default": [],
  1358. "items": [
  1359. {
  1360. "variable": "label",
  1361. "label": "Label",
  1362. "schema": {
  1363. "type": "dict",
  1364. "attrs": [
  1365. {
  1366. "variable": "key",
  1367. "label": "Key",
  1368. "schema": {
  1369. "type": "string",
  1370. "required": true
  1371. }
  1372. },
  1373. {
  1374. "variable": "value",
  1375. "label": "Value",
  1376. "schema": {
  1377. "type": "string",
  1378. "required": true
  1379. }
  1380. },
  1381. {
  1382. "variable": "containers",
  1383. "label": "Containers",
  1384. "description": "Containers where the label should be applied",
  1385. "schema": {
  1386. "type": "list",
  1387. "items": [
  1388. {
  1389. "variable": "container",
  1390. "label": "Container",
  1391. "schema": {
  1392. "type": "string",
  1393. "required": true,
  1394. "enum": [
  1395. {
  1396. "value": "nextcloud",
  1397. "description": "nextcloud"
  1398. },
  1399. {
  1400. "value": "imaginary",
  1401. "description": "imaginary"
  1402. },
  1403. {
  1404. "value": "cron",
  1405. "description": "cron"
  1406. },
  1407. {
  1408. "value": "nginx",
  1409. "description": "nginx"
  1410. },
  1411. {
  1412. "value": "postgres",
  1413. "description": "postgres"
  1414. },
  1415. {
  1416. "value": "redis",
  1417. "description": "redis"
  1418. }
  1419. ]
  1420. }
  1421. }
  1422. ]
  1423. }
  1424. }
  1425. ]
  1426. }
  1427. }
  1428. ]
  1429. }
  1430. },
  1431. {
  1432. "variable": "resources",
  1433. "label": "",
  1434. "group": "Resources Configuration",
  1435. "schema": {
  1436. "type": "dict",
  1437. "attrs": [
  1438. {
  1439. "variable": "limits",
  1440. "label": "Limits",
  1441. "schema": {
  1442. "type": "dict",
  1443. "attrs": [
  1444. {
  1445. "variable": "cpus",
  1446. "label": "CPUs",
  1447. "description": "CPUs limit for Nextcloud.",
  1448. "schema": {
  1449. "type": "int",
  1450. "default": 2,
  1451. "required": true
  1452. }
  1453. },
  1454. {
  1455. "variable": "memory",
  1456. "label": "Memory (in MB)",
  1457. "description": "Memory limit for Nextcloud.",
  1458. "schema": {
  1459. "type": "int",
  1460. "default": 4096,
  1461. "required": true
  1462. }
  1463. }
  1464. ]
  1465. }
  1466. },
  1467. {
  1468. "variable": "gpus",
  1469. "group": "Resources Configuration",
  1470. "label": "GPU Configuration",
  1471. "schema": {
  1472. "type": "dict",
  1473. "$ref": [
  1474. "definitions/gpu_configuration"
  1475. ],
  1476. "attrs": []
  1477. }
  1478. }
  1479. ]
  1480. }
  1481. }
  1482. ]
  1483. },
  1484. "readme": "<h1>Nextcloud</h1> <p><a href=\"https://nextcloud.com/\">Nextcloud</a> is a file sharing server that puts the control and security of your own data back into your hands.</p>",
  1485. "changelog": null,
  1486. "chart_metadata": {
  1487. "annotations": {
  1488. "min_scale_version": "24.10.2.2"
  1489. },
  1490. "app_version": "31.0.8",
  1491. "capabilities": [
  1492. {
  1493. "description": "Cron, Nextcloud, Nginx are able to change file ownership arbitrarily",
  1494. "name": "CHOWN"
  1495. },
  1496. {
  1497. "description": "Cron, Nextcloud, Nginx are able to bypass file permission checks",
  1498. "name": "DAC_OVERRIDE"
  1499. },
  1500. {
  1501. "description": "Cron, Nextcloud, Nginx are able to bypass permission checks for file operations",
  1502. "name": "FOWNER"
  1503. },
  1504. {
  1505. "description": "Cron, Nextcloud, Nginx are able to bind to privileged ports (< 1024)",
  1506. "name": "NET_BIND_SERVICE"
  1507. },
  1508. {
  1509. "description": "Cron, Nextcloud, Nginx are able to use raw and packet sockets",
  1510. "name": "NET_RAW"
  1511. },
  1512. {
  1513. "description": "Cron, Nextcloud, Nginx are able to change group ID of processes",
  1514. "name": "SETGID"
  1515. },
  1516. {
  1517. "description": "Cron, Nextcloud, Nginx are able to change user ID of processes",
  1518. "name": "SETUID"
  1519. },
  1520. {
  1521. "description": "Imaginary is able to modify process scheduling priority",
  1522. "name": "SYS_NICE"
  1523. }
  1524. ],
  1525. "categories": [
  1526. "productivity"
  1527. ],
  1528. "changelog_url": "https://nextcloud.com/changelog/",
  1529. "date_added": "2024-08-07",
  1530. "description": "A file sharing server that puts the control and security of your own data back into your hands.",
  1531. "home": "https://nextcloud.com/",
  1532. "host_mounts": [],
  1533. "icon": "https://media.sys.truenas.net/apps/nextcloud/icons/icon.svg",
  1534. "keywords": [
  1535. "nextcloud",
  1536. "storage",
  1537. "sync",
  1538. "http",
  1539. "web",
  1540. "php"
  1541. ],
  1542. "lib_version": "2.1.49",
  1543. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1544. "maintainers": [
  1545. {
  1546. "email": "dev@ixsystems.com",
  1547. "name": "truenas",
  1548. "url": "https://www.truenas.com/"
  1549. }
  1550. ],
  1551. "name": "nextcloud",
  1552. "run_as_context": [
  1553. {
  1554. "description": "Nextcloud runs as root user.",
  1555. "gid": 0,
  1556. "group_name": "root",
  1557. "uid": 0,
  1558. "user_name": "root"
  1559. },
  1560. {
  1561. "description": "Postgres runs as non-root user.",
  1562. "gid": 999,
  1563. "group_name": "postgres",
  1564. "uid": 999,
  1565. "user_name": "postgres"
  1566. },
  1567. {
  1568. "description": "Redis runs as any non-root user.",
  1569. "gid": 568,
  1570. "group_name": "redis",
  1571. "uid": 568,
  1572. "user_name": "redis"
  1573. },
  1574. {
  1575. "description": "Nginx runs as root user.",
  1576. "gid": 0,
  1577. "group_name": "root",
  1578. "uid": 0,
  1579. "user_name": "root"
  1580. },
  1581. {
  1582. "description": "Imaginary runs as non-root user.",
  1583. "gid": 568,
  1584. "group_name": "imaginary",
  1585. "uid": 568,
  1586. "user_name": "imaginary"
  1587. }
  1588. ],
  1589. "screenshots": [
  1590. "https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot1.png",
  1591. "https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot2.png",
  1592. "https://media.sys.truenas.net/apps/nextcloud/screenshots/screenshot3.png"
  1593. ],
  1594. "sources": [
  1595. "https://github.com/nextcloud/docker"
  1596. ],
  1597. "title": "Nextcloud",
  1598. "train": "stable",
  1599. "version": "2.0.25"
  1600. }
  1601. }
  1602. }