app_versions.json 132 KB

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