app_versions.json 86 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403
  1. {
  2. "1.1.11": {
  3. "healthy": true,
  4. "supported": true,
  5. "healthy_error": null,
  6. "location": "/__w/apps/apps/trains/community/monerod/1.1.11",
  7. "last_update": "2025-09-02 11:33:24",
  8. "required_features": [],
  9. "human_version": "v0.18.4.2_1.1.11",
  10. "version": "1.1.11",
  11. "app_metadata": {
  12. "app_version": "v0.18.4.2",
  13. "capabilities": [],
  14. "categories": [
  15. "financial"
  16. ],
  17. "changelog_url": "https://www.getmonero.org/blog/tags/releases.html",
  18. "date_added": "2025-02-21",
  19. "description": "Monero is a private, decentralized cryptocurrency that keeps your finances confidential and secure.",
  20. "home": "https://www.getmonero.org",
  21. "host_mounts": [],
  22. "icon": "https://media.sys.truenas.net/apps/monerod/icons/icon.png",
  23. "keywords": [
  24. "monero",
  25. "cryptocurrency",
  26. "blockchain",
  27. "privacy"
  28. ],
  29. "lib_version": "2.1.49",
  30. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  31. "maintainers": [
  32. {
  33. "email": "dev@ixsystems.com",
  34. "name": "truenas",
  35. "url": "https://www.truenas.com/"
  36. }
  37. ],
  38. "name": "monerod",
  39. "run_as_context": [
  40. {
  41. "description": "Monero runs as non-root user.",
  42. "gid": 1000,
  43. "group_name": "monero",
  44. "uid": 1000,
  45. "user_name": "monero"
  46. }
  47. ],
  48. "screenshots": [],
  49. "sources": [
  50. "https://www.getmonero.org",
  51. "https://github.com/sethforprivacy/simple-monerod-docker"
  52. ],
  53. "title": "Monero Node",
  54. "train": "community",
  55. "version": "1.1.11"
  56. },
  57. "schema": {
  58. "groups": [
  59. {
  60. "name": "Monero Configuration",
  61. "description": "Configure Monero"
  62. },
  63. {
  64. "name": "Network Configuration",
  65. "description": "Configure Network for Monero"
  66. },
  67. {
  68. "name": "Storage Configuration",
  69. "description": "Configure Storage for Monero"
  70. },
  71. {
  72. "name": "Labels Configuration",
  73. "description": "Configure Labels for Monero"
  74. },
  75. {
  76. "name": "Resources Configuration",
  77. "description": "Configure Resources for Monero"
  78. }
  79. ],
  80. "questions": [
  81. {
  82. "variable": "TZ",
  83. "group": "Monero Configuration",
  84. "label": "Timezone",
  85. "schema": {
  86. "type": "string",
  87. "default": "Etc/UTC",
  88. "required": true,
  89. "$ref": [
  90. "definitions/timezone"
  91. ]
  92. }
  93. },
  94. {
  95. "variable": "monero",
  96. "label": "",
  97. "group": "Monero Configuration",
  98. "schema": {
  99. "type": "dict",
  100. "attrs": [
  101. {
  102. "variable": "pruned",
  103. "label": "Prune the blockchain",
  104. "description": "A pruned Monero blockchain will take up about 1/3rd the storage space of an unpruned node.\nIf you have the extra space and wish to contribute more resources to the Monero network,\nconsider disabling the prune option. A pruned node provides nearly all of the advantages of an unpruned node,\nso if you are unsure, leave this option enabled.\n",
  105. "schema": {
  106. "type": "boolean",
  107. "default": true
  108. }
  109. },
  110. {
  111. "variable": "publicly_available",
  112. "label": "Advertise as publicly-available",
  113. "description": "If you wish to make it easier for other people to connect their wallet with your node, enable this option. This sets --public-node and --confirm-external-bind if enabled, and --hide-my-port if disabled.\nIf you are unsure, leave this option enabled.\n",
  114. "schema": {
  115. "type": "boolean",
  116. "default": true
  117. }
  118. },
  119. {
  120. "variable": "dns_blocklist",
  121. "label": "Enable community DNS Blocklist",
  122. "description": "Unless you have a good reason to disable this option, leave this option enabled.\n",
  123. "schema": {
  124. "type": "boolean",
  125. "default": true
  126. }
  127. },
  128. {
  129. "variable": "logging",
  130. "label": "Enable logging",
  131. "description": "Unless you encounter an issue and wish to review the logs, leave this option disabled.\n",
  132. "schema": {
  133. "type": "boolean",
  134. "default": false
  135. }
  136. },
  137. {
  138. "variable": "ipv6_enabled",
  139. "label": "Enable IPv6",
  140. "schema": {
  141. "type": "boolean",
  142. "default": true
  143. }
  144. },
  145. {
  146. "variable": "tor_connections_enabled",
  147. "label": "Enable Tor connections",
  148. "description": "Requires a connection to a Tor SOCKS proxy, such as the Arti TrueNAS App.\n",
  149. "schema": {
  150. "type": "boolean",
  151. "default": false
  152. }
  153. },
  154. {
  155. "variable": "tor_ip",
  156. "label": "Tor IP",
  157. "description": "Enter the local IP of this machine if you are running the Arti TrueNAS App.\n",
  158. "schema": {
  159. "type": "ipaddr",
  160. "required": true,
  161. "show_if": [
  162. [
  163. "tor_connections_enabled",
  164. "=",
  165. true
  166. ]
  167. ]
  168. }
  169. },
  170. {
  171. "variable": "tor_port",
  172. "label": "Tor port",
  173. "schema": {
  174. "type": "int",
  175. "min": 1,
  176. "max": 65535,
  177. "required": true,
  178. "show_if": [
  179. [
  180. "tor_connections_enabled",
  181. "=",
  182. true
  183. ]
  184. ]
  185. }
  186. },
  187. {
  188. "variable": "tor_inbound_connections_enabled",
  189. "label": "Enable inbound Tor connections",
  190. "schema": {
  191. "type": "boolean",
  192. "default": false,
  193. "show_if": [
  194. [
  195. "tor_connections_enabled",
  196. "=",
  197. true
  198. ]
  199. ]
  200. }
  201. },
  202. {
  203. "variable": "tor_inbound_address",
  204. "label": "Inbound onion address",
  205. "description": "Port needs to be configured under \"Network\".\n",
  206. "schema": {
  207. "type": "string",
  208. "required": true,
  209. "valid_chars": "^[a-zA-Z0-9]+\\.onion$",
  210. "valid_chars_error": "Invalid onion address.",
  211. "show_if": [
  212. [
  213. "tor_inbound_connections_enabled",
  214. "=",
  215. true
  216. ]
  217. ]
  218. }
  219. },
  220. {
  221. "variable": "routing",
  222. "label": "Route all traffic through",
  223. "description": "If in the default \"Clearnet (no proxy)\" mode,\nnormal peer to peer connections with this node will be made over the clearnet,\nbut transaction broadcasts will be made over Tor.\nIf \"Tor\" is selected, then ALL connections will be made over Tor.\nThis will significantly reduce your node's performance.\nFor nearly all use-cases, leave this set to \"Clearnet (no proxy)\".\n",
  224. "schema": {
  225. "type": "string",
  226. "show_if": [
  227. [
  228. "tor_connections_enabled",
  229. "=",
  230. true
  231. ]
  232. ],
  233. "default": "clearnet",
  234. "required": true,
  235. "enum": [
  236. {
  237. "value": "clearnet",
  238. "description": "Clearnet (no proxy)"
  239. },
  240. {
  241. "value": "tor",
  242. "description": "Tor"
  243. }
  244. ]
  245. }
  246. },
  247. {
  248. "variable": "i2p_connections_enabled",
  249. "label": "Enable I2P connections",
  250. "description": "Requires a connection to an I2P SOCKS proxy, such as the I2P TrueNAS App.\n",
  251. "schema": {
  252. "type": "boolean",
  253. "default": false
  254. }
  255. },
  256. {
  257. "variable": "i2p_ip",
  258. "label": "I2P IP",
  259. "description": "Enter the local IP of this machine if you are running the I2P TrueNAS App.\n",
  260. "schema": {
  261. "type": "ipaddr",
  262. "required": true,
  263. "show_if": [
  264. [
  265. "i2p_connections_enabled",
  266. "=",
  267. true
  268. ]
  269. ]
  270. }
  271. },
  272. {
  273. "variable": "i2p_port",
  274. "label": "I2P port",
  275. "schema": {
  276. "type": "int",
  277. "min": 1,
  278. "max": 65535,
  279. "required": true,
  280. "show_if": [
  281. [
  282. "i2p_connections_enabled",
  283. "=",
  284. true
  285. ]
  286. ]
  287. }
  288. },
  289. {
  290. "variable": "i2p_inbound_connections_enabled",
  291. "label": "Enable inbound I2P connections",
  292. "schema": {
  293. "type": "boolean",
  294. "default": false,
  295. "show_if": [
  296. [
  297. "i2p_connections_enabled",
  298. "=",
  299. true
  300. ]
  301. ]
  302. }
  303. },
  304. {
  305. "variable": "i2p_inbound_address",
  306. "label": "Inbound I2P base32 address",
  307. "description": "Port needs to be configured under \"Network\".\n",
  308. "schema": {
  309. "type": "string",
  310. "required": true,
  311. "valid_chars": "^[a-zA-Z0-9]+\\.b32\\.i2p$",
  312. "valid_chars_error": "Invalid I2P address.",
  313. "show_if": [
  314. [
  315. "i2p_inbound_connections_enabled",
  316. "=",
  317. true
  318. ]
  319. ]
  320. }
  321. },
  322. {
  323. "variable": "additional_flags",
  324. "label": "Additional flags",
  325. "description": "Additional monerod commands can be provided here.\nIf you are unsure, leave this blank.\nReference: https://docs.getmonero.org/interacting/monerod-reference/#options\n",
  326. "schema": {
  327. "type": "list",
  328. "items": [
  329. {
  330. "variable": "flag",
  331. "label": "Flag",
  332. "schema": {
  333. "type": "string",
  334. "required": true
  335. }
  336. }
  337. ]
  338. }
  339. }
  340. ]
  341. }
  342. },
  343. {
  344. "variable": "network",
  345. "label": "",
  346. "group": "Network Configuration",
  347. "schema": {
  348. "type": "dict",
  349. "attrs": [
  350. {
  351. "variable": "monerod_p2p_port",
  352. "label": "P2P Port",
  353. "description": "The port used for your node to communicate blockchain data with other nodes. This should be published for external access in most scenarios.\n",
  354. "schema": {
  355. "type": "dict",
  356. "attrs": [
  357. {
  358. "variable": "bind_mode",
  359. "label": "Port Bind Mode",
  360. "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",
  361. "schema": {
  362. "type": "string",
  363. "default": "published",
  364. "enum": [
  365. {
  366. "value": "published",
  367. "description": "Publish port on the host for external access"
  368. },
  369. {
  370. "value": "exposed",
  371. "description": "Expose port for inter-container communication"
  372. },
  373. {
  374. "value": "",
  375. "description": "None"
  376. }
  377. ]
  378. }
  379. },
  380. {
  381. "variable": "port_number",
  382. "label": "Port Number",
  383. "schema": {
  384. "type": "int",
  385. "default": 18080,
  386. "min": 1,
  387. "max": 65535,
  388. "required": true
  389. }
  390. },
  391. {
  392. "variable": "host_ips",
  393. "label": "Host IPs",
  394. "description": "IPs on the host to bind this port",
  395. "schema": {
  396. "type": "list",
  397. "show_if": [
  398. [
  399. "bind_mode",
  400. "=",
  401. "published"
  402. ]
  403. ],
  404. "default": [],
  405. "items": [
  406. {
  407. "variable": "host_ip",
  408. "label": "Host IP",
  409. "schema": {
  410. "type": "string",
  411. "required": true,
  412. "$ref": [
  413. "definitions/node_bind_ip"
  414. ]
  415. }
  416. }
  417. ]
  418. }
  419. }
  420. ]
  421. }
  422. },
  423. {
  424. "variable": "monerod_rpc_port",
  425. "label": "RPC Port",
  426. "description": "This is the unrestricted RPC endpoint which will only be made available on the local network. Unless you specifically need this, leave it disabled.\n",
  427. "schema": {
  428. "type": "dict",
  429. "attrs": [
  430. {
  431. "variable": "bind_mode",
  432. "label": "Port Bind Mode",
  433. "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",
  434. "schema": {
  435. "type": "string",
  436. "default": "",
  437. "enum": [
  438. {
  439. "value": "published",
  440. "description": "Publish port on the host for external access"
  441. },
  442. {
  443. "value": "exposed",
  444. "description": "Expose port for inter-container communication"
  445. },
  446. {
  447. "value": "",
  448. "description": "None"
  449. }
  450. ]
  451. }
  452. },
  453. {
  454. "variable": "port_number",
  455. "label": "Port Number",
  456. "schema": {
  457. "type": "int",
  458. "default": 18081,
  459. "min": 1,
  460. "max": 65535,
  461. "required": true
  462. }
  463. },
  464. {
  465. "variable": "host_ips",
  466. "label": "Host IPs",
  467. "description": "IPs on the host to bind this port",
  468. "schema": {
  469. "type": "list",
  470. "show_if": [
  471. [
  472. "bind_mode",
  473. "=",
  474. "published"
  475. ]
  476. ],
  477. "default": [],
  478. "items": [
  479. {
  480. "variable": "host_ip",
  481. "label": "Host IP",
  482. "schema": {
  483. "type": "string",
  484. "required": true,
  485. "$ref": [
  486. "definitions/node_bind_ip"
  487. ]
  488. }
  489. }
  490. ]
  491. }
  492. }
  493. ]
  494. }
  495. },
  496. {
  497. "variable": "monerod_restricted_rpc_port",
  498. "label": "Restricted RPC Port",
  499. "description": "This is the restricted RPC endpoint which is safe to expose publicly. This allows Monero wallet users to connect to your node. Use in conjunction with \"Advertise as publicly-available\". If you do not want Monero wallet users to connect to your node, set the bind mode to \"None\" (for no RPC access) or \"Expose port for inter-container communication\" (for RPC access only to other TrueNAS apps).</br>\nNote that unless you configure SSL for your node separately, for example with Cloudflare or Nginx, then all wallet RPC traffic will be unencrypted which has privacy risks.\n",
  500. "schema": {
  501. "type": "dict",
  502. "attrs": [
  503. {
  504. "variable": "bind_mode",
  505. "label": "Port Bind Mode",
  506. "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",
  507. "schema": {
  508. "type": "string",
  509. "default": "published",
  510. "enum": [
  511. {
  512. "value": "published",
  513. "description": "Publish port on the host for external access"
  514. },
  515. {
  516. "value": "exposed",
  517. "description": "Expose port for inter-container communication"
  518. },
  519. {
  520. "value": "",
  521. "description": "None"
  522. }
  523. ]
  524. }
  525. },
  526. {
  527. "variable": "port_number",
  528. "label": "Port Number",
  529. "schema": {
  530. "type": "int",
  531. "default": 18089,
  532. "min": 1,
  533. "max": 65535,
  534. "required": true
  535. }
  536. },
  537. {
  538. "variable": "host_ips",
  539. "label": "Host IPs",
  540. "description": "IPs on the host to bind this port",
  541. "schema": {
  542. "type": "list",
  543. "show_if": [
  544. [
  545. "bind_mode",
  546. "=",
  547. "published"
  548. ]
  549. ],
  550. "default": [],
  551. "items": [
  552. {
  553. "variable": "host_ip",
  554. "label": "Host IP",
  555. "schema": {
  556. "type": "string",
  557. "required": true,
  558. "$ref": [
  559. "definitions/node_bind_ip"
  560. ]
  561. }
  562. }
  563. ]
  564. }
  565. }
  566. ]
  567. }
  568. },
  569. {
  570. "variable": "monerod_zmq_rpc_port",
  571. "label": "ZMQ RPC Port",
  572. "schema": {
  573. "type": "dict",
  574. "attrs": [
  575. {
  576. "variable": "bind_mode",
  577. "label": "Port Bind Mode",
  578. "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",
  579. "schema": {
  580. "type": "string",
  581. "default": "",
  582. "enum": [
  583. {
  584. "value": "published",
  585. "description": "Publish port on the host for external access"
  586. },
  587. {
  588. "value": "exposed",
  589. "description": "Expose port for inter-container communication"
  590. },
  591. {
  592. "value": "",
  593. "description": "None"
  594. }
  595. ]
  596. }
  597. },
  598. {
  599. "variable": "port_number",
  600. "label": "Port Number",
  601. "schema": {
  602. "type": "int",
  603. "default": 18082,
  604. "min": 1,
  605. "max": 65535,
  606. "required": true
  607. }
  608. },
  609. {
  610. "variable": "host_ips",
  611. "label": "Host IPs",
  612. "description": "IPs on the host to bind this port",
  613. "schema": {
  614. "type": "list",
  615. "show_if": [
  616. [
  617. "bind_mode",
  618. "=",
  619. "published"
  620. ]
  621. ],
  622. "default": [],
  623. "items": [
  624. {
  625. "variable": "host_ip",
  626. "label": "Host IP",
  627. "schema": {
  628. "type": "string",
  629. "required": true,
  630. "$ref": [
  631. "definitions/node_bind_ip"
  632. ]
  633. }
  634. }
  635. ]
  636. }
  637. }
  638. ]
  639. }
  640. },
  641. {
  642. "variable": "monerod_zmq_pub_port",
  643. "label": "ZMQ Pub Port",
  644. "schema": {
  645. "type": "dict",
  646. "attrs": [
  647. {
  648. "variable": "bind_mode",
  649. "label": "Port Bind Mode",
  650. "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",
  651. "schema": {
  652. "type": "string",
  653. "default": "",
  654. "enum": [
  655. {
  656. "value": "published",
  657. "description": "Publish port on the host for external access"
  658. },
  659. {
  660. "value": "exposed",
  661. "description": "Expose port for inter-container communication"
  662. },
  663. {
  664. "value": "",
  665. "description": "None"
  666. }
  667. ]
  668. }
  669. },
  670. {
  671. "variable": "port_number",
  672. "label": "Port Number",
  673. "schema": {
  674. "type": "int",
  675. "default": 18083,
  676. "min": 1,
  677. "max": 65535,
  678. "required": true
  679. }
  680. },
  681. {
  682. "variable": "host_ips",
  683. "label": "Host IPs",
  684. "description": "IPs on the host to bind this port",
  685. "schema": {
  686. "type": "list",
  687. "show_if": [
  688. [
  689. "bind_mode",
  690. "=",
  691. "published"
  692. ]
  693. ],
  694. "default": [],
  695. "items": [
  696. {
  697. "variable": "host_ip",
  698. "label": "Host IP",
  699. "schema": {
  700. "type": "string",
  701. "required": true,
  702. "$ref": [
  703. "definitions/node_bind_ip"
  704. ]
  705. }
  706. }
  707. ]
  708. }
  709. }
  710. ]
  711. }
  712. },
  713. {
  714. "variable": "tor_inbound_port",
  715. "label": "Tor inbound port",
  716. "schema": {
  717. "type": "dict",
  718. "attrs": [
  719. {
  720. "variable": "bind_mode",
  721. "label": "Port Bind Mode",
  722. "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",
  723. "schema": {
  724. "type": "string",
  725. "default": "",
  726. "enum": [
  727. {
  728. "value": "published",
  729. "description": "Publish port on the host for external access"
  730. },
  731. {
  732. "value": "exposed",
  733. "description": "Expose port for inter-container communication"
  734. },
  735. {
  736. "value": "",
  737. "description": "None"
  738. }
  739. ]
  740. }
  741. },
  742. {
  743. "variable": "port_number",
  744. "label": "Port Number",
  745. "schema": {
  746. "type": "int",
  747. "default": 18084,
  748. "min": 1,
  749. "max": 65535,
  750. "required": true
  751. }
  752. },
  753. {
  754. "variable": "host_ips",
  755. "label": "Host IPs",
  756. "description": "IPs on the host to bind this port",
  757. "schema": {
  758. "type": "list",
  759. "show_if": [
  760. [
  761. "bind_mode",
  762. "=",
  763. "published"
  764. ]
  765. ],
  766. "default": [],
  767. "items": [
  768. {
  769. "variable": "host_ip",
  770. "label": "Host IP",
  771. "schema": {
  772. "type": "string",
  773. "required": true,
  774. "$ref": [
  775. "definitions/node_bind_ip"
  776. ]
  777. }
  778. }
  779. ]
  780. }
  781. }
  782. ]
  783. }
  784. },
  785. {
  786. "variable": "i2p_inbound_port",
  787. "label": "I2P inbound port",
  788. "schema": {
  789. "type": "dict",
  790. "attrs": [
  791. {
  792. "variable": "bind_mode",
  793. "label": "Port Bind Mode",
  794. "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",
  795. "schema": {
  796. "type": "string",
  797. "default": "",
  798. "enum": [
  799. {
  800. "value": "published",
  801. "description": "Publish port on the host for external access"
  802. },
  803. {
  804. "value": "exposed",
  805. "description": "Expose port for inter-container communication"
  806. },
  807. {
  808. "value": "",
  809. "description": "None"
  810. }
  811. ]
  812. }
  813. },
  814. {
  815. "variable": "port_number",
  816. "label": "Port Number",
  817. "schema": {
  818. "type": "int",
  819. "default": 18085,
  820. "min": 1,
  821. "max": 65535,
  822. "required": true
  823. }
  824. },
  825. {
  826. "variable": "host_ips",
  827. "label": "Host IPs",
  828. "description": "IPs on the host to bind this port",
  829. "schema": {
  830. "type": "list",
  831. "show_if": [
  832. [
  833. "bind_mode",
  834. "=",
  835. "published"
  836. ]
  837. ],
  838. "default": [],
  839. "items": [
  840. {
  841. "variable": "host_ip",
  842. "label": "Host IP",
  843. "schema": {
  844. "type": "string",
  845. "required": true,
  846. "$ref": [
  847. "definitions/node_bind_ip"
  848. ]
  849. }
  850. }
  851. ]
  852. }
  853. }
  854. ]
  855. }
  856. }
  857. ]
  858. }
  859. },
  860. {
  861. "variable": "storage",
  862. "label": "",
  863. "group": "Storage Configuration",
  864. "schema": {
  865. "type": "dict",
  866. "attrs": [
  867. {
  868. "variable": "bitmonero",
  869. "label": "Blockchain storage location",
  870. "description": "Use SSDs for reasonable performance.\nYou will have a very bad time trying to sync a Monero node on HDDs. </br>\nWe recommend at least 200GB of free space if pruning is enabled and at least 500GB if pruning is disabled.\n",
  871. "schema": {
  872. "type": "dict",
  873. "attrs": [
  874. {
  875. "variable": "type",
  876. "label": "Type",
  877. "description": "ixVolume: Is dataset created automatically by the system.</br>\nHost Path: Is a path that already exists on the system.\n",
  878. "schema": {
  879. "type": "string",
  880. "required": true,
  881. "default": "ix_volume",
  882. "enum": [
  883. {
  884. "value": "host_path",
  885. "description": "Host Path (Path that already exists on the system)"
  886. },
  887. {
  888. "value": "ix_volume",
  889. "description": "ixVolume (Dataset created automatically by the system)"
  890. }
  891. ]
  892. }
  893. },
  894. {
  895. "variable": "ix_volume_config",
  896. "label": "ixVolume Configuration",
  897. "description": "The configuration for the ixVolume dataset.",
  898. "schema": {
  899. "type": "dict",
  900. "show_if": [
  901. [
  902. "type",
  903. "=",
  904. "ix_volume"
  905. ]
  906. ],
  907. "$ref": [
  908. "normalize/ix_volume"
  909. ],
  910. "attrs": [
  911. {
  912. "variable": "acl_enable",
  913. "label": "Enable ACL",
  914. "description": "Enable ACL for the storage.",
  915. "schema": {
  916. "type": "boolean",
  917. "default": false
  918. }
  919. },
  920. {
  921. "variable": "dataset_name",
  922. "label": "Dataset Name",
  923. "description": "The name of the dataset to use for storage.",
  924. "schema": {
  925. "type": "string",
  926. "required": true,
  927. "hidden": true,
  928. "default": "bitmonero"
  929. }
  930. },
  931. {
  932. "variable": "acl_entries",
  933. "label": "ACL Configuration",
  934. "schema": {
  935. "type": "dict",
  936. "show_if": [
  937. [
  938. "acl_enable",
  939. "=",
  940. true
  941. ]
  942. ],
  943. "attrs": []
  944. }
  945. }
  946. ]
  947. }
  948. },
  949. {
  950. "variable": "host_path_config",
  951. "label": "Host Path Configuration",
  952. "schema": {
  953. "type": "dict",
  954. "show_if": [
  955. [
  956. "type",
  957. "=",
  958. "host_path"
  959. ]
  960. ],
  961. "attrs": [
  962. {
  963. "variable": "acl_enable",
  964. "label": "Enable ACL",
  965. "description": "Enable ACL for the storage.",
  966. "schema": {
  967. "type": "boolean",
  968. "default": false
  969. }
  970. },
  971. {
  972. "variable": "acl",
  973. "label": "ACL Configuration",
  974. "schema": {
  975. "type": "dict",
  976. "show_if": [
  977. [
  978. "acl_enable",
  979. "=",
  980. true
  981. ]
  982. ],
  983. "attrs": [],
  984. "$ref": [
  985. "normalize/acl"
  986. ]
  987. }
  988. },
  989. {
  990. "variable": "path",
  991. "label": "Host Path",
  992. "description": "The host path to use for storage.",
  993. "schema": {
  994. "type": "hostpath",
  995. "show_if": [
  996. [
  997. "acl_enable",
  998. "=",
  999. false
  1000. ]
  1001. ],
  1002. "required": true
  1003. }
  1004. }
  1005. ]
  1006. }
  1007. }
  1008. ]
  1009. }
  1010. },
  1011. {
  1012. "variable": "additional_storage",
  1013. "label": "Additional Storage",
  1014. "schema": {
  1015. "type": "list",
  1016. "default": [],
  1017. "items": [
  1018. {
  1019. "variable": "storageEntry",
  1020. "label": "Storage Entry",
  1021. "schema": {
  1022. "type": "dict",
  1023. "attrs": [
  1024. {
  1025. "variable": "type",
  1026. "label": "Type",
  1027. "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",
  1028. "schema": {
  1029. "type": "string",
  1030. "required": true,
  1031. "default": "ix_volume",
  1032. "enum": [
  1033. {
  1034. "value": "host_path",
  1035. "description": "Host Path (Path that already exists on the system)"
  1036. },
  1037. {
  1038. "value": "ix_volume",
  1039. "description": "ixVolume (Dataset created automatically by the system)"
  1040. },
  1041. {
  1042. "value": "cifs",
  1043. "description": "SMB/CIFS Share (Mounts a volume to a SMB share)"
  1044. }
  1045. ]
  1046. }
  1047. },
  1048. {
  1049. "variable": "read_only",
  1050. "label": "Read Only",
  1051. "description": "Mount the volume as read only.",
  1052. "schema": {
  1053. "type": "boolean",
  1054. "default": false
  1055. }
  1056. },
  1057. {
  1058. "variable": "mount_path",
  1059. "label": "Mount Path",
  1060. "description": "The path inside the container to mount the storage.",
  1061. "schema": {
  1062. "type": "path",
  1063. "required": true
  1064. }
  1065. },
  1066. {
  1067. "variable": "host_path_config",
  1068. "label": "Host Path Configuration",
  1069. "schema": {
  1070. "type": "dict",
  1071. "show_if": [
  1072. [
  1073. "type",
  1074. "=",
  1075. "host_path"
  1076. ]
  1077. ],
  1078. "attrs": [
  1079. {
  1080. "variable": "acl_enable",
  1081. "label": "Enable ACL",
  1082. "description": "Enable ACL for the storage.",
  1083. "schema": {
  1084. "type": "boolean",
  1085. "default": false
  1086. }
  1087. },
  1088. {
  1089. "variable": "acl",
  1090. "label": "ACL Configuration",
  1091. "schema": {
  1092. "type": "dict",
  1093. "show_if": [
  1094. [
  1095. "acl_enable",
  1096. "=",
  1097. true
  1098. ]
  1099. ],
  1100. "attrs": [],
  1101. "$ref": [
  1102. "normalize/acl"
  1103. ]
  1104. }
  1105. },
  1106. {
  1107. "variable": "path",
  1108. "label": "Host Path",
  1109. "description": "The host path to use for storage.",
  1110. "schema": {
  1111. "type": "hostpath",
  1112. "show_if": [
  1113. [
  1114. "acl_enable",
  1115. "=",
  1116. false
  1117. ]
  1118. ],
  1119. "required": true
  1120. }
  1121. }
  1122. ]
  1123. }
  1124. },
  1125. {
  1126. "variable": "ix_volume_config",
  1127. "label": "ixVolume Configuration",
  1128. "description": "The configuration for the ixVolume dataset.",
  1129. "schema": {
  1130. "type": "dict",
  1131. "show_if": [
  1132. [
  1133. "type",
  1134. "=",
  1135. "ix_volume"
  1136. ]
  1137. ],
  1138. "$ref": [
  1139. "normalize/ix_volume"
  1140. ],
  1141. "attrs": [
  1142. {
  1143. "variable": "acl_enable",
  1144. "label": "Enable ACL",
  1145. "description": "Enable ACL for the storage.",
  1146. "schema": {
  1147. "type": "boolean",
  1148. "default": false
  1149. }
  1150. },
  1151. {
  1152. "variable": "dataset_name",
  1153. "label": "Dataset Name",
  1154. "description": "The name of the dataset to use for storage.",
  1155. "schema": {
  1156. "type": "string",
  1157. "required": true,
  1158. "default": "storage_entry"
  1159. }
  1160. },
  1161. {
  1162. "variable": "acl_entries",
  1163. "label": "ACL Configuration",
  1164. "schema": {
  1165. "type": "dict",
  1166. "show_if": [
  1167. [
  1168. "acl_enable",
  1169. "=",
  1170. true
  1171. ]
  1172. ],
  1173. "attrs": [],
  1174. "$ref": [
  1175. "normalize/acl"
  1176. ]
  1177. }
  1178. }
  1179. ]
  1180. }
  1181. },
  1182. {
  1183. "variable": "cifs_config",
  1184. "label": "SMB Configuration",
  1185. "description": "The configuration for the SMB dataset.",
  1186. "schema": {
  1187. "type": "dict",
  1188. "show_if": [
  1189. [
  1190. "type",
  1191. "=",
  1192. "cifs"
  1193. ]
  1194. ],
  1195. "attrs": [
  1196. {
  1197. "variable": "server",
  1198. "label": "Server",
  1199. "description": "The server to mount the SMB share.",
  1200. "schema": {
  1201. "type": "string",
  1202. "required": true
  1203. }
  1204. },
  1205. {
  1206. "variable": "path",
  1207. "label": "Path",
  1208. "description": "The path to mount the SMB share.",
  1209. "schema": {
  1210. "type": "string",
  1211. "required": true
  1212. }
  1213. },
  1214. {
  1215. "variable": "username",
  1216. "label": "Username",
  1217. "description": "The username to use for the SMB share.",
  1218. "schema": {
  1219. "type": "string",
  1220. "required": true
  1221. }
  1222. },
  1223. {
  1224. "variable": "password",
  1225. "label": "Password",
  1226. "description": "The password to use for the SMB share.",
  1227. "schema": {
  1228. "type": "string",
  1229. "required": true,
  1230. "private": true
  1231. }
  1232. },
  1233. {
  1234. "variable": "domain",
  1235. "label": "Domain",
  1236. "description": "The domain to use for the SMB share.",
  1237. "schema": {
  1238. "type": "string"
  1239. }
  1240. }
  1241. ]
  1242. }
  1243. }
  1244. ]
  1245. }
  1246. }
  1247. ]
  1248. }
  1249. }
  1250. ]
  1251. }
  1252. },
  1253. {
  1254. "variable": "labels",
  1255. "label": "",
  1256. "group": "Labels Configuration",
  1257. "schema": {
  1258. "type": "list",
  1259. "default": [],
  1260. "items": [
  1261. {
  1262. "variable": "label",
  1263. "label": "Label",
  1264. "schema": {
  1265. "type": "dict",
  1266. "attrs": [
  1267. {
  1268. "variable": "key",
  1269. "label": "Key",
  1270. "schema": {
  1271. "type": "string",
  1272. "required": true
  1273. }
  1274. },
  1275. {
  1276. "variable": "value",
  1277. "label": "Value",
  1278. "schema": {
  1279. "type": "string",
  1280. "required": true
  1281. }
  1282. },
  1283. {
  1284. "variable": "containers",
  1285. "label": "Containers",
  1286. "description": "Containers where the label should be applied",
  1287. "schema": {
  1288. "type": "list",
  1289. "items": [
  1290. {
  1291. "variable": "container",
  1292. "label": "Container",
  1293. "schema": {
  1294. "type": "string",
  1295. "required": true,
  1296. "enum": [
  1297. {
  1298. "value": "monerod",
  1299. "description": "monerod"
  1300. }
  1301. ]
  1302. }
  1303. }
  1304. ]
  1305. }
  1306. }
  1307. ]
  1308. }
  1309. }
  1310. ]
  1311. }
  1312. },
  1313. {
  1314. "variable": "resources",
  1315. "label": "",
  1316. "group": "Resources Configuration",
  1317. "schema": {
  1318. "type": "dict",
  1319. "attrs": [
  1320. {
  1321. "variable": "limits",
  1322. "label": "Limits",
  1323. "schema": {
  1324. "type": "dict",
  1325. "attrs": [
  1326. {
  1327. "variable": "cpus",
  1328. "label": "CPUs",
  1329. "description": "CPUs limit for Monero Node.",
  1330. "schema": {
  1331. "type": "int",
  1332. "default": 2,
  1333. "required": true
  1334. }
  1335. },
  1336. {
  1337. "variable": "memory",
  1338. "label": "Memory (in MB)",
  1339. "description": "Memory limit for Monero Node.",
  1340. "schema": {
  1341. "type": "int",
  1342. "default": 4096,
  1343. "required": true
  1344. }
  1345. }
  1346. ]
  1347. }
  1348. }
  1349. ]
  1350. }
  1351. }
  1352. ]
  1353. },
  1354. "readme": "<h1>Monero</h1> <p><a href=\"https://www.getmonero.org/\">Monero</a> is a private, decentralized cryptocurrency that keeps your finances confidential and secure.</p>",
  1355. "changelog": null,
  1356. "chart_metadata": {
  1357. "app_version": "v0.18.4.2",
  1358. "capabilities": [],
  1359. "categories": [
  1360. "financial"
  1361. ],
  1362. "changelog_url": "https://www.getmonero.org/blog/tags/releases.html",
  1363. "date_added": "2025-02-21",
  1364. "description": "Monero is a private, decentralized cryptocurrency that keeps your finances confidential and secure.",
  1365. "home": "https://www.getmonero.org",
  1366. "host_mounts": [],
  1367. "icon": "https://media.sys.truenas.net/apps/monerod/icons/icon.png",
  1368. "keywords": [
  1369. "monero",
  1370. "cryptocurrency",
  1371. "blockchain",
  1372. "privacy"
  1373. ],
  1374. "lib_version": "2.1.49",
  1375. "lib_version_hash": "e71e6b0122c9446fa5ea6fb07e7eb01b11fb42d549a19845426bbd7e21a42634",
  1376. "maintainers": [
  1377. {
  1378. "email": "dev@ixsystems.com",
  1379. "name": "truenas",
  1380. "url": "https://www.truenas.com/"
  1381. }
  1382. ],
  1383. "name": "monerod",
  1384. "run_as_context": [
  1385. {
  1386. "description": "Monero runs as non-root user.",
  1387. "gid": 1000,
  1388. "group_name": "monero",
  1389. "uid": 1000,
  1390. "user_name": "monero"
  1391. }
  1392. ],
  1393. "screenshots": [],
  1394. "sources": [
  1395. "https://www.getmonero.org",
  1396. "https://github.com/sethforprivacy/simple-monerod-docker"
  1397. ],
  1398. "title": "Monero Node",
  1399. "train": "community",
  1400. "version": "1.1.11"
  1401. }
  1402. }
  1403. }