1"use strict";(self.webpackChunkaa=self.webpackChunkaa||[]).push([[295],{25224:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>u,frontMatter:()=>t,metadata:()=>o,toc:()=>c});var r=i(86070),a=i(27468);const t={sidebar_position:3},s="Hardware and software requirements",o={id:"haven-admin-guide/hw-sw-requirements",title:"Hardware and software requirements",description:"Haven Web server delivers Haven Web application code to the client every time the application is updated or browser cache emptied.",source:"@site/docs/haven-admin-guide/hw-sw-requirements.md",sourceDirName:"haven-admin-guide",slug:"/haven-admin-guide/hw-sw-requirements",permalink:"/docs/haven-admin-guide/hw-sw-requirements",draft:!1,unlisted:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Privacy and security",permalink:"/docs/haven-admin-guide/privacy-and-security"},next:{title:"Deploy and maintain Haven",permalink:"/docs/haven-admin-guide/deploy-and-maintain"}},d={},c=[{value:"Hardware requirements",id:"hardware-requirements",level:2},{value:"Containerized Haven services",id:"containerized-haven-services",level:3},{value:"Software requirements",id:"software-requirements",level:2}];function l(e){const n={admonition:"admonition",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"hardware-and-software-requirements",children:"Hardware and software requirements"}),"\n",(0,r.jsx)(n.p,{children:"Haven Web server delivers Haven Web application code to the client every time the application is updated or browser cache emptied."}),"\n",(0,r.jsx)(n.p,{children:"Apart from building the app or container (these tasks take a long time on a small machine), the OS running Haven will be mostly idle."}),"\n",(0,r.jsx)(n.admonition,{type:"tip",children:(0,r.jsx)(n.p,{children:"Administrators who set up Haven in a cloud environment may use the same VM for another application such as VPN proxy or Tor proxy, especially if the application does not consume a lot of RAM (Tor can be heavy, but Wireguard is not)."})}),"\n",(0,r.jsx)(n.h2,{id:"hardware-requirements",children:"Hardware requirements"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"x86_64 or ARM64 system capable of running recent Linux OS"}),"\n",(0,r.jsx)(n.li,{children:"1 vCPU"}),"\n",(0,r.jsx)(n.li,{children:"1 GB RAM"}),"\n",(0,r.jsx)(n.li,{children:"3 GB HDD (disk space for NodeJS, Haven app)"}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Haven does not store any client data, so disk space utilization does not grow with time. Disk activity is essentially read-only."})}),"\n",(0,r.jsx)(n.h3,{id:"containerized-haven-services",children:"Containerized Haven services"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Podman, Docker, Kubernetes, etc."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"software-requirements",children:"Software requirements"}),"\n",(0,r.jsx)(n.p,{children:"Haven"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Recent Linux distribution or (for containerized Haven) container platform"}),"\n",(0,r.jsx)(n.li,{children:"Recent Node.js LTS (required for non-containerized deployment; it is already included in Haven container image)"}),"\n",(0,r.jsx)(n.li,{children:"FQDN (for TLS certificate)"}),"\n",(0,r.jsx)(n.li,{children:"HTTPS proxy (Caddy, Cloudflare, NGINX, Traefik, etc.) and a TLS certificate"}),"\n"]}),"\n",(0,r.jsx)(n.admonition,{type:"info",children:(0,r.jsx)(n.p,{children:"Cloudflare offers hosted HTTPS proxy service and TLS certificates which has its advantages and disadvantages. Validate against own requirements."})})]})}function u(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},27468:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>o});var r=i(30758);const a={},t=r.createContext(a);function s(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.