diff --git a/404.html b/404.html index ad2f7af4..4d9a44de 100644 --- a/404.html +++ b/404.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/assets/js/0efac3c3.ddd75f48.js b/assets/js/0efac3c3.ddd75f48.js new file mode 100644 index 00000000..4f9fb5e0 --- /dev/null +++ b/assets/js/0efac3c3.ddd75f48.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8173],{5294:(e,n,s)=>{s.d(n,{Ay:()=>o,RM:()=>i});var r=s(4848),t=s(8453);const i=[];function a(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This formula is maintained by the Homebrew community."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"brew install zrok\n"})})]})}function o(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9563:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>m,contentTitle:()=>p,default:()=>b,frontMatter:()=>h,metadata:()=>r,toc:()=>x});const r=JSON.parse('{"id":"guides/install/linux","title":"Install zrok in Linux","description":"Install zrok from the Repository","source":"@site/versioned_docs/version-0.4/guides/install/linux.mdx","sourceDirName":"guides/install","slug":"/guides/install/linux","permalink":"/docs/0.4/guides/install/linux","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/guides/install/linux.mdx","tags":[],"version":"0.4","frontMatter":{"title":"Install zrok in Linux","sidebar_label":"Linux"},"sidebar":"tutorialSidebar","previous":{"title":"Install","permalink":"/docs/0.4/guides/install/"},"next":{"title":"macOS","permalink":"/docs/0.4/guides/install/macos"}}');var t=s(4848),i=s(8453),a=s(3070),o=s(3484),l=s(3769),c=s(6559),d=s(4119),u=s(5294);const h={title:"Install zrok in Linux",sidebar_label:"Linux"},p=void 0,m={},x=[{value:"Install <code>zrok</code> from the Repository",id:"install-zrok-from-the-repository",level:2},{value:"Homebrew",id:"homebrew",level:2},...u.RM,{value:"Linux Binary",id:"linux-binary",level:2}];function g(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.h2,{id:"install-zrok-from-the-repository",children:["Install ",(0,t.jsx)(n.code,{children:"zrok"})," from the Repository"]}),"\n",(0,t.jsx)(n.p,{children:"This will configure the system to receive DEB or RPM package updates."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"curl -sSf https://get.openziti.io/install.bash | sudo bash -s zrok\n"})}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsxs)(n.p,{children:["Check out ",(0,t.jsx)(n.a,{href:"/docs/0.4/guides/frontdoor?os=Linux",children:"zrok frontdoor"})," for running ",(0,t.jsx)(n.code,{children:"zrok"})," as an always-on service."]})}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:"Ansible Playbook"}),(0,t.jsxs)(d.A,{title:"Set up package repository and install zrok",children:[c.A,"\n- name: Install zrok package\ngather_facts: false\nhosts: all \nbecome: true\ntasks:\n- name: Install zrok\n ansible.builtin.package:\n name: zrok\n state: present\n"]})]}),"\n",(0,t.jsx)(n.h2,{id:"homebrew",children:"Homebrew"}),"\n",(0,t.jsx)(u.Ay,{}),"\n",(0,t.jsx)(n.h2,{id:"linux-binary",children:"Linux Binary"}),"\n",(0,t.jsx)(a.F,{children:(0,t.jsx)("div",{className:l.A.downloadContainer,children:(0,t.jsx)(o.A,{osName:"Linux",osLogo:"/img/logo-linux.svg"})})}),"\n",(0,t.jsxs)(n.p,{children:["Download the binary distribution for your Linux distribution's architecture or run the install script below to pick the correct CPU architecture automatically. For Intel and AMD 64-bit machines use the ",(0,t.jsx)(n.code,{children:"amd64"})," distribution. For Raspberry Pi use the ",(0,t.jsx)(n.code,{children:"arm64"})," distribution."]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsxs)("summary",{children:["Manually install in ",(0,t.jsx)(n.code,{children:"~/bin/zrok"})]}),(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Unarchive the distribution in a temporary directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir /tmp/zrok && tar -xf ./zrok*linux*.tar.gz -C /tmp/zrok\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.code,{children:"zrok"})," executable."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir -p ~/bin && install /tmp/zrok/zrok ~/bin/\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add ",(0,t.jsx)(n.code,{children:"~/bin"})," to your shell's executable search path. Optionally add this to your ~/.zshenv to persist the change."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"PATH=~/bin:$PATH\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["With the ",(0,t.jsx)(n.code,{children:"zrok"})," executable in your path, you can then execute the ",(0,t.jsx)(n.code,{children:"zrok"})," command from your shell:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"zrok version\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:" _ \n _____ __ ___ | | __\n|_ / '__/ _ \\| |/ /\n / /| | | (_) | < \n/___|_| \\___/|_|\\_\\\n\nv0.4.0 [c889005]\n"})}),"\n"]}),"\n"]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsxs)("summary",{children:["Script to install binary in ",(0,t.jsx)(n.code,{children:"/usr/local/bin/zrok"})]}),(0,t.jsx)(n.p,{children:"This script auto-selects the correct architecture and may be helpful for Raspberry Pi users."}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"cd $(mktemp -d);\n\nZROK_VERSION=$(\n curl -sSf https://api.github.com/repos/openziti/zrok/releases/latest \\\n | jq -r '.tag_name'\n);\n\ncase $(uname -m) in\n x86_64) GOXARCH=amd64\n ;;\n aarch64|arm64) GOXARCH=arm64\n ;;\n arm*) GOXARCH=armv7\n ;;\n *) echo \"ERROR: unknown arch '$(uname -m)'\" >&2\n exit 1\n ;;\nesac;\n\ncurl -sSfL \\\n \"https://github.com/openziti/zrok/releases/download/${ZROK_VERSION}/zrok_${ZROK_VERSION#v}_linux_${GOXARCH}.tar.gz\" \\\n | tar -xz -f -;\n\nsudo install -o root -g root ./zrok /usr/local/bin/;\n\nzrok version;\n"})})]})]})}function b(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(g,{...e})}):g(e)}},3070:(e,n,s)=>{s.d(n,{F:()=>o,d:()=>a});var r=s(6540),t=s(4848);const i=(0,r.createContext)([]),a=()=>(0,r.useContext)(i),o=e=>{let{children:n}=e;const[s,a]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(i.Provider,{value:s,children:n})}},4119:(e,n,s)=>{s.d(n,{A:()=>a});s(6540);var r=s(382),t=s(8069),i=s(4848);const a=e=>{let{title:n,children:s}=e;const a=s.map((e=>"string"==typeof e?e.trim():r.Ay.dump(e).trim())).join("\n\n");return(0,i.jsx)("div",{children:(0,i.jsx)(t.A,{language:"yaml",title:n,children:a})})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(3070),t=s(3769),i=s(8532),a=s(4848);const o=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:c}=e;const{colorMode:d}=(0,i.G)(),u=(0,r.d)();console.log("Assets in DownloadCard:",u);const h=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),p=u.filter((e=>e.name.includes(h)));return console.log("Filtered assets for",n,"in DownloadCard:",p),(0,a.jsxs)("div",{className:t.A.downloadCard,children:[(0,a.jsx)("div",{className:t.A.imgContainer,children:(0,a.jsx)("img",{src:s,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),p.length>0&&(0,a.jsx)("ul",{children:p.map(((e,n)=>(0,a.jsx)("li",{className:t.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:o(e.arch)})},n)))}),c&&(0,a.jsxs)("div",{className:t.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:c,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},6559:(e,n,s)=>{s.d(n,{A:()=>r});const r=[{name:"Set up zrok Package Repo",gather_facts:!0,hosts:"all",become:!0,tasks:[{name:"Set up apt repo",when:'ansible_os_family == "Debian"',block:[{name:"Install playbook dependencies","ansible.builtin.package":{name:["gnupg"],state:"present"}},{name:"Fetch armored pubkey","ansible.builtin.uri":{url:"https://get.openziti.io/tun/package-repos.gpg",return_content:"yes"},register:"armored_pubkey"},{name:"Dearmor pubkey","ansible.builtin.shell":'gpg --dearmor --output /usr/share/keyrings/openziti.gpg <<< "{{ armored_pubkey.content }}"\n',args:{creates:"/usr/share/keyrings/openziti.gpg",executable:"/bin/bash"}},{name:"Set pubkey filemode","ansible.builtin.file":{path:"/usr/share/keyrings/openziti.gpg",mode:"a+rX"}},{name:"Install OpenZiti repo deb source","ansible.builtin.copy":{dest:"/etc/apt/sources.list.d/openziti-release.list",content:"deb [signed-by=/usr/share/keyrings/openziti.gpg] https://packages.openziti.org/zitipax-openziti-deb-stable debian main\n"}},{name:"Refresh Repo Sources","ansible.builtin.apt":{update_cache:"yes",cache_valid_time:3600}}]},{name:"Set up yum repo",when:'ansible_os_family == "RedHat"',block:[{name:"Install OpenZiti repo rpm source","ansible.builtin.yum_repository":{name:"OpenZitiRelease",description:"OpenZiti Release",baseurl:"https://packages.openziti.org/zitipax-openziti-rpm-stable/redhat/$basearch",enabled:"yes",gpgkey:"https://packages.openziti.org/zitipax-openziti-rpm-stable/redhat/$basearch/repodata/repomd.xml.key",repo_gpgcheck:"yes",gpgcheck:"no"}}]}]}]}}]); \ No newline at end of file diff --git a/assets/js/0efac3c3.e00c8d4e.js b/assets/js/0efac3c3.e00c8d4e.js deleted file mode 100644 index 909a4f66..00000000 --- a/assets/js/0efac3c3.e00c8d4e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8173],{5294:(e,n,s)=>{s.d(n,{Ay:()=>o,RM:()=>i});var r=s(4848),t=s(8453);const i=[];function a(e){const n={code:"code",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"brew install zrok\n"})})}function o(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},9563:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>m,contentTitle:()=>p,default:()=>b,frontMatter:()=>h,metadata:()=>r,toc:()=>x});const r=JSON.parse('{"id":"guides/install/linux","title":"Install zrok in Linux","description":"Install zrok from the Repository","source":"@site/versioned_docs/version-0.4/guides/install/linux.mdx","sourceDirName":"guides/install","slug":"/guides/install/linux","permalink":"/docs/0.4/guides/install/linux","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/guides/install/linux.mdx","tags":[],"version":"0.4","frontMatter":{"title":"Install zrok in Linux","sidebar_label":"Linux"},"sidebar":"tutorialSidebar","previous":{"title":"Install","permalink":"/docs/0.4/guides/install/"},"next":{"title":"macOS","permalink":"/docs/0.4/guides/install/macos"}}');var t=s(4848),i=s(8453),a=s(3070),o=s(3484),l=s(3769),c=s(6559),d=s(4119),u=s(5294);const h={title:"Install zrok in Linux",sidebar_label:"Linux"},p=void 0,m={},x=[{value:"Install <code>zrok</code> from the Repository",id:"install-zrok-from-the-repository",level:2},{value:"Homebrew",id:"homebrew",level:2},...u.RM,{value:"Linux Binary",id:"linux-binary",level:2}];function g(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.h2,{id:"install-zrok-from-the-repository",children:["Install ",(0,t.jsx)(n.code,{children:"zrok"})," from the Repository"]}),"\n",(0,t.jsx)(n.p,{children:"This will configure the system to receive DEB or RPM package updates."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"curl -sSf https://get.openziti.io/install.bash | sudo bash -s zrok\n"})}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsxs)(n.p,{children:["Check out ",(0,t.jsx)(n.a,{href:"/docs/0.4/guides/frontdoor?os=Linux",children:"zrok frontdoor"})," for running ",(0,t.jsx)(n.code,{children:"zrok"})," as an always-on service."]})}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:"Ansible Playbook"}),(0,t.jsxs)(d.A,{title:"Set up package repository and install zrok",children:[c.A,"\n- name: Install zrok package\ngather_facts: false\nhosts: all \nbecome: true\ntasks:\n- name: Install zrok\n ansible.builtin.package:\n name: zrok\n state: present\n"]})]}),"\n",(0,t.jsx)(n.h2,{id:"homebrew",children:"Homebrew"}),"\n",(0,t.jsx)(u.Ay,{}),"\n",(0,t.jsx)(n.h2,{id:"linux-binary",children:"Linux Binary"}),"\n",(0,t.jsx)(a.F,{children:(0,t.jsx)("div",{className:l.A.downloadContainer,children:(0,t.jsx)(o.A,{osName:"Linux",osLogo:"/img/logo-linux.svg"})})}),"\n",(0,t.jsxs)(n.p,{children:["Download the binary distribution for your Linux distribution's architecture or run the install script below to pick the correct CPU architecture automatically. For Intel and AMD 64-bit machines use the ",(0,t.jsx)(n.code,{children:"amd64"})," distribution. For Raspberry Pi use the ",(0,t.jsx)(n.code,{children:"arm64"})," distribution."]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsxs)("summary",{children:["Manually install in ",(0,t.jsx)(n.code,{children:"~/bin/zrok"})]}),(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Unarchive the distribution in a temporary directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir /tmp/zrok && tar -xf ./zrok*linux*.tar.gz -C /tmp/zrok\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.code,{children:"zrok"})," executable."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir -p ~/bin && install /tmp/zrok/zrok ~/bin/\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add ",(0,t.jsx)(n.code,{children:"~/bin"})," to your shell's executable search path. Optionally add this to your ~/.zshenv to persist the change."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"PATH=~/bin:$PATH\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["With the ",(0,t.jsx)(n.code,{children:"zrok"})," executable in your path, you can then execute the ",(0,t.jsx)(n.code,{children:"zrok"})," command from your shell:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"zrok version\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:" _ \n _____ __ ___ | | __\n|_ / '__/ _ \\| |/ /\n / /| | | (_) | < \n/___|_| \\___/|_|\\_\\\n\nv0.4.0 [c889005]\n"})}),"\n"]}),"\n"]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsxs)("summary",{children:["Script to install binary in ",(0,t.jsx)(n.code,{children:"/usr/local/bin/zrok"})]}),(0,t.jsx)(n.p,{children:"This script auto-selects the correct architecture and may be helpful for Raspberry Pi users."}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"cd $(mktemp -d);\n\nZROK_VERSION=$(\n curl -sSf https://api.github.com/repos/openziti/zrok/releases/latest \\\n | jq -r '.tag_name'\n);\n\ncase $(uname -m) in\n x86_64) GOXARCH=amd64\n ;;\n aarch64|arm64) GOXARCH=arm64\n ;;\n arm*) GOXARCH=armv7\n ;;\n *) echo \"ERROR: unknown arch '$(uname -m)'\" >&2\n exit 1\n ;;\nesac;\n\ncurl -sSfL \\\n \"https://github.com/openziti/zrok/releases/download/${ZROK_VERSION}/zrok_${ZROK_VERSION#v}_linux_${GOXARCH}.tar.gz\" \\\n | tar -xz -f -;\n\nsudo install -o root -g root ./zrok /usr/local/bin/;\n\nzrok version;\n"})})]})]})}function b(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(g,{...e})}):g(e)}},3070:(e,n,s)=>{s.d(n,{F:()=>o,d:()=>a});var r=s(6540),t=s(4848);const i=(0,r.createContext)([]),a=()=>(0,r.useContext)(i),o=e=>{let{children:n}=e;const[s,a]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(i.Provider,{value:s,children:n})}},4119:(e,n,s)=>{s.d(n,{A:()=>a});s(6540);var r=s(382),t=s(8069),i=s(4848);const a=e=>{let{title:n,children:s}=e;const a=s.map((e=>"string"==typeof e?e.trim():r.Ay.dump(e).trim())).join("\n\n");return(0,i.jsx)("div",{children:(0,i.jsx)(t.A,{language:"yaml",title:n,children:a})})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(3070),t=s(3769),i=s(8532),a=s(4848);const o=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:c}=e;const{colorMode:d}=(0,i.G)(),u=(0,r.d)();console.log("Assets in DownloadCard:",u);const h=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),p=u.filter((e=>e.name.includes(h)));return console.log("Filtered assets for",n,"in DownloadCard:",p),(0,a.jsxs)("div",{className:t.A.downloadCard,children:[(0,a.jsx)("div",{className:t.A.imgContainer,children:(0,a.jsx)("img",{src:s,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),p.length>0&&(0,a.jsx)("ul",{children:p.map(((e,n)=>(0,a.jsx)("li",{className:t.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:o(e.arch)})},n)))}),c&&(0,a.jsxs)("div",{className:t.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:c,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},6559:(e,n,s)=>{s.d(n,{A:()=>r});const r=[{name:"Set up zrok Package Repo",gather_facts:!0,hosts:"all",become:!0,tasks:[{name:"Set up apt repo",when:'ansible_os_family == "Debian"',block:[{name:"Install playbook dependencies","ansible.builtin.package":{name:["gnupg"],state:"present"}},{name:"Fetch armored pubkey","ansible.builtin.uri":{url:"https://get.openziti.io/tun/package-repos.gpg",return_content:"yes"},register:"armored_pubkey"},{name:"Dearmor pubkey","ansible.builtin.shell":'gpg --dearmor --output /usr/share/keyrings/openziti.gpg <<< "{{ armored_pubkey.content }}"\n',args:{creates:"/usr/share/keyrings/openziti.gpg",executable:"/bin/bash"}},{name:"Set pubkey filemode","ansible.builtin.file":{path:"/usr/share/keyrings/openziti.gpg",mode:"a+rX"}},{name:"Install OpenZiti repo deb source","ansible.builtin.copy":{dest:"/etc/apt/sources.list.d/openziti-release.list",content:"deb [signed-by=/usr/share/keyrings/openziti.gpg] https://packages.openziti.org/zitipax-openziti-deb-stable debian main\n"}},{name:"Refresh Repo Sources","ansible.builtin.apt":{update_cache:"yes",cache_valid_time:3600}}]},{name:"Set up yum repo",when:'ansible_os_family == "RedHat"',block:[{name:"Install OpenZiti repo rpm source","ansible.builtin.yum_repository":{name:"OpenZitiRelease",description:"OpenZiti Release",baseurl:"https://packages.openziti.org/zitipax-openziti-rpm-stable/redhat/$basearch",enabled:"yes",gpgkey:"https://packages.openziti.org/zitipax-openziti-rpm-stable/redhat/$basearch/repodata/repomd.xml.key",repo_gpgcheck:"yes",gpgcheck:"no"}}]}]}]}}]); \ No newline at end of file diff --git a/assets/js/11b43341.79f8cce9.js b/assets/js/11b43341.e4ddb3ce.js similarity index 69% rename from assets/js/11b43341.79f8cce9.js rename to assets/js/11b43341.e4ddb3ce.js index f0abf0e6..dabe84c1 100644 --- a/assets/js/11b43341.79f8cce9.js +++ b/assets/js/11b43341.e4ddb3ce.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2256],{5293:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"1.0","banner":null,"badge":true,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Getting Started","href":"/docs/getting-started","docId":"getting-started","unlisted":false},{"type":"category","label":"Concepts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Private Shares","href":"/docs/concepts/sharing-private","docId":"concepts/sharing-private","unlisted":false},{"type":"link","label":"Public Shares","href":"/docs/concepts/sharing-public","docId":"concepts/sharing-public","unlisted":false},{"type":"link","label":"Reserved Shares","href":"/docs/concepts/sharing-reserved","docId":"concepts/sharing-reserved","unlisted":false},{"type":"link","label":"Sharing HTTP Servers","href":"/docs/concepts/http","docId":"concepts/http","unlisted":false},{"type":"link","label":"Sharing TCP and UDP Servers","href":"/docs/concepts/tunnels","docId":"concepts/tunnels","unlisted":false},{"type":"link","label":"Sharing Websites and Files","href":"/docs/concepts/files","docId":"concepts/files","unlisted":false},{"type":"link","label":"Open Source","href":"/docs/concepts/opensource","docId":"concepts/opensource","unlisted":false},{"type":"link","label":"Hosting","href":"/docs/concepts/hosting","docId":"concepts/hosting","unlisted":false}],"href":"/docs/concepts/"},{"type":"category","label":"Guides","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Install","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Linux","href":"/docs/guides/install/linux","docId":"guides/install/linux","unlisted":false},{"type":"link","label":"macOS","href":"/docs/guides/install/macos","docId":"guides/install/macos","unlisted":false},{"type":"link","label":"Windows","href":"/docs/guides/install/windows","docId":"guides/install/windows","unlisted":false}],"href":"/docs/guides/install/"},{"type":"category","label":"The zrok Agent","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Linux Agent Service","href":"/docs/guides/agent/linux-service","docId":"guides/agent/linux-service","unlisted":false},{"type":"link","label":"Windows Agent Service","href":"/docs/guides/agent/windows-service/","docId":"guides/agent/windows-service/index","unlisted":false}],"href":"/docs/guides/agent/"},{"type":"link","label":"frontdoor","href":"/docs/guides/frontdoor","docId":"guides/frontdoor","unlisted":false},{"type":"link","label":"Permission Modes","href":"/docs/guides/permission-modes","docId":"guides/permission-modes","unlisted":false},{"type":"category","label":"Docker Share","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Public Share","href":"/docs/guides/docker-share/docker_public_share_guide","docId":"guides/docker-share/docker_public_share_guide","unlisted":false},{"type":"link","label":"Private Share","href":"/docs/guides/docker-share/docker_private_share_guide","docId":"guides/docker-share/docker_private_share_guide","unlisted":false}],"href":"/docs/guides/docker-share/"},{"type":"category","label":"Self Hosting","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Linux","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"NGINX TLS","href":"/docs/guides/self-hosting/linux/nginx","docId":"guides/self-hosting/linux/nginx","unlisted":false}],"href":"/docs/guides/self-hosting/linux/"},{"type":"link","label":"Interstitial Pages","href":"/docs/guides/self-hosting/interstitial-page","docId":"guides/self-hosting/interstitial-page","unlisted":false},{"type":"link","label":"Organizations","href":"/docs/guides/self-hosting/organizations","docId":"guides/self-hosting/organizations","unlisted":false},{"type":"link","label":"Personalized Frontend","href":"/docs/guides/self-hosting/personalized-frontend","docId":"guides/self-hosting/personalized-frontend","unlisted":false},{"type":"link","label":"Docker","href":"/docs/guides/self-hosting/docker","docId":"guides/self-hosting/docker","unlisted":false},{"type":"link","label":"Kubernetes","href":"/docs/guides/self-hosting/kubernetes","docId":"guides/self-hosting/kubernetes","unlisted":false},{"type":"category","label":"Metrics and Limits","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuring Metrics","href":"/docs/guides/self-hosting/metrics-and-limits/configuring-metrics","docId":"guides/self-hosting/metrics-and-limits/configuring-metrics","unlisted":false},{"type":"link","label":"Configuring Limits","href":"/docs/guides/self-hosting/metrics-and-limits/configuring-limits","docId":"guides/self-hosting/metrics-and-limits/configuring-limits","unlisted":false}],"href":"/docs/category/metrics-and-limits"},{"type":"category","label":"OAuth","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"OAuth Public Frontend Configuration","href":"/docs/guides/self-hosting/oauth/configuring-oauth","docId":"guides/self-hosting/oauth/configuring-oauth","unlisted":false}],"href":"/docs/category/oauth"},{"type":"link","label":"Instance Config","href":"/docs/guides/self-hosting/instance-configuration","docId":"guides/self-hosting/instance-configuration","unlisted":false},{"type":"link","label":"Invitations","href":"/docs/guides/self-hosting/self-service-invite","docId":"guides/self-hosting/self-service-invite","unlisted":false}],"href":"/docs/category/self-hosting"},{"type":"link","label":"Drives","href":"/docs/guides/drives","docId":"guides/drives","unlisted":false},{"type":"link","label":"VPN","href":"/docs/guides/vpn/","docId":"guides/vpn/vpn","unlisted":false}],"href":"/docs/category/guides"},{"type":"category","label":"myzrok","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Custom Domains","href":"/docs/myzrok/custom-domains/","docId":"myzrok/custom-domains/index","unlisted":false}],"href":"/docs/category/myzrok"}]},"docs":{"concepts/files":{"id":"concepts/files","title":"Sharing Websites and Files","description":"With zrok it is possible to share files quickly and easily as well. To share files using zrok use","sidebar":"tutorialSidebar"},"concepts/hosting":{"id":"concepts/hosting","title":"Hosting","description":"Self-Hosted","sidebar":"tutorialSidebar"},"concepts/http":{"id":"concepts/http","title":"Sharing HTTP Servers","description":"zrok can share HTTP and HTTPS resources natively. If you have an existing web server that you want to share with other users, you can use the zrok share command using the --backend-mode proxy flag.","sidebar":"tutorialSidebar"},"concepts/index":{"id":"concepts/index","title":"Concepts","description":"zrok was designed to make sharing local resources both secure and easy. In this section of the zrok documentation, we\'ll tour through all of the most important features.","sidebar":"tutorialSidebar"},"concepts/opensource":{"id":"concepts/opensource","title":"Open Source","description":"It\'s important to the zrok project that it remain free and open source software. The code is available on GitHub","sidebar":"tutorialSidebar"},"concepts/sharing-private":{"id":"concepts/sharing-private","title":"Private Shares","description":"zrok was built to share and access digital resources. A private share allows a resource to be","sidebar":"tutorialSidebar"},"concepts/sharing-public":{"id":"concepts/sharing-public","title":"Public Shares","description":"zrok supports public sharing for web-based (HTTP and HTTPS) resources. These resources are easily shared with the general internet through public access points.","sidebar":"tutorialSidebar"},"concepts/sharing-reserved":{"id":"concepts/sharing-reserved","title":"Reserved Shares","description":"By default, a public or private share is assigned a share token when you create a share using the zrok share command. The zrok share command is the bridge between your local environment and the users you are sharing with. When you terminate the zrok share, the bridge is eliminated and the share token is deleted. If you run zrok share again, you will be allocated a brand new share token.","sidebar":"tutorialSidebar"},"concepts/tunnels":{"id":"concepts/tunnels","title":"Sharing TCP and UDP Servers","description":"zrok includes support for sharing low-level TCP and UDP network resources using the tcpTunnel and udpTunnel backend modes.","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"If you\'ve upgraded to v1.0.0 from a previous version and you receive an error message like this:","sidebar":"tutorialSidebar"},"guides/agent/index":{"id":"guides/agent/index","title":"Agent","description":"The zrok Agent centralizes management of your zrok shares and accesses. It provides both web-based and command-line interfaces, and changes how the zrok share and zrok access commands behave.","sidebar":"tutorialSidebar"},"guides/agent/linux-service":{"id":"guides/agent/linux-service","title":"Linux Agent Service","description":"Overview","sidebar":"tutorialSidebar"},"guides/agent/windows-service/index":{"id":"guides/agent/windows-service/index","title":"Configuring a Windows Service","description":"In Windows environments, it can be useful to run the zrok Agent as a service, allowing it to automatically restart with your system.","sidebar":"tutorialSidebar"},"guides/docker-share/docker_private_share_guide":{"id":"guides/docker-share/docker_private_share_guide","title":"Docker Private Share","description":"Goal","sidebar":"tutorialSidebar"},"guides/docker-share/docker_public_share_guide":{"id":"guides/docker-share/docker_public_share_guide","title":"Docker Compose Public Share","description":"Goal","sidebar":"tutorialSidebar"},"guides/docker-share/index":{"id":"guides/docker-share/index","title":"Getting Started with Docker","description":"Overview","sidebar":"tutorialSidebar"},"guides/drives":{"id":"guides/drives","title":"Drives","description":"The zrok drives CLI tools allow for simple, ergonomic management and synchronization of local and remote files.","sidebar":"tutorialSidebar"},"guides/frontdoor":{"id":"guides/frontdoor","title":"zrok frontdoor","description":"zrok frontdoor is the heavy-duty front door to your app or site. It makes your website or app available to your online audience through the shield of zrok.io\'s hardened, managed frontends.","sidebar":"tutorialSidebar"},"guides/install/index":{"id":"guides/install/index","title":"Install","description":"","sidebar":"tutorialSidebar"},"guides/install/linux":{"id":"guides/install/linux","title":"Install zrok in Linux","description":"Install zrok from the Repository","sidebar":"tutorialSidebar"},"guides/install/macos":{"id":"guides/install/macos","title":"Install zrok in macOS","description":"Homebrew","sidebar":"tutorialSidebar"},"guides/install/windows":{"id":"guides/install/windows","title":"Install zrok in Windows","description":"Windows Binary","sidebar":"tutorialSidebar"},"guides/permission-modes":{"id":"guides/permission-modes","title":"Permission Modes","description":"Shares created in zrok v0.4.26 and newer now include a choice of permission mode.","sidebar":"tutorialSidebar"},"guides/self-hosting/docker":{"id":"guides/self-hosting/docker","title":"Self-hosting guide for Docker","description":"","sidebar":"tutorialSidebar"},"guides/self-hosting/instance-configuration":{"id":"guides/self-hosting/instance-configuration","title":"Use Another zrok Instance","description":"This guide is relevant if you are self-hosting or using a friend\'s zrok instance instead of using zrok-as-a-service from zrok.io.","sidebar":"tutorialSidebar"},"guides/self-hosting/interstitial-page":{"id":"guides/self-hosting/interstitial-page","title":"Interstitial Pages","description":"On large zrok installations that support open registration and shared public frontends, abuse can become an issue. In order to mitigate phishing and other similar forms of abuse, zrok offers an interstitial page that announces to the visiting user that the share is hosted through zrok, and probably isn\'t their financial institution.","sidebar":"tutorialSidebar"},"guides/self-hosting/kubernetes":{"id":"guides/self-hosting/kubernetes","title":"Self-host a zrok Instance in Kubernetes","description":"The Helm chart for zrok is available from the main OpenZiti charts repo.","sidebar":"tutorialSidebar"},"guides/self-hosting/linux/index":{"id":"guides/self-hosting/linux/index","title":"Self-Hosting Guide for Linux","description":"Walkthrough Video","sidebar":"tutorialSidebar"},"guides/self-hosting/linux/nginx":{"id":"guides/self-hosting/linux/nginx","title":"NGINX Reverse Proxy for zrok","description":"Walkthrough Video","sidebar":"tutorialSidebar"},"guides/self-hosting/metrics-and-limits/configuring-limits":{"id":"guides/self-hosting/metrics-and-limits/configuring-limits","title":"Configuring Limits","description":"This guide is current as of zrok version v0.4.31.","sidebar":"tutorialSidebar"},"guides/self-hosting/metrics-and-limits/configuring-metrics":{"id":"guides/self-hosting/metrics-and-limits/configuring-metrics","title":"Configuring Metrics","description":"A fully configured, production-scale zrok service instance looks like this:","sidebar":"tutorialSidebar"},"guides/self-hosting/oauth/configuring-oauth":{"id":"guides/self-hosting/oauth/configuring-oauth","title":"OAuth Public Frontend Configuration","description":"As of v0.4.7, zrok includes OAuth integration for both Google and GitHub for zrok access public public frontends.","sidebar":"tutorialSidebar"},"guides/self-hosting/organizations":{"id":"guides/self-hosting/organizations","title":"Organizations","description":"zrok (starting with v0.4.45) includes support for \\"organizations\\". Organizations are groups of related accounts that are typically centrally managed in some capacity. A zrok account can be a member of multiple organizations. Organization membership can also include an \\"admin\\" permission. As of v0.4.45 organization admins are able to retrieve an \\"overview\\" (zrok overview) from any other account in the organization, allowing the admin to see the details of the environments, shares, and accesses created within that account.","sidebar":"tutorialSidebar"},"guides/self-hosting/personalized-frontend":{"id":"guides/self-hosting/personalized-frontend","title":"Personalized Frontend","description":"This guide describes an approach that enables a zrok user to use a hosted, shared instance (zrok.io) and configure their own personalized frontend, which enables custom DNS and TLS for their shares.","sidebar":"tutorialSidebar"},"guides/self-hosting/self-service-invite":{"id":"guides/self-hosting/self-service-invite","title":"Invitations","description":"This is how to set up self-service invitations for your users to get an account on your self-hosted zrok instance.","sidebar":"tutorialSidebar"},"guides/vpn/vpn":{"id":"guides/vpn/vpn","title":"zrok VPN Guide","description":"zrok VPN backend allows for simple host-to-host VPN setup.","sidebar":"tutorialSidebar"},"myzrok/custom-domains/index":{"id":"myzrok/custom-domains/index","title":"Custom Domains","description":"Overview","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2256],{5293:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"1.0","banner":null,"badge":true,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","label":"Getting Started","href":"/docs/getting-started","docId":"getting-started","unlisted":false},{"type":"category","label":"Concepts","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Private Shares","href":"/docs/concepts/sharing-private","docId":"concepts/sharing-private","unlisted":false},{"type":"link","label":"Public Shares","href":"/docs/concepts/sharing-public","docId":"concepts/sharing-public","unlisted":false},{"type":"link","label":"Reserved Shares","href":"/docs/concepts/sharing-reserved","docId":"concepts/sharing-reserved","unlisted":false},{"type":"link","label":"Sharing HTTP Servers","href":"/docs/concepts/http","docId":"concepts/http","unlisted":false},{"type":"link","label":"Sharing TCP and UDP Servers","href":"/docs/concepts/tunnels","docId":"concepts/tunnels","unlisted":false},{"type":"link","label":"Sharing Websites and Files","href":"/docs/concepts/files","docId":"concepts/files","unlisted":false},{"type":"link","label":"Open Source","href":"/docs/concepts/opensource","docId":"concepts/opensource","unlisted":false},{"type":"link","label":"Hosting","href":"/docs/concepts/hosting","docId":"concepts/hosting","unlisted":false}],"href":"/docs/concepts/"},{"type":"category","label":"Guides","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Install","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Linux","href":"/docs/guides/install/linux","docId":"guides/install/linux","unlisted":false},{"type":"link","label":"macOS","href":"/docs/guides/install/macos","docId":"guides/install/macos","unlisted":false},{"type":"link","label":"Windows","href":"/docs/guides/install/windows","docId":"guides/install/windows","unlisted":false}],"href":"/docs/guides/install/"},{"type":"category","label":"The zrok Agent","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Linux Agent Service","href":"/docs/guides/agent/linux-service","docId":"guides/agent/linux-service","unlisted":false},{"type":"link","label":"Windows Agent Service","href":"/docs/guides/agent/windows-service/","docId":"guides/agent/windows-service/index","unlisted":false}],"href":"/docs/guides/agent/"},{"type":"link","label":"frontdoor","href":"/docs/guides/frontdoor","docId":"guides/frontdoor","unlisted":false},{"type":"link","label":"Permission Modes","href":"/docs/guides/permission-modes","docId":"guides/permission-modes","unlisted":false},{"type":"category","label":"Docker Share","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Public Share","href":"/docs/guides/docker-share/docker_public_share_guide","docId":"guides/docker-share/docker_public_share_guide","unlisted":false},{"type":"link","label":"Private Share","href":"/docs/guides/docker-share/docker_private_share_guide","docId":"guides/docker-share/docker_private_share_guide","unlisted":false}],"href":"/docs/guides/docker-share/"},{"type":"category","label":"Self Hosting","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Linux","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"NGINX TLS","href":"/docs/guides/self-hosting/linux/nginx","docId":"guides/self-hosting/linux/nginx","unlisted":false}],"href":"/docs/guides/self-hosting/linux/"},{"type":"link","label":"Interstitial Pages","href":"/docs/guides/self-hosting/interstitial-page","docId":"guides/self-hosting/interstitial-page","unlisted":false},{"type":"link","label":"Organizations","href":"/docs/guides/self-hosting/organizations","docId":"guides/self-hosting/organizations","unlisted":false},{"type":"link","label":"Personalized Frontend","href":"/docs/guides/self-hosting/personalized-frontend","docId":"guides/self-hosting/personalized-frontend","unlisted":false},{"type":"link","label":"Docker","href":"/docs/guides/self-hosting/docker","docId":"guides/self-hosting/docker","unlisted":false},{"type":"link","label":"Kubernetes","href":"/docs/guides/self-hosting/kubernetes","docId":"guides/self-hosting/kubernetes","unlisted":false},{"type":"category","label":"Metrics and Limits","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configuring Metrics","href":"/docs/guides/self-hosting/metrics-and-limits/configuring-metrics","docId":"guides/self-hosting/metrics-and-limits/configuring-metrics","unlisted":false},{"type":"link","label":"Configuring Limits","href":"/docs/guides/self-hosting/metrics-and-limits/configuring-limits","docId":"guides/self-hosting/metrics-and-limits/configuring-limits","unlisted":false}],"href":"/docs/category/metrics-and-limits"},{"type":"category","label":"OAuth","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"OAuth Public Frontend Configuration","href":"/docs/guides/self-hosting/oauth/configuring-oauth","docId":"guides/self-hosting/oauth/configuring-oauth","unlisted":false}],"href":"/docs/category/oauth"},{"type":"link","label":"Instance Config","href":"/docs/guides/self-hosting/instance-configuration","docId":"guides/self-hosting/instance-configuration","unlisted":false},{"type":"link","label":"Invitations","href":"/docs/guides/self-hosting/self-service-invite","docId":"guides/self-hosting/self-service-invite","unlisted":false}],"href":"/docs/category/self-hosting"},{"type":"link","label":"Drives","href":"/docs/guides/drives","docId":"guides/drives","unlisted":false},{"type":"link","label":"VPN","href":"/docs/guides/vpn/","docId":"guides/vpn/vpn","unlisted":false}],"href":"/docs/category/guides"},{"type":"category","label":"myzrok","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Custom Domains","href":"/docs/myzrok/custom-domains/","docId":"myzrok/custom-domains/index","unlisted":false}],"href":"/docs/category/myzrok"}]},"docs":{"concepts/files":{"id":"concepts/files","title":"Sharing Websites and Files","description":"With zrok it is possible to share files quickly and easily as well. To share files using zrok use","sidebar":"tutorialSidebar"},"concepts/hosting":{"id":"concepts/hosting","title":"Hosting","description":"Self-Hosted","sidebar":"tutorialSidebar"},"concepts/http":{"id":"concepts/http","title":"Sharing HTTP Servers","description":"zrok can share HTTP and HTTPS resources natively. If you have an existing web server that you want to share with other users, you can use the zrok share command using the --backend-mode proxy flag.","sidebar":"tutorialSidebar"},"concepts/index":{"id":"concepts/index","title":"Concepts","description":"zrok was designed to make sharing local resources both secure and easy. In this section of the zrok documentation, we\'ll tour through all of the most important features.","sidebar":"tutorialSidebar"},"concepts/opensource":{"id":"concepts/opensource","title":"Open Source","description":"It\'s important to the zrok project that it remain free and open source software. The code is available on GitHub","sidebar":"tutorialSidebar"},"concepts/sharing-private":{"id":"concepts/sharing-private","title":"Private Shares","description":"zrok was built to share and access digital resources. A private share allows a resource to be","sidebar":"tutorialSidebar"},"concepts/sharing-public":{"id":"concepts/sharing-public","title":"Public Shares","description":"zrok supports public sharing for web-based (HTTP and HTTPS) resources. These resources are easily shared with the general internet through public access points.","sidebar":"tutorialSidebar"},"concepts/sharing-reserved":{"id":"concepts/sharing-reserved","title":"Reserved Shares","description":"By default, a public or private share is assigned a share token when you create a share using the zrok share command. The zrok share command is the bridge between your local environment and the users you are sharing with. When you terminate the zrok share, the bridge is eliminated and the share token is deleted. If you run zrok share again, you will be allocated a brand new share token.","sidebar":"tutorialSidebar"},"concepts/tunnels":{"id":"concepts/tunnels","title":"Sharing TCP and UDP Servers","description":"zrok includes support for sharing low-level TCP and UDP network resources using the tcpTunnel and udpTunnel backend modes.","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"If you\'ve upgraded to v1.0.0 from a previous version and you receive an error message like this:","sidebar":"tutorialSidebar"},"guides/agent/index":{"id":"guides/agent/index","title":"Agent","description":"The zrok Agent centralizes management of your zrok shares and accesses. It provides both web-based and command-line interfaces, and changes how the zrok share and zrok access commands behave.","sidebar":"tutorialSidebar"},"guides/agent/linux-service":{"id":"guides/agent/linux-service","title":"Linux Agent Service","description":"Overview","sidebar":"tutorialSidebar"},"guides/agent/windows-service/index":{"id":"guides/agent/windows-service/index","title":"Configuring a Windows Service","description":"In Windows environments, it can be useful to run the zrok Agent as a service, allowing it to automatically restart with your system.","sidebar":"tutorialSidebar"},"guides/docker-share/docker_private_share_guide":{"id":"guides/docker-share/docker_private_share_guide","title":"Docker Private Share","description":"Goal","sidebar":"tutorialSidebar"},"guides/docker-share/docker_public_share_guide":{"id":"guides/docker-share/docker_public_share_guide","title":"Docker Compose Public Share","description":"Goal","sidebar":"tutorialSidebar"},"guides/docker-share/index":{"id":"guides/docker-share/index","title":"Getting Started with Docker","description":"Overview","sidebar":"tutorialSidebar"},"guides/drives":{"id":"guides/drives","title":"Drives","description":"The zrok drives CLI tools allow for simple, ergonomic management and synchronization of local and remote files.","sidebar":"tutorialSidebar"},"guides/frontdoor":{"id":"guides/frontdoor","title":"zrok frontdoor","description":"zrok frontdoor is the heavy-duty front door to your app or site. It makes your website or app available to your online audience through the shield of zrok.io\'s hardened, managed frontends.","sidebar":"tutorialSidebar"},"guides/install/index":{"id":"guides/install/index","title":"Install","description":"","sidebar":"tutorialSidebar"},"guides/install/linux":{"id":"guides/install/linux","title":"Install zrok in Linux","description":"Package Repository","sidebar":"tutorialSidebar"},"guides/install/macos":{"id":"guides/install/macos","title":"Install zrok in macOS","description":"Homebrew","sidebar":"tutorialSidebar"},"guides/install/windows":{"id":"guides/install/windows","title":"Install zrok in Windows","description":"Windows Binary","sidebar":"tutorialSidebar"},"guides/permission-modes":{"id":"guides/permission-modes","title":"Permission Modes","description":"Shares created in zrok v0.4.26 and newer now include a choice of permission mode.","sidebar":"tutorialSidebar"},"guides/self-hosting/docker":{"id":"guides/self-hosting/docker","title":"Self-hosting guide for Docker","description":"","sidebar":"tutorialSidebar"},"guides/self-hosting/instance-configuration":{"id":"guides/self-hosting/instance-configuration","title":"Use Another zrok Instance","description":"This guide is relevant if you are self-hosting or using a friend\'s zrok instance instead of using zrok-as-a-service from zrok.io.","sidebar":"tutorialSidebar"},"guides/self-hosting/interstitial-page":{"id":"guides/self-hosting/interstitial-page","title":"Interstitial Pages","description":"On large zrok installations that support open registration and shared public frontends, abuse can become an issue. In order to mitigate phishing and other similar forms of abuse, zrok offers an interstitial page that announces to the visiting user that the share is hosted through zrok, and probably isn\'t their financial institution.","sidebar":"tutorialSidebar"},"guides/self-hosting/kubernetes":{"id":"guides/self-hosting/kubernetes","title":"Self-host a zrok Instance in Kubernetes","description":"The Helm chart for zrok is available from the main OpenZiti charts repo.","sidebar":"tutorialSidebar"},"guides/self-hosting/linux/index":{"id":"guides/self-hosting/linux/index","title":"Self-Hosting Guide for Linux","description":"Walkthrough Video","sidebar":"tutorialSidebar"},"guides/self-hosting/linux/nginx":{"id":"guides/self-hosting/linux/nginx","title":"NGINX Reverse Proxy for zrok","description":"Walkthrough Video","sidebar":"tutorialSidebar"},"guides/self-hosting/metrics-and-limits/configuring-limits":{"id":"guides/self-hosting/metrics-and-limits/configuring-limits","title":"Configuring Limits","description":"This guide is current as of zrok version v0.4.31.","sidebar":"tutorialSidebar"},"guides/self-hosting/metrics-and-limits/configuring-metrics":{"id":"guides/self-hosting/metrics-and-limits/configuring-metrics","title":"Configuring Metrics","description":"A fully configured, production-scale zrok service instance looks like this:","sidebar":"tutorialSidebar"},"guides/self-hosting/oauth/configuring-oauth":{"id":"guides/self-hosting/oauth/configuring-oauth","title":"OAuth Public Frontend Configuration","description":"As of v0.4.7, zrok includes OAuth integration for both Google and GitHub for zrok access public public frontends.","sidebar":"tutorialSidebar"},"guides/self-hosting/organizations":{"id":"guides/self-hosting/organizations","title":"Organizations","description":"zrok (starting with v0.4.45) includes support for \\"organizations\\". Organizations are groups of related accounts that are typically centrally managed in some capacity. A zrok account can be a member of multiple organizations. Organization membership can also include an \\"admin\\" permission. As of v0.4.45 organization admins are able to retrieve an \\"overview\\" (zrok overview) from any other account in the organization, allowing the admin to see the details of the environments, shares, and accesses created within that account.","sidebar":"tutorialSidebar"},"guides/self-hosting/personalized-frontend":{"id":"guides/self-hosting/personalized-frontend","title":"Personalized Frontend","description":"This guide describes an approach that enables a zrok user to use a hosted, shared instance (zrok.io) and configure their own personalized frontend, which enables custom DNS and TLS for their shares.","sidebar":"tutorialSidebar"},"guides/self-hosting/self-service-invite":{"id":"guides/self-hosting/self-service-invite","title":"Invitations","description":"This is how to set up self-service invitations for your users to get an account on your self-hosted zrok instance.","sidebar":"tutorialSidebar"},"guides/vpn/vpn":{"id":"guides/vpn/vpn","title":"zrok VPN Guide","description":"zrok VPN backend allows for simple host-to-host VPN setup.","sidebar":"tutorialSidebar"},"myzrok/custom-domains/index":{"id":"myzrok/custom-domains/index","title":"Custom Domains","description":"Overview","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/17f4c24e.e020a04d.js b/assets/js/17f4c24e.e020a04d.js new file mode 100644 index 00000000..5e4c8221 --- /dev/null +++ b/assets/js/17f4c24e.e020a04d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8875],{5294:(e,n,s)=>{s.d(n,{Ay:()=>a,RM:()=>o});var r=s(4848),t=s(8453);const o=[];function i(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This formula is maintained by the Homebrew community."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"brew install zrok\n"})})]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(i,{...e})}):i(e)}},7650:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>p,frontMatter:()=>d,metadata:()=>r,toc:()=>m});const r=JSON.parse('{"id":"guides/install/macos","title":"Install zrok in macOS","description":"Homebrew","source":"@site/versioned_docs/version-0.4/guides/install/macos.mdx","sourceDirName":"guides/install","slug":"/guides/install/macos","permalink":"/docs/0.4/guides/install/macos","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/guides/install/macos.mdx","tags":[],"version":"0.4","frontMatter":{"title":"Install zrok in macOS","sidebar_label":"macOS"},"sidebar":"tutorialSidebar","previous":{"title":"Linux","permalink":"/docs/0.4/guides/install/linux"},"next":{"title":"Windows","permalink":"/docs/0.4/guides/install/windows"}}');var t=s(4848),o=s(8453),i=s(3070),a=s(3484),l=s(3769),c=s(5294);const d={title:"Install zrok in macOS",sidebar_label:"macOS"},u=void 0,h={},m=[{value:"Homebrew",id:"homebrew",level:2},...c.RM,{value:"Darwin Binary",id:"darwin-binary",level:2}];function x(e){const n={code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"homebrew",children:"Homebrew"}),"\n",(0,t.jsx)(c.Ay,{}),"\n",(0,t.jsx)(n.h2,{id:"darwin-binary",children:"Darwin Binary"}),"\n",(0,t.jsx)(i.F,{children:(0,t.jsx)("div",{className:l.A.downloadContainer,children:(0,t.jsx)(a.A,{osName:"macOS",osLogo:"/img/logo-apple.svg"})})}),"\n",(0,t.jsxs)(n.p,{children:["Download the binary distribution for your macOS architecture. For Intel Macs use the ",(0,t.jsx)(n.code,{children:"amd64"})," distribution. For Apple Silicon Macs use the ",(0,t.jsx)(n.code,{children:"arm64"})," distribution."]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Unarchive the distribution in a temporary directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"cd ~/Downloads && mkdir -p /tmp/zrok && tar -xf ./zrok*darwin*.tar.gz -C /tmp/zrok\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.code,{children:"zrok"})," executable."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir -p ~/bin && install /tmp/zrok/zrok ~/bin/\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add ",(0,t.jsx)(n.code,{children:"~/bin"})," to your shell's executable search path. Optionally add this to your ~/.zshenv to persist the change."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"PATH=~/bin:$PATH\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["With the ",(0,t.jsx)(n.code,{children:"zrok"})," executable in your path, you can then execute the ",(0,t.jsx)(n.code,{children:"zrok"})," command from your shell:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"zrok version\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:" _ \n _____ __ ___ | | __\n|_ / '__/ _ \\| |/ /\n / /| | | (_) | < \n/___|_| \\___/|_|\\_\\\n\nv0.4.0 [c889005]\n"})}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(x,{...e})}):x(e)}},3070:(e,n,s)=>{s.d(n,{F:()=>a,d:()=>i});var r=s(6540),t=s(4848);const o=(0,r.createContext)([]),i=()=>(0,r.useContext)(o),a=e=>{let{children:n}=e;const[s,i]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),i(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(o.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(3070),t=s(3769),o=s(8532),i=s(4848);const a=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:c}=e;const{colorMode:d}=(0,o.G)(),u=(0,r.d)();console.log("Assets in DownloadCard:",u);const h=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),m=u.filter((e=>e.name.includes(h)));return console.log("Filtered assets for",n,"in DownloadCard:",m),(0,i.jsxs)("div",{className:t.A.downloadCard,children:[(0,i.jsx)("div",{className:t.A.imgContainer,children:(0,i.jsx)("img",{src:s,alt:`${n} logo`})}),(0,i.jsx)("h3",{children:n}),m.length>0&&(0,i.jsx)("ul",{children:m.map(((e,n)=>(0,i.jsx)("li",{className:t.A.downloadButtons,children:(0,i.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:a(e.arch)})},n)))}),c&&(0,i.jsxs)("div",{className:t.A.cardFooter,children:[(0,i.jsx)("p",{children:l}),(0,i.jsx)("a",{href:c,children:"GUIDE"}),(0,i.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var r=s(6540);const t={},o=r.createContext(t);function i(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/17f4c24e.e3487d90.js b/assets/js/17f4c24e.e3487d90.js deleted file mode 100644 index 84ad3699..00000000 --- a/assets/js/17f4c24e.e3487d90.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8875],{5294:(e,n,s)=>{s.d(n,{Ay:()=>i,RM:()=>o});var r=s(4848),t=s(8453);const o=[];function a(e){const n={code:"code",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"brew install zrok\n"})})}function i(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},7650:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>p,frontMatter:()=>d,metadata:()=>r,toc:()=>m});const r=JSON.parse('{"id":"guides/install/macos","title":"Install zrok in macOS","description":"Homebrew","source":"@site/versioned_docs/version-0.4/guides/install/macos.mdx","sourceDirName":"guides/install","slug":"/guides/install/macos","permalink":"/docs/0.4/guides/install/macos","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/guides/install/macos.mdx","tags":[],"version":"0.4","frontMatter":{"title":"Install zrok in macOS","sidebar_label":"macOS"},"sidebar":"tutorialSidebar","previous":{"title":"Linux","permalink":"/docs/0.4/guides/install/linux"},"next":{"title":"Windows","permalink":"/docs/0.4/guides/install/windows"}}');var t=s(4848),o=s(8453),a=s(3070),i=s(3484),l=s(3769),c=s(5294);const d={title:"Install zrok in macOS",sidebar_label:"macOS"},u=void 0,h={},m=[{value:"Homebrew",id:"homebrew",level:2},...c.RM,{value:"Darwin Binary",id:"darwin-binary",level:2}];function x(e){const n={code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"homebrew",children:"Homebrew"}),"\n",(0,t.jsx)(c.Ay,{}),"\n",(0,t.jsx)(n.h2,{id:"darwin-binary",children:"Darwin Binary"}),"\n",(0,t.jsx)(a.F,{children:(0,t.jsx)("div",{className:l.A.downloadContainer,children:(0,t.jsx)(i.A,{osName:"macOS",osLogo:"/img/logo-apple.svg"})})}),"\n",(0,t.jsxs)(n.p,{children:["Download the binary distribution for your macOS architecture. For Intel Macs use the ",(0,t.jsx)(n.code,{children:"amd64"})," distribution. For Apple Silicon Macs use the ",(0,t.jsx)(n.code,{children:"arm64"})," distribution."]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Unarchive the distribution in a temporary directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"cd ~/Downloads && mkdir -p /tmp/zrok && tar -xf ./zrok*darwin*.tar.gz -C /tmp/zrok\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.code,{children:"zrok"})," executable."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir -p ~/bin && install /tmp/zrok/zrok ~/bin/\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add ",(0,t.jsx)(n.code,{children:"~/bin"})," to your shell's executable search path. Optionally add this to your ~/.zshenv to persist the change."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"PATH=~/bin:$PATH\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["With the ",(0,t.jsx)(n.code,{children:"zrok"})," executable in your path, you can then execute the ",(0,t.jsx)(n.code,{children:"zrok"})," command from your shell:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"zrok version\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:" _ \n _____ __ ___ | | __\n|_ / '__/ _ \\| |/ /\n / /| | | (_) | < \n/___|_| \\___/|_|\\_\\\n\nv0.4.0 [c889005]\n"})}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(x,{...e})}):x(e)}},3070:(e,n,s)=>{s.d(n,{F:()=>i,d:()=>a});var r=s(6540),t=s(4848);const o=(0,r.createContext)([]),a=()=>(0,r.useContext)(o),i=e=>{let{children:n}=e;const[s,a]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(o.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(3070),t=s(3769),o=s(8532),a=s(4848);const i=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:c}=e;const{colorMode:d}=(0,o.G)(),u=(0,r.d)();console.log("Assets in DownloadCard:",u);const h=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),m=u.filter((e=>e.name.includes(h)));return console.log("Filtered assets for",n,"in DownloadCard:",m),(0,a.jsxs)("div",{className:t.A.downloadCard,children:[(0,a.jsx)("div",{className:t.A.imgContainer,children:(0,a.jsx)("img",{src:s,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),m.length>0&&(0,a.jsx)("ul",{children:m.map(((e,n)=>(0,a.jsx)("li",{className:t.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:i(e.arch)})},n)))}),c&&(0,a.jsxs)("div",{className:t.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:c,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>i});var r=s(6540);const t={},o=r.createContext(t);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1ba5bc99.29713972.js b/assets/js/1ba5bc99.29713972.js deleted file mode 100644 index fff03a43..00000000 --- a/assets/js/1ba5bc99.29713972.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2759],{5294:(e,n,s)=>{s.d(n,{Ay:()=>i,RM:()=>o});var r=s(4848),t=s(8453);const o=[];function a(e){const n={code:"code",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"brew install zrok\n"})})}function i(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},795:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>p,frontMatter:()=>d,metadata:()=>r,toc:()=>m});const r=JSON.parse('{"id":"guides/install/macos","title":"Install zrok in macOS","description":"Homebrew","source":"@site/../docs/guides/install/macos.mdx","sourceDirName":"guides/install","slug":"/guides/install/macos","permalink":"/docs/guides/install/macos","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/macos.mdx","tags":[],"version":"current","frontMatter":{"title":"Install zrok in macOS","sidebar_label":"macOS"},"sidebar":"tutorialSidebar","previous":{"title":"Linux","permalink":"/docs/guides/install/linux"},"next":{"title":"Windows","permalink":"/docs/guides/install/windows"}}');var t=s(4848),o=s(8453),a=s(3070),i=s(3484),l=s(3769),c=s(5294);const d={title:"Install zrok in macOS",sidebar_label:"macOS"},u=void 0,h={},m=[{value:"Homebrew",id:"homebrew",level:2},...c.RM,{value:"Darwin Binary",id:"darwin-binary",level:2}];function x(e){const n={code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"homebrew",children:"Homebrew"}),"\n",(0,t.jsx)(c.Ay,{}),"\n",(0,t.jsx)(n.h2,{id:"darwin-binary",children:"Darwin Binary"}),"\n",(0,t.jsx)(a.F,{children:(0,t.jsx)("div",{className:l.A.downloadContainer,children:(0,t.jsx)(i.A,{osName:"macOS",osLogo:"/img/logo-apple.svg"})})}),"\n",(0,t.jsxs)(n.p,{children:["Download the binary distribution for your macOS architecture. For Intel Macs use the ",(0,t.jsx)(n.code,{children:"amd64"})," distribution. For Apple Silicon Macs use the ",(0,t.jsx)(n.code,{children:"arm64"})," distribution."]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Unarchive the distribution in a temporary directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"cd ~/Downloads && mkdir -p /tmp/zrok && tar -xf ./zrok*darwin*.tar.gz -C /tmp/zrok\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.code,{children:"zrok"})," executable."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir -p ~/bin && install /tmp/zrok/zrok ~/bin/\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add ",(0,t.jsx)(n.code,{children:"~/bin"})," to your shell's executable search path. Optionally add this to your ~/.zshenv to persist the change."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"PATH=~/bin:$PATH\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["With the ",(0,t.jsx)(n.code,{children:"zrok"})," executable in your path, you can then execute the ",(0,t.jsx)(n.code,{children:"zrok"})," command from your shell:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"zrok version\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:" _ \n _____ __ ___ | | __\n|_ / '__/ _ \\| |/ /\n / /| | | (_) | < \n/___|_| \\___/|_|\\_\\\n\nv0.4.0 [c889005]\n"})}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(x,{...e})}):x(e)}},3070:(e,n,s)=>{s.d(n,{F:()=>i,d:()=>a});var r=s(6540),t=s(4848);const o=(0,r.createContext)([]),a=()=>(0,r.useContext)(o),i=e=>{let{children:n}=e;const[s,a]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(o.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(3070),t=s(3769),o=s(8532),a=s(4848);const i=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:c}=e;const{colorMode:d}=(0,o.G)(),u=(0,r.d)();console.log("Assets in DownloadCard:",u);const h=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),m=u.filter((e=>e.name.includes(h)));return console.log("Filtered assets for",n,"in DownloadCard:",m),(0,a.jsxs)("div",{className:t.A.downloadCard,children:[(0,a.jsx)("div",{className:t.A.imgContainer,children:(0,a.jsx)("img",{src:s,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),m.length>0&&(0,a.jsx)("ul",{children:m.map(((e,n)=>(0,a.jsx)("li",{className:t.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:i(e.arch)})},n)))}),c&&(0,a.jsxs)("div",{className:t.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:c,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>i});var r=s(6540);const t={},o=r.createContext(t);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1ba5bc99.f852d55b.js b/assets/js/1ba5bc99.f852d55b.js new file mode 100644 index 00000000..b72760bf --- /dev/null +++ b/assets/js/1ba5bc99.f852d55b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2759],{5294:(e,n,s)=>{s.d(n,{Ay:()=>i,RM:()=>o});var r=s(4848),t=s(8453);const o=[];function a(e){const n={code:"code",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.p,{children:"This formula is maintained by the Homebrew community."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"brew install zrok\n"})})]})}function i(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},795:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>h,contentTitle:()=>u,default:()=>p,frontMatter:()=>d,metadata:()=>r,toc:()=>m});const r=JSON.parse('{"id":"guides/install/macos","title":"Install zrok in macOS","description":"Homebrew","source":"@site/../docs/guides/install/macos.mdx","sourceDirName":"guides/install","slug":"/guides/install/macos","permalink":"/docs/guides/install/macos","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/macos.mdx","tags":[],"version":"current","frontMatter":{"title":"Install zrok in macOS","sidebar_label":"macOS"},"sidebar":"tutorialSidebar","previous":{"title":"Linux","permalink":"/docs/guides/install/linux"},"next":{"title":"Windows","permalink":"/docs/guides/install/windows"}}');var t=s(4848),o=s(8453),a=s(3070),i=s(3484),l=s(3769),c=s(5294);const d={title:"Install zrok in macOS",sidebar_label:"macOS"},u=void 0,h={},m=[{value:"Homebrew",id:"homebrew",level:2},...c.RM,{value:"Darwin Binary",id:"darwin-binary",level:2}];function x(e){const n={code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{id:"homebrew",children:"Homebrew"}),"\n",(0,t.jsx)(c.Ay,{}),"\n",(0,t.jsx)(n.h2,{id:"darwin-binary",children:"Darwin Binary"}),"\n",(0,t.jsx)(a.F,{children:(0,t.jsx)("div",{className:l.A.downloadContainer,children:(0,t.jsx)(i.A,{osName:"macOS",osLogo:"/img/logo-apple.svg"})})}),"\n",(0,t.jsxs)(n.p,{children:["Download the binary distribution for your macOS architecture. For Intel Macs use the ",(0,t.jsx)(n.code,{children:"amd64"})," distribution. For Apple Silicon Macs use the ",(0,t.jsx)(n.code,{children:"arm64"})," distribution."]}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Unarchive the distribution in a temporary directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"cd ~/Downloads && mkdir -p /tmp/zrok && tar -xf ./zrok*darwin*.tar.gz -C /tmp/zrok\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.code,{children:"zrok"})," executable."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir -p ~/bin && install /tmp/zrok/zrok ~/bin/\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add ",(0,t.jsx)(n.code,{children:"~/bin"})," to your shell's executable search path. Optionally add this to your ~/.zshenv to persist the change."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"PATH=~/bin:$PATH\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["With the ",(0,t.jsx)(n.code,{children:"zrok"})," executable in your path, you can then execute the ",(0,t.jsx)(n.code,{children:"zrok"})," command from your shell:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"zrok version\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:" _ \n _____ __ ___ | | __\n|_ / '__/ _ \\| |/ /\n / /| | | (_) | < \n/___|_| \\___/|_|\\_\\\n\nv0.4.0 [c889005]\n"})}),"\n"]}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(x,{...e})}):x(e)}},3070:(e,n,s)=>{s.d(n,{F:()=>i,d:()=>a});var r=s(6540),t=s(4848);const o=(0,r.createContext)([]),a=()=>(0,r.useContext)(o),i=e=>{let{children:n}=e;const[s,a]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(o.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(3070),t=s(3769),o=s(8532),a=s(4848);const i=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:c}=e;const{colorMode:d}=(0,o.G)(),u=(0,r.d)();console.log("Assets in DownloadCard:",u);const h=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),m=u.filter((e=>e.name.includes(h)));return console.log("Filtered assets for",n,"in DownloadCard:",m),(0,a.jsxs)("div",{className:t.A.downloadCard,children:[(0,a.jsx)("div",{className:t.A.imgContainer,children:(0,a.jsx)("img",{src:s,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),m.length>0&&(0,a.jsx)("ul",{children:m.map(((e,n)=>(0,a.jsx)("li",{className:t.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:i(e.arch)})},n)))}),c&&(0,a.jsxs)("div",{className:t.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:c,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>i});var r=s(6540);const t={},o=r.createContext(t);function a(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1ddd36f2.8f4f006e.js b/assets/js/1ddd36f2.8f4f006e.js new file mode 100644 index 00000000..ef3710a2 --- /dev/null +++ b/assets/js/1ddd36f2.8f4f006e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1595],{2390:(e,n,s)=>{s.d(n,{Ay:()=>c,RM:()=>l});var o=s(4848),t=s(8453),r=s(3070),i=s(3484),a=s(3769);const l=[];function d(e){return(0,o.jsx)(r.F,{children:(0,o.jsxs)("div",{className:a.A.downloadContainer,children:[(0,o.jsx)(i.A,{osName:"Windows",osLogo:"/img/logo-windows.svg",infoText:"Download EXE",guideLink:"/docs/guides/install/windows"}),(0,o.jsx)(i.A,{osName:"macOS",osLogo:"/img/logo-apple.svg",infoText:"Homebrew or Download",guideLink:"/docs/guides/install/macos"}),(0,o.jsx)(i.A,{osName:"Linux",osLogo:"/img/logo-linux.svg",infoText:"RPM/DEB/AUR or Homebrew",guideLink:"/docs/guides/install/linux"})]})})}function c(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d()}},9854:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"guides/install/index","title":"Install","description":"","source":"@site/versioned_docs/version-0.4/guides/install/index.mdx","sourceDirName":"guides/install","slug":"/guides/install/","permalink":"/docs/0.4/guides/install/","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/guides/install/index.mdx","tags":[],"version":"0.4","frontMatter":{"title":"Install"},"sidebar":"tutorialSidebar","previous":{"title":"Guides","permalink":"/docs/0.4/category/guides"},"next":{"title":"Linux","permalink":"/docs/0.4/guides/install/linux"}}');var t=s(4848),r=s(8453),i=(s(3070),s(3484),s(3769),s(2390));const a={title:"Install"},l=void 0,d={},c=[...i.RM];function u(e){return(0,t.jsx)(i.Ay,{})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u()}},3070:(e,n,s)=>{s.d(n,{F:()=>a,d:()=>i});var o=s(6540),t=s(4848);const r=(0,o.createContext)([]),i=()=>(0,o.useContext)(r),a=e=>{let{children:n}=e;const[s,i]=(0,o.useState)([]);return(0,o.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),i(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(r.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var o=s(3070),t=s(3769),r=s(8532),i=s(4848);const a=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:d}=e;const{colorMode:c}=(0,r.G)(),u=(0,o.d)();console.log("Assets in DownloadCard:",u);const m=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),x=u.filter((e=>e.name.includes(m)));return console.log("Filtered assets for",n,"in DownloadCard:",x),(0,i.jsxs)("div",{className:t.A.downloadCard,children:[(0,i.jsx)("div",{className:t.A.imgContainer,children:(0,i.jsx)("img",{src:s,alt:`${n} logo`})}),(0,i.jsx)("h3",{children:n}),x.length>0&&(0,i.jsx)("ul",{children:x.map(((e,n)=>(0,i.jsx)("li",{className:t.A.downloadButtons,children:(0,i.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:a(e.arch)})},n)))}),d&&(0,i.jsxs)("div",{className:t.A.cardFooter,children:[(0,i.jsx)("p",{children:l}),(0,i.jsx)("a",{href:d,children:"GUIDE"}),(0,i.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>o});const o={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var o=s(6540);const t={},r=o.createContext(t);function i(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1ddd36f2.9d005e77.js b/assets/js/1ddd36f2.9d005e77.js deleted file mode 100644 index 1e97c4bd..00000000 --- a/assets/js/1ddd36f2.9d005e77.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1595],{2390:(e,n,s)=>{s.d(n,{Ay:()=>c,RM:()=>l});var o=s(4848),t=s(8453),r=s(3070),i=s(3484),a=s(3769);const l=[];function d(e){return(0,o.jsx)(r.F,{children:(0,o.jsxs)("div",{className:a.A.downloadContainer,children:[(0,o.jsx)(i.A,{osName:"Windows",osLogo:"/img/logo-windows.svg",infoText:"Download EXE",guideLink:"/docs/guides/install/windows"}),(0,o.jsx)(i.A,{osName:"macOS",osLogo:"/img/logo-apple.svg",infoText:"Homebrew or Download",guideLink:"/docs/guides/install/macos"}),(0,o.jsx)(i.A,{osName:"Linux",osLogo:"/img/logo-linux.svg",infoText:"RPM/DEB or Homebrew",guideLink:"/docs/guides/install/linux"})]})})}function c(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d()}},9854:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"guides/install/index","title":"Install","description":"","source":"@site/versioned_docs/version-0.4/guides/install/index.mdx","sourceDirName":"guides/install","slug":"/guides/install/","permalink":"/docs/0.4/guides/install/","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/guides/install/index.mdx","tags":[],"version":"0.4","frontMatter":{"title":"Install"},"sidebar":"tutorialSidebar","previous":{"title":"Guides","permalink":"/docs/0.4/category/guides"},"next":{"title":"Linux","permalink":"/docs/0.4/guides/install/linux"}}');var t=s(4848),r=s(8453),i=(s(3070),s(3484),s(3769),s(2390));const a={title:"Install"},l=void 0,d={},c=[...i.RM];function u(e){return(0,t.jsx)(i.Ay,{})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u()}},3070:(e,n,s)=>{s.d(n,{F:()=>a,d:()=>i});var o=s(6540),t=s(4848);const r=(0,o.createContext)([]),i=()=>(0,o.useContext)(r),a=e=>{let{children:n}=e;const[s,i]=(0,o.useState)([]);return(0,o.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),i(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(r.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var o=s(3070),t=s(3769),r=s(8532),i=s(4848);const a=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:d}=e;const{colorMode:c}=(0,r.G)(),u=(0,o.d)();console.log("Assets in DownloadCard:",u);const m=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),x=u.filter((e=>e.name.includes(m)));return console.log("Filtered assets for",n,"in DownloadCard:",x),(0,i.jsxs)("div",{className:t.A.downloadCard,children:[(0,i.jsx)("div",{className:t.A.imgContainer,children:(0,i.jsx)("img",{src:s,alt:`${n} logo`})}),(0,i.jsx)("h3",{children:n}),x.length>0&&(0,i.jsx)("ul",{children:x.map(((e,n)=>(0,i.jsx)("li",{className:t.A.downloadButtons,children:(0,i.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:a(e.arch)})},n)))}),d&&(0,i.jsxs)("div",{className:t.A.cardFooter,children:[(0,i.jsx)("p",{children:l}),(0,i.jsx)("a",{href:d,children:"GUIDE"}),(0,i.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>o});const o={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>a});var o=s(6540);const t={},r=o.createContext(t);function i(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/47881d5c.207612b2.js b/assets/js/47881d5c.207612b2.js deleted file mode 100644 index b39e9954..00000000 --- a/assets/js/47881d5c.207612b2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4927],{5294:(e,n,s)=>{s.d(n,{Ay:()=>o,RM:()=>i});var r=s(4848),t=s(8453);const i=[];function a(e){const n={code:"code",pre:"pre",...(0,t.R)(),...e.components};return(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-text",children:"brew install zrok\n"})})}function o(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},4774:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>m,contentTitle:()=>p,default:()=>b,frontMatter:()=>h,metadata:()=>r,toc:()=>x});const r=JSON.parse('{"id":"guides/install/linux","title":"Install zrok in Linux","description":"Install zrok from the Repository","source":"@site/../docs/guides/install/linux.mdx","sourceDirName":"guides/install","slug":"/guides/install/linux","permalink":"/docs/guides/install/linux","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/linux.mdx","tags":[],"version":"current","frontMatter":{"title":"Install zrok in Linux","sidebar_label":"Linux"},"sidebar":"tutorialSidebar","previous":{"title":"Install","permalink":"/docs/guides/install/"},"next":{"title":"macOS","permalink":"/docs/guides/install/macos"}}');var t=s(4848),i=s(8453),a=s(3070),o=s(3484),l=s(3769),c=s(397),d=s(4119),u=s(5294);const h={title:"Install zrok in Linux",sidebar_label:"Linux"},p=void 0,m={},x=[{value:"Install <code>zrok</code> from the Repository",id:"install-zrok-from-the-repository",level:2},{value:"Homebrew",id:"homebrew",level:2},...u.RM,{value:"Linux Binary",id:"linux-binary",level:2}];function g(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,i.R)(),...e.components},{Details:s}=n;return s||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.h2,{id:"install-zrok-from-the-repository",children:["Install ",(0,t.jsx)(n.code,{children:"zrok"})," from the Repository"]}),"\n",(0,t.jsx)(n.p,{children:"This will configure the system to receive DEB or RPM package updates."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"curl -sSf https://get.openziti.io/install.bash | sudo bash -s zrok\n"})}),"\n",(0,t.jsx)(n.admonition,{type:"info",children:(0,t.jsxs)(n.p,{children:["Check out ",(0,t.jsx)(n.a,{href:"/docs/guides/frontdoor?os=Linux",children:"zrok frontdoor"})," for running ",(0,t.jsx)(n.code,{children:"zrok"})," as an always-on service."]})}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsx)("summary",{children:"Ansible Playbook"}),(0,t.jsxs)(d.A,{title:"Set up package repository and install zrok",children:[c.A,"\n- name: Install zrok package\ngather_facts: false\nhosts: all \nbecome: true\ntasks:\n- name: Install zrok\n ansible.builtin.package:\n name: zrok\n state: present\n"]})]}),"\n",(0,t.jsx)(n.h2,{id:"homebrew",children:"Homebrew"}),"\n",(0,t.jsx)(u.Ay,{}),"\n",(0,t.jsx)(n.h2,{id:"linux-binary",children:"Linux Binary"}),"\n",(0,t.jsx)(a.F,{children:(0,t.jsx)("div",{className:l.A.downloadContainer,children:(0,t.jsx)(o.A,{osName:"Linux",osLogo:"/img/logo-linux.svg"})})}),"\n",(0,t.jsxs)(n.p,{children:["Download the binary distribution for your Linux distribution's architecture or run the install script below to pick the correct CPU architecture automatically. For Intel and AMD 64-bit machines use the ",(0,t.jsx)(n.code,{children:"amd64"})," distribution. For Raspberry Pi use the ",(0,t.jsx)(n.code,{children:"arm64"})," distribution."]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsxs)("summary",{children:["Manually install in ",(0,t.jsx)(n.code,{children:"~/bin/zrok"})]}),(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Unarchive the distribution in a temporary directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir /tmp/zrok && tar -xf ./zrok*linux*.tar.gz -C /tmp/zrok\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.code,{children:"zrok"})," executable."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"mkdir -p ~/bin && install /tmp/zrok/zrok ~/bin/\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Add ",(0,t.jsx)(n.code,{children:"~/bin"})," to your shell's executable search path. Optionally add this to your ~/.zshenv to persist the change."]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"PATH=~/bin:$PATH\n"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["With the ",(0,t.jsx)(n.code,{children:"zrok"})," executable in your path, you can then execute the ",(0,t.jsx)(n.code,{children:"zrok"})," command from your shell:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"zrok version\n"})}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:" _ \n _____ __ ___ | | __\n|_ / '__/ _ \\| |/ /\n / /| | | (_) | < \n/___|_| \\___/|_|\\_\\\n\nv0.4.0 [c889005]\n"})}),"\n"]}),"\n"]})]}),"\n",(0,t.jsxs)(s,{children:[(0,t.jsxs)("summary",{children:["Script to install binary in ",(0,t.jsx)(n.code,{children:"/usr/local/bin/zrok"})]}),(0,t.jsx)(n.p,{children:"This script auto-selects the correct architecture and may be helpful for Raspberry Pi users."}),(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-text",children:"cd $(mktemp -d);\n\nZROK_VERSION=$(\n curl -sSf https://api.github.com/repos/openziti/zrok/releases/latest \\\n | jq -r '.tag_name'\n);\n\ncase $(uname -m) in\n x86_64) GOXARCH=amd64\n ;;\n aarch64|arm64) GOXARCH=arm64\n ;;\n arm*) GOXARCH=armv7\n ;;\n *) echo \"ERROR: unknown arch '$(uname -m)'\" >&2\n exit 1\n ;;\nesac;\n\ncurl -sSfL \\\n \"https://github.com/openziti/zrok/releases/download/${ZROK_VERSION}/zrok_${ZROK_VERSION#v}_linux_${GOXARCH}.tar.gz\" \\\n | tar -xz -f -;\n\nsudo install -o root -g root ./zrok /usr/local/bin/;\n\nzrok version;\n"})})]})]})}function b(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(g,{...e})}):g(e)}},3070:(e,n,s)=>{s.d(n,{F:()=>o,d:()=>a});var r=s(6540),t=s(4848);const i=(0,r.createContext)([]),a=()=>(0,r.useContext)(i),o=e=>{let{children:n}=e;const[s,a]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(i.Provider,{value:s,children:n})}},4119:(e,n,s)=>{s.d(n,{A:()=>a});s(6540);var r=s(382),t=s(8069),i=s(4848);const a=e=>{let{title:n,children:s}=e;const a=s.map((e=>"string"==typeof e?e.trim():r.Ay.dump(e).trim())).join("\n\n");return(0,i.jsx)("div",{children:(0,i.jsx)(t.A,{language:"yaml",title:n,children:a})})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var r=s(3070),t=s(3769),i=s(8532),a=s(4848);const o=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:c}=e;const{colorMode:d}=(0,i.G)(),u=(0,r.d)();console.log("Assets in DownloadCard:",u);const h=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),p=u.filter((e=>e.name.includes(h)));return console.log("Filtered assets for",n,"in DownloadCard:",p),(0,a.jsxs)("div",{className:t.A.downloadCard,children:[(0,a.jsx)("div",{className:t.A.imgContainer,children:(0,a.jsx)("img",{src:s,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),p.length>0&&(0,a.jsx)("ul",{children:p.map(((e,n)=>(0,a.jsx)("li",{className:t.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:o(e.arch)})},n)))}),c&&(0,a.jsxs)("div",{className:t.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:c,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},397:(e,n,s)=>{s.d(n,{A:()=>r});const r=[{name:"Set up zrok Package Repo",gather_facts:!0,hosts:"all",become:!0,tasks:[{name:"Set up apt repo",when:'ansible_os_family == "Debian"',block:[{name:"Install playbook dependencies","ansible.builtin.package":{name:["gnupg"],state:"present"}},{name:"Fetch armored pubkey","ansible.builtin.uri":{url:"https://get.openziti.io/tun/package-repos.gpg",return_content:"yes"},register:"armored_pubkey"},{name:"Dearmor pubkey","ansible.builtin.shell":'gpg --dearmor --output /usr/share/keyrings/openziti.gpg <<< "{{ armored_pubkey.content }}"\n',args:{creates:"/usr/share/keyrings/openziti.gpg",executable:"/bin/bash"}},{name:"Set pubkey filemode","ansible.builtin.file":{path:"/usr/share/keyrings/openziti.gpg",mode:"a+rX"}},{name:"Install OpenZiti repo deb source","ansible.builtin.copy":{dest:"/etc/apt/sources.list.d/openziti-release.list",content:"deb [signed-by=/usr/share/keyrings/openziti.gpg] https://packages.openziti.org/zitipax-openziti-deb-stable debian main\n"}},{name:"Refresh Repo Sources","ansible.builtin.apt":{update_cache:"yes",cache_valid_time:3600}}]},{name:"Set up yum repo",when:'ansible_os_family == "RedHat"',block:[{name:"Install OpenZiti repo rpm source","ansible.builtin.yum_repository":{name:"OpenZitiRelease",description:"OpenZiti Release",baseurl:"https://packages.openziti.org/zitipax-openziti-rpm-stable/redhat/$basearch",enabled:"yes",gpgkey:"https://packages.openziti.org/zitipax-openziti-rpm-stable/redhat/$basearch/repodata/repomd.xml.key",repo_gpgcheck:"yes",gpgcheck:"no"}}]}]}]}}]); \ No newline at end of file diff --git a/assets/js/47881d5c.9fc06796.js b/assets/js/47881d5c.9fc06796.js new file mode 100644 index 00000000..b92693e4 --- /dev/null +++ b/assets/js/47881d5c.9fc06796.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4927],{5294:(e,n,r)=>{r.d(n,{Ay:()=>o,RM:()=>t});var s=r(4848),i=r(8453);const t=[];function a(e){const n={code:"code",p:"p",pre:"pre",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"This formula is maintained by the Homebrew community."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:"brew install zrok\n"})})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},4774:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>m,contentTitle:()=>p,default:()=>b,frontMatter:()=>h,metadata:()=>s,toc:()=>x});const s=JSON.parse('{"id":"guides/install/linux","title":"Install zrok in Linux","description":"Package Repository","source":"@site/../docs/guides/install/linux.mdx","sourceDirName":"guides/install","slug":"/guides/install/linux","permalink":"/docs/guides/install/linux","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/linux.mdx","tags":[],"version":"current","frontMatter":{"title":"Install zrok in Linux","sidebar_label":"Linux"},"sidebar":"tutorialSidebar","previous":{"title":"Install","permalink":"/docs/guides/install/"},"next":{"title":"macOS","permalink":"/docs/guides/install/macos"}}');var i=r(4848),t=r(8453),a=r(3070),o=r(3484),l=r(3769),c=r(397),d=r(4119),u=r(5294);const h={title:"Install zrok in Linux",sidebar_label:"Linux"},p=void 0,m={},x=[{value:"Package Repository",id:"package-repository",level:2},{value:"Linux Binary",id:"linux-binary",level:2},{value:"Arch User Repository",id:"arch-user-repository",level:2},{value:"Homebrew Formula",id:"homebrew-formula",level:2},...u.RM];function g(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",...(0,t.R)(),...e.components},{Details:r}=n;return r||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("Details",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"package-repository",children:"Package Repository"}),"\n",(0,i.jsx)(n.p,{children:"The RedHat (RPM) and Debian (DEB) packages are maintained by NetFoundry."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"curl -sSf https://get.openziti.io/install.bash | sudo bash -s zrok\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["Check out ",(0,i.jsx)(n.a,{href:"/docs/guides/frontdoor?os=Linux",children:"zrok frontdoor"})," for running ",(0,i.jsx)(n.code,{children:"zrok"})," as an always-on service."]})}),"\n",(0,i.jsxs)(r,{children:[(0,i.jsx)("summary",{children:"Ansible Playbook"}),(0,i.jsxs)(d.A,{title:"Set up package repository and install zrok",children:[c.A,"\n- name: Install zrok package\ngather_facts: false\nhosts: all \nbecome: true\ntasks:\n- name: Install zrok\n ansible.builtin.package:\n name: zrok\n state: present\n"]})]}),"\n",(0,i.jsx)(n.h2,{id:"linux-binary",children:"Linux Binary"}),"\n",(0,i.jsx)(a.F,{children:(0,i.jsx)("div",{className:l.A.downloadContainer,children:(0,i.jsx)(o.A,{osName:"Linux",osLogo:"/img/logo-linux.svg"})})}),"\n",(0,i.jsxs)(n.p,{children:["Download the binary distribution for your Linux distribution's architecture or run the install script below to pick the correct CPU architecture automatically. For Intel and AMD 64-bit machines use the ",(0,i.jsx)(n.code,{children:"amd64"})," distribution. For Raspberry Pi use the ",(0,i.jsx)(n.code,{children:"arm64"})," distribution."]}),"\n",(0,i.jsxs)(r,{children:[(0,i.jsxs)("summary",{children:["Manually install in ",(0,i.jsx)(n.code,{children:"~/bin/zrok"})]}),(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Unarchive the distribution in a temporary directory."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"mkdir /tmp/zrok && tar -xf ./zrok*linux*.tar.gz -C /tmp/zrok\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Install the ",(0,i.jsx)(n.code,{children:"zrok"})," executable."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"mkdir -p ~/bin && install /tmp/zrok/zrok ~/bin/\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Add ",(0,i.jsx)(n.code,{children:"~/bin"})," to your shell's executable search path. Optionally add this to your ~/.zshenv to persist the change."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"PATH=~/bin:$PATH\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["With the ",(0,i.jsx)(n.code,{children:"zrok"})," executable in your path, you can then execute the ",(0,i.jsx)(n.code,{children:"zrok"})," command from your shell:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"zrok version\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:" _ \n _____ __ ___ | | __\n|_ / '__/ _ \\| |/ /\n / /| | | (_) | < \n/___|_| \\___/|_|\\_\\\n\nv1.0.0 [c889005]\n"})}),"\n"]}),"\n"]})]}),"\n",(0,i.jsxs)(r,{children:[(0,i.jsxs)("summary",{children:["Script to install binary in ",(0,i.jsx)(n.code,{children:"/usr/local/bin/zrok"})]}),(0,i.jsx)(n.p,{children:"This script auto-selects the correct architecture and may be helpful for Raspberry Pi users."}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"cd $(mktemp -d);\n\nZROK_VERSION=$(\n curl -sSf https://api.github.com/repos/openziti/zrok/releases/latest \\\n | jq -r '.tag_name'\n);\n\ncase $(uname -m) in\n x86_64) GOXARCH=amd64\n ;;\n aarch64|arm64) GOXARCH=arm64\n ;;\n arm*) GOXARCH=armv7\n ;;\n *) echo \"ERROR: unknown arch '$(uname -m)'\" >&2\n exit 1\n ;;\nesac;\n\ncurl -sSfL \\\n \"https://github.com/openziti/zrok/releases/download/${ZROK_VERSION}/zrok_${ZROK_VERSION#v}_linux_${GOXARCH}.tar.gz\" \\\n | tar -xz -f -;\n\nsudo install -o root -g root ./zrok /usr/local/bin/;\n\nzrok version;\n"})})]}),"\n",(0,i.jsx)(n.h2,{id:"arch-user-repository",children:"Arch User Repository"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://aur.archlinux.org/packages/zrok-bin",children:"An Arch User Repository (AUR) package"})," is maintained by the Arch community. As of April 2025, the AUR package includes the ",(0,i.jsx)(n.code,{children:"zrok"})," CLI and ",(0,i.jsxs)(n.a,{href:"/docs/guides/agent/linux-service",children:["the ",(0,i.jsx)(n.code,{children:"zrok-agent.service"})," systemd ",(0,i.jsx)(n.code,{children:"--user"})," service"]}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"homebrew-formula",children:"Homebrew Formula"}),"\n",(0,i.jsx)(u.Ay,{})]})}function b(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(g,{...e})}):g(e)}},3070:(e,n,r)=>{r.d(n,{F:()=>o,d:()=>a});var s=r(6540),i=r(4848);const t=(0,s.createContext)([]),a=()=>(0,s.useContext)(t),o=e=>{let{children:n}=e;const[r,a]=(0,s.useState)([]);return(0,s.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,i.jsx)(t.Provider,{value:r,children:n})}},4119:(e,n,r)=>{r.d(n,{A:()=>a});r(6540);var s=r(382),i=r(8069),t=r(4848);const a=e=>{let{title:n,children:r}=e;const a=r.map((e=>"string"==typeof e?e.trim():s.Ay.dump(e).trim())).join("\n\n");return(0,t.jsx)("div",{children:(0,t.jsx)(i.A,{language:"yaml",title:n,children:a})})}},3484:(e,n,r)=>{r.d(n,{A:()=>l});r(6540);var s=r(3070),i=r(3769),t=r(8532),a=r(4848);const o=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:r,infoText:l,guideLink:c}=e;const{colorMode:d}=(0,t.G)(),u=(0,s.d)();console.log("Assets in DownloadCard:",u);const h=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),p=u.filter((e=>e.name.includes(h)));return console.log("Filtered assets for",n,"in DownloadCard:",p),(0,a.jsxs)("div",{className:i.A.downloadCard,children:[(0,a.jsx)("div",{className:i.A.imgContainer,children:(0,a.jsx)("img",{src:r,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),p.length>0&&(0,a.jsx)("ul",{children:p.map(((e,n)=>(0,a.jsx)("li",{className:i.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:i.A.downloadLinks,children:o(e.arch)})},n)))}),c&&(0,a.jsxs)("div",{className:i.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:c,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,r)=>{r.d(n,{A:()=>s});const s={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},397:(e,n,r)=>{r.d(n,{A:()=>s});const s=[{name:"Set up zrok Package Repo",gather_facts:!0,hosts:"all",become:!0,tasks:[{name:"Set up apt repo",when:'ansible_os_family == "Debian"',block:[{name:"Install playbook dependencies","ansible.builtin.package":{name:["gnupg"],state:"present"}},{name:"Fetch armored pubkey","ansible.builtin.uri":{url:"https://get.openziti.io/tun/package-repos.gpg",return_content:"yes"},register:"armored_pubkey"},{name:"Dearmor pubkey","ansible.builtin.shell":'gpg --dearmor --output /usr/share/keyrings/openziti.gpg <<< "{{ armored_pubkey.content }}"\n',args:{creates:"/usr/share/keyrings/openziti.gpg",executable:"/bin/bash"}},{name:"Set pubkey filemode","ansible.builtin.file":{path:"/usr/share/keyrings/openziti.gpg",mode:"a+rX"}},{name:"Install OpenZiti repo deb source","ansible.builtin.copy":{dest:"/etc/apt/sources.list.d/openziti-release.list",content:"deb [signed-by=/usr/share/keyrings/openziti.gpg] https://packages.openziti.org/zitipax-openziti-deb-stable debian main\n"}},{name:"Refresh Repo Sources","ansible.builtin.apt":{update_cache:"yes",cache_valid_time:3600}}]},{name:"Set up yum repo",when:'ansible_os_family == "RedHat"',block:[{name:"Install OpenZiti repo rpm source","ansible.builtin.yum_repository":{name:"OpenZitiRelease",description:"OpenZiti Release",baseurl:"https://packages.openziti.org/zitipax-openziti-rpm-stable/redhat/$basearch",enabled:"yes",gpgkey:"https://packages.openziti.org/zitipax-openziti-rpm-stable/redhat/$basearch/repodata/repomd.xml.key",repo_gpgcheck:"yes",gpgcheck:"no"}}]}]}]}}]); \ No newline at end of file diff --git a/assets/js/8a9ffb5d.76a8055d.js b/assets/js/8a9ffb5d.76a8055d.js new file mode 100644 index 00000000..6d542283 --- /dev/null +++ b/assets/js/8a9ffb5d.76a8055d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1864],{2390:(e,n,s)=>{s.d(n,{Ay:()=>l,RM:()=>c});var r=s(4848),i=s(8453),o=s(3070),t=s(3484),a=s(3769);const c=[];function d(e){return(0,r.jsx)(o.F,{children:(0,r.jsxs)("div",{className:a.A.downloadContainer,children:[(0,r.jsx)(t.A,{osName:"Windows",osLogo:"/img/logo-windows.svg",infoText:"Download EXE",guideLink:"/docs/guides/install/windows"}),(0,r.jsx)(t.A,{osName:"macOS",osLogo:"/img/logo-apple.svg",infoText:"Homebrew or Download",guideLink:"/docs/guides/install/macos"}),(0,r.jsx)(t.A,{osName:"Linux",osLogo:"/img/logo-linux.svg",infoText:"RPM/DEB/AUR or Homebrew",guideLink:"/docs/guides/install/linux"})]})})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d()}},4954:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"getting-started","title":"Getting Started","description":"Your Secure Internet Sharing Perimeter","source":"@site/versioned_docs/version-0.4/getting-started.mdx","sourceDirName":".","slug":"/getting-started","permalink":"/docs/0.4/getting-started","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/getting-started.mdx","tags":[],"version":"0.4","sidebarPosition":10,"frontMatter":{"title":"Getting Started","sidebar_label":"Getting Started","sidebar_position":10},"sidebar":"tutorialSidebar","next":{"title":"Concepts","permalink":"/docs/0.4/concepts/"}}');var i=s(4848),o=s(8453),t=(s(3070),s(3484),s(3769),s(2390));const a={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:10},c=void 0,d={},l=[{value:"Your Secure Internet Sharing Perimeter",id:"your-secure-internet-sharing-perimeter",level:2},{value:"Your First Share",id:"your-first-share",level:3},{value:"Share Backend Modes",id:"share-backend-modes",level:2},{value:"Open Source",id:"open-source",level:2},{value:"Ziti native",id:"ziti-native",level:3},{value:"What's it for?",id:"whats-it-for",level:2},{value:"Installing the zrok Command",id:"installing-the-zrok-command",level:2},...t.RM,{value:"Enabling Your zrok Environment",id:"enabling-your-zrok-environment",level:2},{value:"Sharing",id:"sharing",level:2},{value:"Ephemeral by Default",id:"ephemeral-by-default",level:3},{value:"Public Shares and Frontends",id:"public-shares-and-frontends",level:3},{value:"Private Shares",id:"private-shares",level:3},{value:"Proxy Backend Mode",id:"proxy-backend-mode",level:3},{value:"Web Backend Mode",id:"web-backend-mode",level:3},{value:"Reserved Shares",id:"reserved-shares",level:3},{value:"Concepts Review",id:"concepts-review",level:2},{value:"Instance and Account",id:"instance-and-account",level:3},{value:"Environment",id:"environment",level:3},{value:"Shares",id:"shares",level:3},{value:"Reserved Shares",id:"reserved-shares-1",level:3},{value:"Self-Hosting an Instance",id:"self-hosting-an-instance",level:2},{value:"Resources",id:"resources",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components},{Card:r,CardBody:a,CardFooter:c,CardHeader:d,Column:l,Columns:h}=n;return r||m("Card",!0),a||m("CardBody",!0),c||m("CardFooter",!0),d||m("CardHeader",!0),l||m("Column",!0),h||m("Columns",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"your-secure-internet-sharing-perimeter",children:"Your Secure Internet Sharing Perimeter"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," (",(0,i.jsx)(n.em,{children:"/zi\u02d0\u0279\u0252k/ ZEE-rock"}),") is a secure, open-source, self-hostable sharing platform that simplifies shielding and sharing network services or files.\nThere's a hardened zrok-as-a-service offering available at ",(0,i.jsx)(n.a,{href:"https://myzrok.io",children:"myzrok.io"})," with a generous free tier."]}),"\n",(0,i.jsx)(n.h3,{id:"your-first-share",children:"Your First Share"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Get an account token"}),"\n"]}),"\n",(0,i.jsxs)(h,{className:"text--center getting-started-cards",style:{marginLeft:1},children:[(0,i.jsx)(l,{style:{paddingBottom:20},children:(0,i.jsxs)(r,{shadow:"tl",children:[(0,i.jsx)(d,{children:(0,i.jsx)("h3",{children:"Hosted zrok"})}),(0,i.jsx)(a,{children:(0,i.jsx)(n.p,{children:"Use NetFoundry's public zrok instance."})}),(0,i.jsx)(c,{children:(0,i.jsx)("a",{href:"https://myzrok.io/",children:(0,i.jsx)("button",{className:"button button--secondary button--block",children:"Get an Account"})})})]})}),(0,i.jsx)(l,{style:{paddingBottom:20},children:(0,i.jsxs)(r,{shadow:"tl",children:[(0,i.jsx)(d,{children:(0,i.jsx)("h3",{children:"Self-Hosted zrok"})}),(0,i.jsx)(a,{children:(0,i.jsx)(n.p,{children:"Run a zrok instance on Linux, Docker, or Kubernetes."})}),(0,i.jsx)(c,{children:(0,i.jsx)("a",{href:"/docs/category/self-hosting/",children:(0,i.jsx)("button",{className:"button button--secondary button--block",children:"Guides"})})})]})})]}),"\n",(0,i.jsxs)(n.ol,{start:"2",children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"#installing-the-zrok-command",children:"Download the zrok binary"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Enable zrok for your ",(0,i.jsx)(n.a,{href:"#enabling-your-zrok-environment",children:"user environment"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"zrok enable <your_account_token>\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Share ",(0,i.jsx)(n.code,{children:"http://localhost:8080"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"zrok share public 8080\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Visit the public URL displayed in your terminal"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"zrok share public",src:s(439).A+"",width:"1115",height:"628"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"share-backend-modes",children:"Share Backend Modes"}),"\n",(0,i.jsx)(n.p,{children:"zrok shares can be public or private, with different options for backend modes, including:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-public",children:"Public shares"})," for ",(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/http",children:"web services"})," or ",(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/files",children:"files"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-private",children:"Private shares for web services or files"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/tunnels",children:"TCP Tunnels"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/tunnels",children:"UDP Tunnels"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/guides/drives",children:"File Drives"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/guides/vpn/",children:"VPN"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"open-source",children:"Open Source"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," is licensed under Apache 2.0."]}),"\n",(0,i.jsxs)(n.p,{children:["Check ",(0,i.jsx)(n.a,{href:"https://github.com/orgs/openziti/projects/16",children:"the roadmap"})," if you're thinking about the future. We would love to hear your ideas for ",(0,i.jsx)(n.code,{children:"zrok"}),"!"]}),"\n",(0,i.jsxs)(n.p,{children:["The best ways to engage are ",(0,i.jsx)(n.a,{href:"https://openziti.discourse.group/",children:"Discourse"})," for questions and ",(0,i.jsx)(n.a,{href:"https://github.com/openziti/zrok/issues",children:"GitHub Issues"})," for documenting problems."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/opensource",children:"Read more about zrok open source"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"ziti-native",children:"Ziti native"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," is a ",(0,i.jsx)(n.em,{children:"Ziti Native Application"}),", built on the ",(0,i.jsx)(n.a,{href:"https://openziti.io",children:"OpenZiti"})," platform, and supported by the OpenZiti community and NetFoundry team."]}),"\n",(0,i.jsx)(n.h2,{id:"whats-it-for",children:"What's it for?"}),"\n",(0,i.jsxs)(n.p,{children:["Use ",(0,i.jsx)(n.code,{children:"zrok"})," to share a running service, like a web server or a network socket, or to share a directory of static files."]}),"\n",(0,i.jsxs)(n.p,{children:["If ",(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-public",children:"sharing publicly"}),", you can reserve a subdomain, enable authentication options, or both. Public shares proxy HTTPS to your service or files."]}),"\n",(0,i.jsxs)(n.p,{children:["If ",(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-private",children:"sharing privately"}),", only users with the share token can access your share. In addition to what you can share publicly, private shares can include TCP and UDP services."]}),"\n",(0,i.jsx)(n.h2,{id:"installing-the-zrok-command",children:"Installing the zrok Command"}),"\n",(0,i.jsx)(t.Ay,{}),"\n",(0,i.jsx)(n.h2,{id:"enabling-your-zrok-environment",children:"Enabling Your zrok Environment"}),"\n",(0,i.jsxs)(n.p,{children:["After you have ",(0,i.jsx)(n.a,{href:"#your-first-share",children:"an account"}),", you can enable your ",(0,i.jsx)(n.code,{children:"zrok"})," environment."]}),"\n",(0,i.jsxs)(n.p,{children:["A zrok environment usually refers to an enabled device where shares and accesses can be created, .e.g., ",(0,i.jsx)(n.code,{children:"~/.zrok"})," on a Unix machine. It can be a specific user's environment or a system-wide agent's environment owned by the administrator."]}),"\n",(0,i.jsxs)(n.p,{children:["When your ",(0,i.jsx)(n.code,{children:"zrok"})," account was created, the service generated a ",(0,i.jsx)(n.em,{children:"secret token"})," that identifies and authenticates in a single step. Protect your secret token as if it were a password, or an important account number; it's a ",(0,i.jsx)(n.em,{children:"secret"}),", protect it."]}),"\n",(0,i.jsxs)(n.p,{children:["When we left off you had downloaded, extracted, and configured your ",(0,i.jsx)(n.code,{children:"zrok"})," environment. In order to use that environment with your account, you'll need to ",(0,i.jsx)(n.code,{children:"enable"})," it. Enabling an environment generates a secure identity and the necessary underlying security policies with the OpenZiti network hosting the ",(0,i.jsx)(n.code,{children:"zrok"})," service."]}),"\n",(0,i.jsxs)(n.p,{children:["From the web console, click on your email address in the upper right corner of the header. That drop down menu contains an ",(0,i.jsx)(n.code,{children:"Enable Your Environment"})," link. Click that link and a modal dialog will be shown like this:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Enable Modal Dialog",src:s(5803).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["This dialog box shows you the ",(0,i.jsx)(n.code,{children:"zrok enable"})," command that you can use to enable any shell to work with your ",(0,i.jsx)(n.code,{children:"zrok"})," account with a single command."]}),"\n",(0,i.jsx)(n.p,{children:"Let's copy that command and paste it into your shell:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Example"',children:"$ zrok enable klFEoIi0QAg7 \n\u28fb contacting the zrok service...\n"})}),"\n",(0,i.jsx)(n.p,{children:"After a few seconds, the message will change and indicate that the enable operation succeeded:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Example"',children:"$ zrok enable klFEoIi0QAg7 \n\u28fb the zrok environment was successfully enabled...\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Now, if we run a ",(0,i.jsx)(n.code,{children:"zrok status"})," command, you will see the details of your environment:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",children:"zrok status\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:"Config:\n\n CONFIG VALUE SOURCE\n apiEndpoint https://api.staging.zrok.io env\n\nEnvironment:\n\n PROPERTY VALUE\n Secret Token <<SET>>\n Ziti Identity <<SET>>\n"})}),"\n",(0,i.jsx)(n.p,{children:"Excellent... our environment is now fully enabled."}),"\n",(0,i.jsxs)(n.p,{children:["If we return to the ",(0,i.jsx)(n.em,{children:"web console"}),", we'll now see the new environment reflected in the explorer view:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"New Environment in Web UI",src:s(6054).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["In my case, the environment is named ",(0,i.jsx)(n.code,{children:"michael@ziti-lx"}),", which is the username of my shell and the hostname of the system the shell is running on."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Should you want to use a non-default name for your environment, you can pass the ",(0,i.jsx)(n.code,{children:"-d"})," option to the ",(0,i.jsx)(n.code,{children:"zrok enable"})," command. See ",(0,i.jsx)(n.code,{children:"zrok enable --help"})," for details."]})}),"\n",(0,i.jsxs)(n.p,{children:["If you click on the environment node in the explorer in the ",(0,i.jsx)(n.em,{children:"web console"}),", the details panel shown at the bottom of the page will change:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Empty Environment",src:s(3826).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["The explorer supports clicking, dragging, mouse wheel zooming, and selecting the nodes in the graph for more information (and available actions) for the selected node. If you ever get lost in the explorer, click the ",(0,i.jsx)(n.img,{alt:"Zoom to Fit",src:s(8794).A+"",width:"30",height:"25"})," ",(0,i.jsx)(n.em,{children:"zoom to fit"})," icon in the lower right corner of the explorer."]}),"\n",(0,i.jsxs)(n.p,{children:["If we click on the ",(0,i.jsx)(n.code,{children:"Detail"})," tab for our environment, we'll see something like:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Environment Detail",src:s(4387).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["With your ",(0,i.jsx)(n.code,{children:"zrok"})," account you can ",(0,i.jsx)(n.code,{children:"zrok enable"})," multiple environments. This will allow you to run ",(0,i.jsx)(n.code,{children:"zrok share"})," in one environment, and ",(0,i.jsx)(n.code,{children:"zrok access"})," in other environments."]})}),"\n",(0,i.jsx)(n.p,{children:"Your environment is fully ready to go. Now we can move on to the fun stuff..."}),"\n",(0,i.jsx)(n.h2,{id:"sharing",children:"Sharing"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," is designed to make sharing resources as effortless as possible, while providing a high degree of security and control."]}),"\n",(0,i.jsx)(n.h3,{id:"ephemeral-by-default",children:"Ephemeral by Default"}),"\n",(0,i.jsxs)(n.p,{children:["Shared resources are ",(0,i.jsx)(n.em,{children:"ephemeral"})," by default; as soon as you terminate the ",(0,i.jsx)(n.code,{children:"zrok share"})," command, the entire share is removed and is no longer available to any users. Identifiers for shared resources are randomly allocated when the share is created."]}),"\n",(0,i.jsx)(n.h3,{id:"public-shares-and-frontends",children:"Public Shares and Frontends"}),"\n",(0,i.jsxs)(n.p,{children:["Resources that are shared ",(0,i.jsx)(n.em,{children:"publicly"})," are exposed to any users on the internet who have access to the ",(0,i.jsx)(n.code,{children:"zrok"}),' instance\'s "frontend".']}),"\n",(0,i.jsx)(n.p,{children:"A frontend is an HTTPS listener exposed to the internet, that lets any user with your ephemeral share token access your publicly shared resources."}),"\n",(0,i.jsxs)(n.p,{children:["For example, I might create a public share using the ",(0,i.jsx)(n.code,{children:"zrok share public"})," command, which results in my ",(0,i.jsx)(n.code,{children:"zrok"})," instance exposing a URL like ",(0,i.jsx)(n.code,{children:"https://2ptgbr8tlfvk.share.zrok.io"})," to access my resources."]}),"\n",(0,i.jsxs)(n.p,{children:['In this case, my share was given the "share token" of ',(0,i.jsx)(n.code,{children:"2ptgbr8tlfvk"}),". That URL can be given to any user, allowing them to immediately access the shared resources directly from my local environment, all without exposing any access to my private, secure environment. The physical network location of my environment is not exposed to anonymous consumers of my resources."]}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsxs)(n.p,{children:["Here is the ",(0,i.jsx)(n.code,{children:"--help"})," output from ",(0,i.jsx)(n.code,{children:"zrok share public"}),":"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"zrok share public\n"})}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:'Error: accepts 1 arg(s), received 0\nUsage:\n zrok share public <target> [flags]\n\nFlags:\n --backend-mode string The backend mode {proxy, web, caddy, drive} (default "proxy")\n --basic-auth stringArray Basic authentication users (<username:password>,...)\n --frontends stringArray Selected frontends to use for the share (default [public])\n --headless Disable TUI and run headless\n -h, --help help for public\n --insecure Enable insecure TLS certificate validation for <target>\n\nGlobal Flags:\n -p, --panic Panic instead of showing pretty errors\n -v, --verbose Enable verbose logging\n\n[ERROR]: an error occurred (accepts 1 arg(s), received 0)\n'})}),(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"<target>"})," defines the path to the local resource that you intend to share. The form of ",(0,i.jsx)(n.code,{children:"<target>"})," depends on the ",(0,i.jsx)(n.code,{children:"--backend-mode"})," that you're using."]}),(0,i.jsxs)(n.p,{children:["In the case of ",(0,i.jsx)(n.code,{children:"--backend-mode proxy"}),", ",(0,i.jsx)(n.code,{children:"<target>"})," should be a URL to an HTTP endpoint."]}),(0,i.jsxs)(n.p,{children:["In the case of ",(0,i.jsx)(n.code,{children:"--backend-mode web"}),", ",(0,i.jsx)(n.code,{children:"<target>"}),' is the path to a file on disk that serves as the "root" of the file tree to be shared.']})]}),"\n",(0,i.jsx)(n.p,{children:"If we return to the web console, we see our share in the explorer:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Web Console Share",src:s(898).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["If we click on our new share in the explorer, we can see the share details:\n",(0,i.jsx)(n.img,{alt:"Share Details",src:s(8404).A+"",width:"1791",height:"1369"})]}),"\n",(0,i.jsxs)(n.p,{children:["If we click on the ",(0,i.jsx)(n.em,{children:"frontend endpoint"})," a new browser tab opens and we see the content of our share:\n",(0,i.jsx)(n.img,{alt:"Share Frontend",src:s(9467).A+"",width:"1669",height:"1033"})]}),"\n",(0,i.jsx)(n.p,{children:"If we click on the environment in the explorer, we're shown all of the shares for that environment (including our new share), along with a spark line that shows the activity:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Environment Spark Line",src:s(590).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["And as soon as I terminate the ",(0,i.jsx)(n.code,{children:"zrok share"})," client, the resources are removed from the ",(0,i.jsx)(n.code,{children:"zrok"})," environment."]}),"\n",(0,i.jsx)(n.p,{children:"If we try to reload the frontend endpoint in our web browser, we'll see:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Not Found",src:s(4532).A+"",width:"1556",height:"1229"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-public",children:"More about public shares"})}),"\n",(0,i.jsx)(n.h3,{id:"private-shares",children:"Private Shares"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," also provides a powerful ",(0,i.jsx)(n.em,{children:"private"})," sharing model. If I execute the following command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Example"',children:"$ zrok share private http://localhost:8080\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"zrok"})," service will respond with the following:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:"access your share with: zrok access private wvszln4dyz9q\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Rather than allowing access to your service through a public frontend, a ",(0,i.jsx)(n.em,{children:"private"})," share is only exposed to the underlying OpenZiti network, and can only be accessed using the ",(0,i.jsx)(n.code,{children:"zrok access"})," command."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"zrok access private wvszln4dyz9q"})," command can be run by any ",(0,i.jsx)(n.code,{children:"zrok"})," user, allowing them to create and bind a local HTTP listener, that allows for private access to your shared resources."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-private",children:"More about private shares"})}),"\n",(0,i.jsx)(n.h3,{id:"proxy-backend-mode",children:"Proxy Backend Mode"}),"\n",(0,i.jsxs)(n.p,{children:["Without specifying a ",(0,i.jsx)(n.em,{children:"backend mode"}),", the ",(0,i.jsx)(n.code,{children:"zrok share"})," command will assume that you're trying to share a ",(0,i.jsx)(n.code,{children:"proxy"})," resource. A ",(0,i.jsx)(n.code,{children:"proxy"})," resource is usually some private HTTP/HTTPS endpoint (like a development server, or a private application) running in your local environment. Usually such an endpoint would have no inbound connectivity except for however it is reachable from your local environment. It might be running on ",(0,i.jsx)(n.code,{children:"localhost"}),", or only listening on a private LAN segment behind a firewall."]}),"\n",(0,i.jsxs)(n.p,{children:["For these services a ",(0,i.jsx)(n.code,{children:"proxy"})," share will allow those endpoints to be reached, either ",(0,i.jsx)(n.em,{children:"publicly"})," or ",(0,i.jsx)(n.em,{children:"privately"})," through the ",(0,i.jsx)(n.code,{children:"zrok"})," service."]}),"\n",(0,i.jsx)(n.h3,{id:"web-backend-mode",children:"Web Backend Mode"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"zrok share"})," command accepts a ",(0,i.jsx)(n.code,{children:"--backend-mode"})," option. Besides ",(0,i.jsx)(n.code,{children:"proxy"}),", the current ",(0,i.jsx)(n.code,{children:"v0.3"})," release (as of this writing) also supports a ",(0,i.jsx)(n.code,{children:"web"})," mode. The ",(0,i.jsx)(n.code,{children:"web"})," mode allows you to specify a local folder on your filesystem, and instantly turns your ",(0,i.jsx)(n.code,{children:"zrok"})," client into a web server, exposing your web content either ",(0,i.jsx)(n.em,{children:"publicly"})," or ",(0,i.jsx)(n.em,{children:"privately"})," without having to a configure a web server."]}),"\n",(0,i.jsx)(n.h3,{id:"reserved-shares",children:"Reserved Shares"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," shares are ",(0,i.jsx)(n.em,{children:"ephemeral"}),' unless you specifically create a "reserved" share.']}),"\n",(0,i.jsxs)(n.p,{children:["A reserved share can be re-used multiple times; it will survive termination of the ",(0,i.jsx)(n.code,{children:"zrok share"})," command, allowing for longer-lasting semi-permanent access to shared resources."]}),"\n",(0,i.jsx)(n.p,{children:"The first step is to create the reserved share:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",metastring:'title="Example"',children:"$ zrok reserve public --backend-mode web v0.3_getting_started\n[ 0.275] INFO main.(*reserveCommand).run: your reserved share token is 'mltwsinym1s2'\n[ 0.275] INFO main.(*reserveCommand).run: reserved frontend endpoint: https://mltwsinym1s2.share.zrok.io\n"})}),"\n",(0,i.jsxs)(n.p,{children:["I'm asking the ",(0,i.jsx)(n.code,{children:"zrok"})," service to reserve a share with a ",(0,i.jsx)(n.code,{children:"web"})," backend mode, pointing at my local ",(0,i.jsx)(n.code,{children:"docs"})," folder."]}),"\n",(0,i.jsxs)(n.p,{children:["You'll want to remember the share token (",(0,i.jsx)(n.code,{children:"mltwsinym1s2"})," in this case), and the frontend endpoint URL. If this were a ",(0,i.jsx)(n.em,{children:"private"})," reserved share, there would not be a frontend URL."]}),"\n",(0,i.jsx)(n.p,{children:"If we do nothing else, and then point a web browser at the frontend endpoint, we get:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Not Found",src:s(5151).A+"",width:"1556",height:"1229"})}),"\n",(0,i.jsxs)(n.p,{children:["This is the ",(0,i.jsx)(n.code,{children:"404"})," error message returned by the ",(0,i.jsx)(n.code,{children:"zrok"})," frontend. We're getting this because we haven't yet started up a ",(0,i.jsx)(n.code,{children:"zrok share"})," for the service. Let's do that:"]}),"\n",(0,i.jsx)(n.p,{children:"This command:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",metastring:'title="Example"',children:"$ zrok share reserved mltwsinym1s2\n"})}),"\n",(0,i.jsx)(n.p,{children:"...results in a new share backend starting up and connecting to the existing reserved share:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"zrok share reserved",src:s(1248).A+"",width:"951",height:"706"})}),"\n",(0,i.jsxs)(n.p,{children:["And now if we refresh the frontend endpoint URL in the web browser, we'll see an index of the ",(0,i.jsx)(n.code,{children:"docs"})," directory:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"zrok docs share",src:s(9467).A+"",width:"1669",height:"1033"})}),"\n",(0,i.jsxs)(n.p,{children:["With the reserved share, we're free to stop and restart the ",(0,i.jsx)(n.code,{children:"zrok share reserved"})," command as many times as we want, without losing the token for our share."]}),"\n",(0,i.jsxs)(n.p,{children:["When we're done with the reserved share, we can ",(0,i.jsx)(n.em,{children:"release"})," it using this command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",metastring:'title="Example"',children:"$ zrok release mltwsinym1s2\n[ 0.230] INFO main.(*releaseCommand).run: reserved share 'mltwsinym1s2' released\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-reserved",children:"More about reserved shares"})}),"\n",(0,i.jsx)(n.h2,{id:"concepts-review",children:"Concepts Review"}),"\n",(0,i.jsxs)(n.p,{children:["In summary, ",(0,i.jsx)(n.code,{children:"zrok"})," lets you easily and securely share resources with both general internet users (through ",(0,i.jsx)(n.em,{children:"public"})," sharing) and also with other ",(0,i.jsx)(n.code,{children:"zrok"})," users (through ",(0,i.jsx)(n.em,{children:"private"})," sharing)."]}),"\n",(0,i.jsxs)(n.p,{children:["Here's a quick review of the ",(0,i.jsx)(n.code,{children:"zrok"})," mental model and the vocabulary."]}),"\n",(0,i.jsx)(n.h3,{id:"instance-and-account",children:"Instance and Account"}),"\n",(0,i.jsxs)(n.p,{children:["You create an ",(0,i.jsx)(n.em,{children:"account"})," with a ",(0,i.jsx)(n.code,{children:"zrok"})," ",(0,i.jsx)(n.em,{children:"instance"}),". Your account is identified by a username and a password, which you use to log into the ",(0,i.jsx)(n.em,{children:"web console"}),". Your account also has a ",(0,i.jsx)(n.em,{children:"secret token"}),", which you will use to authenticate from the ",(0,i.jsx)(n.code,{children:"zrok"})," command-line to interact with the ",(0,i.jsx)(n.em,{children:"instance"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You create a new ",(0,i.jsx)(n.em,{children:"account"})," with NetFoundry's ",(0,i.jsx)(n.code,{children:"zrok"})," ",(0,i.jsx)(n.em,{children:"instance"})," by subscribing in ",(0,i.jsx)(n.a,{href:"https://myzrok.io",children:"myzrok.io"})," or in a self-hosted ",(0,i.jsx)(n.code,{children:"zrok"})," ",(0,i.jsx)(n.em,{children:"instance"})," by running ",(0,i.jsxs)(n.a,{href:"/docs/0.4/guides/self-hosting/self-service-invite",children:["the ",(0,i.jsx)(n.code,{children:"zrok invite"})," command"]})," or the ",(0,i.jsx)(n.code,{children:"zrok admin create account"})," command."]}),"\n",(0,i.jsx)(n.h3,{id:"environment",children:"Environment"}),"\n",(0,i.jsxs)(n.p,{children:["Using your ",(0,i.jsx)(n.em,{children:"secret token"})," you use the ",(0,i.jsx)(n.code,{children:"zrok"})," command-line interface to create an ",(0,i.jsx)(n.em,{children:"environment"}),". An ",(0,i.jsx)(n.em,{children:"environment"})," corresponds to a single command-line user on a specific ",(0,i.jsx)(n.em,{children:"host system"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You create a new ",(0,i.jsx)(n.em,{children:"environment"})," by using the ",(0,i.jsx)(n.code,{children:"zrok enable"})," command."]}),"\n",(0,i.jsx)(n.h3,{id:"shares",children:"Shares"}),"\n",(0,i.jsxs)(n.p,{children:["Once you've enabled an ",(0,i.jsx)(n.em,{children:"environment"}),", you then create one or more ",(0,i.jsx)(n.em,{children:"shares"}),". Shares have either a ",(0,i.jsx)(n.em,{children:"public"})," or ",(0,i.jsx)(n.em,{children:"private"})," ",(0,i.jsx)(n.em,{children:"sharing mode"}),". ",(0,i.jsx)(n.em,{children:"Shares"})," share a specific type of resource using a ",(0,i.jsx)(n.em,{children:"backend mode"}),". As of this writing ",(0,i.jsx)(n.code,{children:"zrok"})," supports a ",(0,i.jsx)(n.code,{children:"proxy"})," ",(0,i.jsx)(n.em,{children:"backend mode"})," to share local HTTP resources as a ",(0,i.jsx)(n.em,{children:"reverse proxy"}),". ",(0,i.jsx)(n.code,{children:"zrok"})," also supports a ",(0,i.jsx)(n.code,{children:"web"})," ",(0,i.jsx)(n.em,{children:"backend mode"})," to share local file and HTML resources by enabling a basic HTTP server."]}),"\n",(0,i.jsxs)(n.p,{children:["Every ",(0,i.jsx)(n.em,{children:"share"})," is identified by a ",(0,i.jsx)(n.em,{children:"share token"}),". ",(0,i.jsx)(n.em,{children:"Public shares"})," can be accessed through either a ",(0,i.jsx)(n.em,{children:"frontend"})," instance offered through the ",(0,i.jsx)(n.code,{children:"zrok"})," ",(0,i.jsx)(n.em,{children:"instance"}),", or through the ",(0,i.jsx)(n.code,{children:"zrok access"})," command. ",(0,i.jsx)(n.em,{children:"Private shares"})," can only be accessed through the ",(0,i.jsx)(n.code,{children:"zrok access"})," command."]}),"\n",(0,i.jsxs)(n.p,{children:["You use the ",(0,i.jsx)(n.code,{children:"zrok share"})," command to create and enable ",(0,i.jsx)(n.em,{children:"ephemeral shares"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"reserved-shares-1",children:"Reserved Shares"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," supports creating ",(0,i.jsx)(n.em,{children:"shares"})," that have a consistent ",(0,i.jsx)(n.em,{children:"share token"})," that survives restarts of the ",(0,i.jsx)(n.code,{children:"zrok share"})," command. These are considered ",(0,i.jsx)(n.em,{children:"non-ephemeral"}),", and is callled a ",(0,i.jsx)(n.em,{children:"reserved share"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You use the ",(0,i.jsx)(n.code,{children:"zrok reserve"})," command to create ",(0,i.jsx)(n.em,{children:"reserved shares"}),". Reserved shares last until you use the ",(0,i.jsx)(n.code,{children:"zrok release"})," command to delete them."]}),"\n",(0,i.jsx)(n.h2,{id:"self-hosting-an-instance",children:"Self-Hosting an Instance"}),"\n",(0,i.jsxs)(n.p,{children:["Interested in self-hosting your own ",(0,i.jsx)(n.code,{children:"zrok"})," instance? See the ",(0,i.jsx)(n.a,{href:"/docs/category/self-hosting/",children:"self-hosting guides"}),"!"]}),"\n",(0,i.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Learn about ",(0,i.jsx)(n.a,{href:"https://openziti.io/",children:"OpenZiti"})]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}function m(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},3070:(e,n,s)=>{s.d(n,{F:()=>a,d:()=>t});var r=s(6540),i=s(4848);const o=(0,r.createContext)([]),t=()=>(0,r.useContext)(o),a=e=>{let{children:n}=e;const[s,t]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),t(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,i.jsx)(o.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(3070),i=s(3769),o=s(8532),t=s(4848);const a=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},c=e=>{let{osName:n,osLogo:s,infoText:c,guideLink:d}=e;const{colorMode:l}=(0,o.G)(),h=(0,r.d)();console.log("Assets in DownloadCard:",h);const u=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),m=h.filter((e=>e.name.includes(u)));return console.log("Filtered assets for",n,"in DownloadCard:",m),(0,t.jsxs)("div",{className:i.A.downloadCard,children:[(0,t.jsx)("div",{className:i.A.imgContainer,children:(0,t.jsx)("img",{src:s,alt:`${n} logo`})}),(0,t.jsx)("h3",{children:n}),m.length>0&&(0,t.jsx)("ul",{children:m.map(((e,n)=>(0,t.jsx)("li",{className:i.A.downloadButtons,children:(0,t.jsx)("a",{href:e.url,className:i.A.downloadLinks,children:a(e.arch)})},n)))}),d&&(0,t.jsxs)("div",{className:i.A.cardFooter,children:[(0,t.jsx)("p",{children:c}),(0,t.jsx)("a",{href:d,children:"GUIDE"}),(0,t.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},5803:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_enable_modal-45da63a6907e930daaa4c798272ce5fa.png"},4532:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_not_found-fa3415937c341eb10e1eb98c9b063583.png"},5151:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_reserved_not_found-2519707e5cc3e635b7a6feb381c1d040.png"},439:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_share_public-322dc971477d3a0b97b42478ea023dd7.png"},1248:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_share_reserved-6bce67775ce2c41abb0ef13ee1fad972.png"},590:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_environment_spark-925c0709ed7a42f0a708ab0523cdeb5f.png"},898:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_explorer_share-11236f68819da60014d5444e7429c189.png"},8404:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_share_detail-efeaa472d5e5c225a160f6d5647086b3.png"},9467:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_share_frontend-d7c0d6495493c00b94ae237339f2dc2d.png"},4387:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_ui_empty_environment_detail-153c921ade86f924079947b0f734e3ff.png"},3826:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_ui_empty_shares-048c08c18477bcabb9fa8c1b58537012.png"},6054:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_ui_new_environment-414d8e8fc25b09f257cb40ba47d6acbb.png"},8794:(e,n,s)=>{s.d(n,{A:()=>r});const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAZCAIAAACpVwlNAAAEr2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMjUiCiAgIHRpZmY6SW1hZ2VXaWR0aD0iMzAiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249Ijk2LzEiCiAgIHRpZmY6WVJlc29sdXRpb249Ijk2LzEiCiAgIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIzMCIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjI1IgogICBleGlmOkNvbG9yU3BhY2U9IjEiCiAgIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDEtMTlUMTA6NTY6NTYtMDU6MDAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDEtMTlUMTA6NTY6NTYtMDU6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgUGhvdG8gMi4wLjMiCiAgICAgIHN0RXZ0OndoZW49IjIwMjMtMDEtMTlUMTA6NTY6NTYtMDU6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0iciI/Pq+HLHgAAAGBaUNDUHNSR0IgSUVDNjE5NjYtMi4xAAAokXWRy0tCQRSHP7UwemBQixYtJKyVRg8Q27RQyoJqYQZZbfTmI/BxuVcJaRu0FQqiNr0W9RfUNmgdBEURRNtaF7UpuZ2rghF5hjnzzW/OOcycAWs4rWT0piHIZPNaKOh3LkaWnPYXLHThwIclqujq7PxkmIb2eS/RYrces1bjuH+tbTWuK2BpER5XVC0vPCU8s55XTd4R7lZS0VXhM2G3JhcUvjP1WJVfTU5W+dtkLRwKgLVT2Jn8xbFfrKS0jLC8HFcmXVBq9zFf0h7PLszL2iezF50QQfw4mWaCAF6GGRPvxcMIg7KjQf5QJX+OnOQq4lWKaKyRJEUet6gFqR6XNSF6XEaaotn/v33VE6Mj1ertfmh+Noz3frBvQ7lkGF9HhlE+BtsTXGbr+blD8H2IXqprrgNwbML5VV2L7cLFFvQ8qlEtWpFsMq2JBLydQkcEum6gdbnas9o5Jw8Q3pCvuoa9fRiQeMfKD2DYZ+PDGzxnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABZklEQVRIie2VvW7CMBDHr1UfwE5fII7lvahIWUEiQ7qxMLEwsVQMSB0YKsTExsDGxFs0QyqlYyMVld3k4wWw/QgMlqp+JXFQGZB649n3k+9/f9sX9w+PcJq4PBH3H/0zrkrWfK99jVF5/V6qIIzqod1m485rC6nK0S5GAPArvRDNHFtINZ0vviQp4Un2OTObjIs6q6G122yMhgPfaxvuN0VbGDHHBgDm2FbVAGqgLYyEVPFmCwDB84uQilHyB2i32ej3uoySvZDT+YInGaPE77QqlSkznz5vv9cFAEbJdL4QUlkYjYYDnYnf3o9HC6mewog5ttZBq7xcrf1OK95sy61ZgQaAIIx2lGgdRsPBcrXmSbYXstLyRmPkSWZh5HdaAODe3uipVlaZmk9IxdMcAHiam3DBRJCPCMJol+bfbuMxaJ7mjJLZZFxeb2Gku6mDTrJXjExeviILFqJF8WtpGOf5y5wn+gBcXI4F9z6rgwAAAABJRU5ErkJggg=="},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const i={},o=r.createContext(i);function t(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8a9ffb5d.d8752724.js b/assets/js/8a9ffb5d.d8752724.js deleted file mode 100644 index 2052824a..00000000 --- a/assets/js/8a9ffb5d.d8752724.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1864],{2390:(e,n,s)=>{s.d(n,{Ay:()=>l,RM:()=>c});var r=s(4848),i=s(8453),o=s(3070),t=s(3484),a=s(3769);const c=[];function d(e){return(0,r.jsx)(o.F,{children:(0,r.jsxs)("div",{className:a.A.downloadContainer,children:[(0,r.jsx)(t.A,{osName:"Windows",osLogo:"/img/logo-windows.svg",infoText:"Download EXE",guideLink:"/docs/guides/install/windows"}),(0,r.jsx)(t.A,{osName:"macOS",osLogo:"/img/logo-apple.svg",infoText:"Homebrew or Download",guideLink:"/docs/guides/install/macos"}),(0,r.jsx)(t.A,{osName:"Linux",osLogo:"/img/logo-linux.svg",infoText:"RPM/DEB or Homebrew",guideLink:"/docs/guides/install/linux"})]})})}function l(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d()}},4954:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"getting-started","title":"Getting Started","description":"Your Secure Internet Sharing Perimeter","source":"@site/versioned_docs/version-0.4/getting-started.mdx","sourceDirName":".","slug":"/getting-started","permalink":"/docs/0.4/getting-started","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/getting-started.mdx","tags":[],"version":"0.4","sidebarPosition":10,"frontMatter":{"title":"Getting Started","sidebar_label":"Getting Started","sidebar_position":10},"sidebar":"tutorialSidebar","next":{"title":"Concepts","permalink":"/docs/0.4/concepts/"}}');var i=s(4848),o=s(8453),t=(s(3070),s(3484),s(3769),s(2390));const a={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:10},c=void 0,d={},l=[{value:"Your Secure Internet Sharing Perimeter",id:"your-secure-internet-sharing-perimeter",level:2},{value:"Your First Share",id:"your-first-share",level:3},{value:"Share Backend Modes",id:"share-backend-modes",level:2},{value:"Open Source",id:"open-source",level:2},{value:"Ziti native",id:"ziti-native",level:3},{value:"What's it for?",id:"whats-it-for",level:2},{value:"Installing the zrok Command",id:"installing-the-zrok-command",level:2},...t.RM,{value:"Enabling Your zrok Environment",id:"enabling-your-zrok-environment",level:2},{value:"Sharing",id:"sharing",level:2},{value:"Ephemeral by Default",id:"ephemeral-by-default",level:3},{value:"Public Shares and Frontends",id:"public-shares-and-frontends",level:3},{value:"Private Shares",id:"private-shares",level:3},{value:"Proxy Backend Mode",id:"proxy-backend-mode",level:3},{value:"Web Backend Mode",id:"web-backend-mode",level:3},{value:"Reserved Shares",id:"reserved-shares",level:3},{value:"Concepts Review",id:"concepts-review",level:2},{value:"Instance and Account",id:"instance-and-account",level:3},{value:"Environment",id:"environment",level:3},{value:"Shares",id:"shares",level:3},{value:"Reserved Shares",id:"reserved-shares-1",level:3},{value:"Self-Hosting an Instance",id:"self-hosting-an-instance",level:2},{value:"Resources",id:"resources",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,o.R)(),...e.components},{Card:r,CardBody:a,CardFooter:c,CardHeader:d,Column:l,Columns:h}=n;return r||m("Card",!0),a||m("CardBody",!0),c||m("CardFooter",!0),d||m("CardHeader",!0),l||m("Column",!0),h||m("Columns",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"your-secure-internet-sharing-perimeter",children:"Your Secure Internet Sharing Perimeter"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," (",(0,i.jsx)(n.em,{children:"/zi\u02d0\u0279\u0252k/ ZEE-rock"}),") is a secure, open-source, self-hostable sharing platform that simplifies shielding and sharing network services or files.\nThere's a hardened zrok-as-a-service offering available at ",(0,i.jsx)(n.a,{href:"https://myzrok.io",children:"myzrok.io"})," with a generous free tier."]}),"\n",(0,i.jsx)(n.h3,{id:"your-first-share",children:"Your First Share"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Get an account token"}),"\n"]}),"\n",(0,i.jsxs)(h,{className:"text--center getting-started-cards",style:{marginLeft:1},children:[(0,i.jsx)(l,{style:{paddingBottom:20},children:(0,i.jsxs)(r,{shadow:"tl",children:[(0,i.jsx)(d,{children:(0,i.jsx)("h3",{children:"Hosted zrok"})}),(0,i.jsx)(a,{children:(0,i.jsx)(n.p,{children:"Use NetFoundry's public zrok instance."})}),(0,i.jsx)(c,{children:(0,i.jsx)("a",{href:"https://myzrok.io/",children:(0,i.jsx)("button",{className:"button button--secondary button--block",children:"Get an Account"})})})]})}),(0,i.jsx)(l,{style:{paddingBottom:20},children:(0,i.jsxs)(r,{shadow:"tl",children:[(0,i.jsx)(d,{children:(0,i.jsx)("h3",{children:"Self-Hosted zrok"})}),(0,i.jsx)(a,{children:(0,i.jsx)(n.p,{children:"Run a zrok instance on Linux, Docker, or Kubernetes."})}),(0,i.jsx)(c,{children:(0,i.jsx)("a",{href:"/docs/category/self-hosting/",children:(0,i.jsx)("button",{className:"button button--secondary button--block",children:"Guides"})})})]})})]}),"\n",(0,i.jsxs)(n.ol,{start:"2",children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"#installing-the-zrok-command",children:"Download the zrok binary"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Enable zrok for your ",(0,i.jsx)(n.a,{href:"#enabling-your-zrok-environment",children:"user environment"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"zrok enable <your_account_token>\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Share ",(0,i.jsx)(n.code,{children:"http://localhost:8080"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"zrok share public 8080\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Visit the public URL displayed in your terminal"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"zrok share public",src:s(439).A+"",width:"1115",height:"628"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"share-backend-modes",children:"Share Backend Modes"}),"\n",(0,i.jsx)(n.p,{children:"zrok shares can be public or private, with different options for backend modes, including:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-public",children:"Public shares"})," for ",(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/http",children:"web services"})," or ",(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/files",children:"files"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-private",children:"Private shares for web services or files"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/tunnels",children:"TCP Tunnels"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/tunnels",children:"UDP Tunnels"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/guides/drives",children:"File Drives"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/guides/vpn/",children:"VPN"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"open-source",children:"Open Source"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," is licensed under Apache 2.0."]}),"\n",(0,i.jsxs)(n.p,{children:["Check ",(0,i.jsx)(n.a,{href:"https://github.com/orgs/openziti/projects/16",children:"the roadmap"})," if you're thinking about the future. We would love to hear your ideas for ",(0,i.jsx)(n.code,{children:"zrok"}),"!"]}),"\n",(0,i.jsxs)(n.p,{children:["The best ways to engage are ",(0,i.jsx)(n.a,{href:"https://openziti.discourse.group/",children:"Discourse"})," for questions and ",(0,i.jsx)(n.a,{href:"https://github.com/openziti/zrok/issues",children:"GitHub Issues"})," for documenting problems."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/opensource",children:"Read more about zrok open source"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"ziti-native",children:"Ziti native"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," is a ",(0,i.jsx)(n.em,{children:"Ziti Native Application"}),", built on the ",(0,i.jsx)(n.a,{href:"https://openziti.io",children:"OpenZiti"})," platform, and supported by the OpenZiti community and NetFoundry team."]}),"\n",(0,i.jsx)(n.h2,{id:"whats-it-for",children:"What's it for?"}),"\n",(0,i.jsxs)(n.p,{children:["Use ",(0,i.jsx)(n.code,{children:"zrok"})," to share a running service, like a web server or a network socket, or to share a directory of static files."]}),"\n",(0,i.jsxs)(n.p,{children:["If ",(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-public",children:"sharing publicly"}),", you can reserve a subdomain, enable authentication options, or both. Public shares proxy HTTPS to your service or files."]}),"\n",(0,i.jsxs)(n.p,{children:["If ",(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-private",children:"sharing privately"}),", only users with the share token can access your share. In addition to what you can share publicly, private shares can include TCP and UDP services."]}),"\n",(0,i.jsx)(n.h2,{id:"installing-the-zrok-command",children:"Installing the zrok Command"}),"\n",(0,i.jsx)(t.Ay,{}),"\n",(0,i.jsx)(n.h2,{id:"enabling-your-zrok-environment",children:"Enabling Your zrok Environment"}),"\n",(0,i.jsxs)(n.p,{children:["After you have ",(0,i.jsx)(n.a,{href:"#your-first-share",children:"an account"}),", you can enable your ",(0,i.jsx)(n.code,{children:"zrok"})," environment."]}),"\n",(0,i.jsxs)(n.p,{children:["A zrok environment usually refers to an enabled device where shares and accesses can be created, .e.g., ",(0,i.jsx)(n.code,{children:"~/.zrok"})," on a Unix machine. It can be a specific user's environment or a system-wide agent's environment owned by the administrator."]}),"\n",(0,i.jsxs)(n.p,{children:["When your ",(0,i.jsx)(n.code,{children:"zrok"})," account was created, the service generated a ",(0,i.jsx)(n.em,{children:"secret token"})," that identifies and authenticates in a single step. Protect your secret token as if it were a password, or an important account number; it's a ",(0,i.jsx)(n.em,{children:"secret"}),", protect it."]}),"\n",(0,i.jsxs)(n.p,{children:["When we left off you had downloaded, extracted, and configured your ",(0,i.jsx)(n.code,{children:"zrok"})," environment. In order to use that environment with your account, you'll need to ",(0,i.jsx)(n.code,{children:"enable"})," it. Enabling an environment generates a secure identity and the necessary underlying security policies with the OpenZiti network hosting the ",(0,i.jsx)(n.code,{children:"zrok"})," service."]}),"\n",(0,i.jsxs)(n.p,{children:["From the web console, click on your email address in the upper right corner of the header. That drop down menu contains an ",(0,i.jsx)(n.code,{children:"Enable Your Environment"})," link. Click that link and a modal dialog will be shown like this:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Enable Modal Dialog",src:s(5803).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["This dialog box shows you the ",(0,i.jsx)(n.code,{children:"zrok enable"})," command that you can use to enable any shell to work with your ",(0,i.jsx)(n.code,{children:"zrok"})," account with a single command."]}),"\n",(0,i.jsx)(n.p,{children:"Let's copy that command and paste it into your shell:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Example"',children:"$ zrok enable klFEoIi0QAg7 \n\u28fb contacting the zrok service...\n"})}),"\n",(0,i.jsx)(n.p,{children:"After a few seconds, the message will change and indicate that the enable operation succeeded:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Example"',children:"$ zrok enable klFEoIi0QAg7 \n\u28fb the zrok environment was successfully enabled...\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Now, if we run a ",(0,i.jsx)(n.code,{children:"zrok status"})," command, you will see the details of your environment:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",children:"zrok status\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:"Config:\n\n CONFIG VALUE SOURCE\n apiEndpoint https://api.staging.zrok.io env\n\nEnvironment:\n\n PROPERTY VALUE\n Secret Token <<SET>>\n Ziti Identity <<SET>>\n"})}),"\n",(0,i.jsx)(n.p,{children:"Excellent... our environment is now fully enabled."}),"\n",(0,i.jsxs)(n.p,{children:["If we return to the ",(0,i.jsx)(n.em,{children:"web console"}),", we'll now see the new environment reflected in the explorer view:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"New Environment in Web UI",src:s(6054).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["In my case, the environment is named ",(0,i.jsx)(n.code,{children:"michael@ziti-lx"}),", which is the username of my shell and the hostname of the system the shell is running on."]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Should you want to use a non-default name for your environment, you can pass the ",(0,i.jsx)(n.code,{children:"-d"})," option to the ",(0,i.jsx)(n.code,{children:"zrok enable"})," command. See ",(0,i.jsx)(n.code,{children:"zrok enable --help"})," for details."]})}),"\n",(0,i.jsxs)(n.p,{children:["If you click on the environment node in the explorer in the ",(0,i.jsx)(n.em,{children:"web console"}),", the details panel shown at the bottom of the page will change:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Empty Environment",src:s(3826).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["The explorer supports clicking, dragging, mouse wheel zooming, and selecting the nodes in the graph for more information (and available actions) for the selected node. If you ever get lost in the explorer, click the ",(0,i.jsx)(n.img,{alt:"Zoom to Fit",src:s(8794).A+"",width:"30",height:"25"})," ",(0,i.jsx)(n.em,{children:"zoom to fit"})," icon in the lower right corner of the explorer."]}),"\n",(0,i.jsxs)(n.p,{children:["If we click on the ",(0,i.jsx)(n.code,{children:"Detail"})," tab for our environment, we'll see something like:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Environment Detail",src:s(4387).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["With your ",(0,i.jsx)(n.code,{children:"zrok"})," account you can ",(0,i.jsx)(n.code,{children:"zrok enable"})," multiple environments. This will allow you to run ",(0,i.jsx)(n.code,{children:"zrok share"})," in one environment, and ",(0,i.jsx)(n.code,{children:"zrok access"})," in other environments."]})}),"\n",(0,i.jsx)(n.p,{children:"Your environment is fully ready to go. Now we can move on to the fun stuff..."}),"\n",(0,i.jsx)(n.h2,{id:"sharing",children:"Sharing"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," is designed to make sharing resources as effortless as possible, while providing a high degree of security and control."]}),"\n",(0,i.jsx)(n.h3,{id:"ephemeral-by-default",children:"Ephemeral by Default"}),"\n",(0,i.jsxs)(n.p,{children:["Shared resources are ",(0,i.jsx)(n.em,{children:"ephemeral"})," by default; as soon as you terminate the ",(0,i.jsx)(n.code,{children:"zrok share"})," command, the entire share is removed and is no longer available to any users. Identifiers for shared resources are randomly allocated when the share is created."]}),"\n",(0,i.jsx)(n.h3,{id:"public-shares-and-frontends",children:"Public Shares and Frontends"}),"\n",(0,i.jsxs)(n.p,{children:["Resources that are shared ",(0,i.jsx)(n.em,{children:"publicly"})," are exposed to any users on the internet who have access to the ",(0,i.jsx)(n.code,{children:"zrok"}),' instance\'s "frontend".']}),"\n",(0,i.jsx)(n.p,{children:"A frontend is an HTTPS listener exposed to the internet, that lets any user with your ephemeral share token access your publicly shared resources."}),"\n",(0,i.jsxs)(n.p,{children:["For example, I might create a public share using the ",(0,i.jsx)(n.code,{children:"zrok share public"})," command, which results in my ",(0,i.jsx)(n.code,{children:"zrok"})," instance exposing a URL like ",(0,i.jsx)(n.code,{children:"https://2ptgbr8tlfvk.share.zrok.io"})," to access my resources."]}),"\n",(0,i.jsxs)(n.p,{children:['In this case, my share was given the "share token" of ',(0,i.jsx)(n.code,{children:"2ptgbr8tlfvk"}),". That URL can be given to any user, allowing them to immediately access the shared resources directly from my local environment, all without exposing any access to my private, secure environment. The physical network location of my environment is not exposed to anonymous consumers of my resources."]}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsxs)(n.p,{children:["Here is the ",(0,i.jsx)(n.code,{children:"--help"})," output from ",(0,i.jsx)(n.code,{children:"zrok share public"}),":"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-text",children:"zrok share public\n"})}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:'Error: accepts 1 arg(s), received 0\nUsage:\n zrok share public <target> [flags]\n\nFlags:\n --backend-mode string The backend mode {proxy, web, caddy, drive} (default "proxy")\n --basic-auth stringArray Basic authentication users (<username:password>,...)\n --frontends stringArray Selected frontends to use for the share (default [public])\n --headless Disable TUI and run headless\n -h, --help help for public\n --insecure Enable insecure TLS certificate validation for <target>\n\nGlobal Flags:\n -p, --panic Panic instead of showing pretty errors\n -v, --verbose Enable verbose logging\n\n[ERROR]: an error occurred (accepts 1 arg(s), received 0)\n'})}),(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"<target>"})," defines the path to the local resource that you intend to share. The form of ",(0,i.jsx)(n.code,{children:"<target>"})," depends on the ",(0,i.jsx)(n.code,{children:"--backend-mode"})," that you're using."]}),(0,i.jsxs)(n.p,{children:["In the case of ",(0,i.jsx)(n.code,{children:"--backend-mode proxy"}),", ",(0,i.jsx)(n.code,{children:"<target>"})," should be a URL to an HTTP endpoint."]}),(0,i.jsxs)(n.p,{children:["In the case of ",(0,i.jsx)(n.code,{children:"--backend-mode web"}),", ",(0,i.jsx)(n.code,{children:"<target>"}),' is the path to a file on disk that serves as the "root" of the file tree to be shared.']})]}),"\n",(0,i.jsx)(n.p,{children:"If we return to the web console, we see our share in the explorer:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Web Console Share",src:s(898).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["If we click on our new share in the explorer, we can see the share details:\n",(0,i.jsx)(n.img,{alt:"Share Details",src:s(8404).A+"",width:"1791",height:"1369"})]}),"\n",(0,i.jsxs)(n.p,{children:["If we click on the ",(0,i.jsx)(n.em,{children:"frontend endpoint"})," a new browser tab opens and we see the content of our share:\n",(0,i.jsx)(n.img,{alt:"Share Frontend",src:s(9467).A+"",width:"1669",height:"1033"})]}),"\n",(0,i.jsx)(n.p,{children:"If we click on the environment in the explorer, we're shown all of the shares for that environment (including our new share), along with a spark line that shows the activity:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Environment Spark Line",src:s(590).A+"",width:"1791",height:"1369"})}),"\n",(0,i.jsxs)(n.p,{children:["And as soon as I terminate the ",(0,i.jsx)(n.code,{children:"zrok share"})," client, the resources are removed from the ",(0,i.jsx)(n.code,{children:"zrok"})," environment."]}),"\n",(0,i.jsx)(n.p,{children:"If we try to reload the frontend endpoint in our web browser, we'll see:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Not Found",src:s(4532).A+"",width:"1556",height:"1229"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-public",children:"More about public shares"})}),"\n",(0,i.jsx)(n.h3,{id:"private-shares",children:"Private Shares"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," also provides a powerful ",(0,i.jsx)(n.em,{children:"private"})," sharing model. If I execute the following command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Example"',children:"$ zrok share private http://localhost:8080\n"})}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"zrok"})," service will respond with the following:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:"access your share with: zrok access private wvszln4dyz9q\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Rather than allowing access to your service through a public frontend, a ",(0,i.jsx)(n.em,{children:"private"})," share is only exposed to the underlying OpenZiti network, and can only be accessed using the ",(0,i.jsx)(n.code,{children:"zrok access"})," command."]}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"zrok access private wvszln4dyz9q"})," command can be run by any ",(0,i.jsx)(n.code,{children:"zrok"})," user, allowing them to create and bind a local HTTP listener, that allows for private access to your shared resources."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-private",children:"More about private shares"})}),"\n",(0,i.jsx)(n.h3,{id:"proxy-backend-mode",children:"Proxy Backend Mode"}),"\n",(0,i.jsxs)(n.p,{children:["Without specifying a ",(0,i.jsx)(n.em,{children:"backend mode"}),", the ",(0,i.jsx)(n.code,{children:"zrok share"})," command will assume that you're trying to share a ",(0,i.jsx)(n.code,{children:"proxy"})," resource. A ",(0,i.jsx)(n.code,{children:"proxy"})," resource is usually some private HTTP/HTTPS endpoint (like a development server, or a private application) running in your local environment. Usually such an endpoint would have no inbound connectivity except for however it is reachable from your local environment. It might be running on ",(0,i.jsx)(n.code,{children:"localhost"}),", or only listening on a private LAN segment behind a firewall."]}),"\n",(0,i.jsxs)(n.p,{children:["For these services a ",(0,i.jsx)(n.code,{children:"proxy"})," share will allow those endpoints to be reached, either ",(0,i.jsx)(n.em,{children:"publicly"})," or ",(0,i.jsx)(n.em,{children:"privately"})," through the ",(0,i.jsx)(n.code,{children:"zrok"})," service."]}),"\n",(0,i.jsx)(n.h3,{id:"web-backend-mode",children:"Web Backend Mode"}),"\n",(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"zrok share"})," command accepts a ",(0,i.jsx)(n.code,{children:"--backend-mode"})," option. Besides ",(0,i.jsx)(n.code,{children:"proxy"}),", the current ",(0,i.jsx)(n.code,{children:"v0.3"})," release (as of this writing) also supports a ",(0,i.jsx)(n.code,{children:"web"})," mode. The ",(0,i.jsx)(n.code,{children:"web"})," mode allows you to specify a local folder on your filesystem, and instantly turns your ",(0,i.jsx)(n.code,{children:"zrok"})," client into a web server, exposing your web content either ",(0,i.jsx)(n.em,{children:"publicly"})," or ",(0,i.jsx)(n.em,{children:"privately"})," without having to a configure a web server."]}),"\n",(0,i.jsx)(n.h3,{id:"reserved-shares",children:"Reserved Shares"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," shares are ",(0,i.jsx)(n.em,{children:"ephemeral"}),' unless you specifically create a "reserved" share.']}),"\n",(0,i.jsxs)(n.p,{children:["A reserved share can be re-used multiple times; it will survive termination of the ",(0,i.jsx)(n.code,{children:"zrok share"})," command, allowing for longer-lasting semi-permanent access to shared resources."]}),"\n",(0,i.jsx)(n.p,{children:"The first step is to create the reserved share:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",metastring:'title="Example"',children:"$ zrok reserve public --backend-mode web v0.3_getting_started\n[ 0.275] INFO main.(*reserveCommand).run: your reserved share token is 'mltwsinym1s2'\n[ 0.275] INFO main.(*reserveCommand).run: reserved frontend endpoint: https://mltwsinym1s2.share.zrok.io\n"})}),"\n",(0,i.jsxs)(n.p,{children:["I'm asking the ",(0,i.jsx)(n.code,{children:"zrok"})," service to reserve a share with a ",(0,i.jsx)(n.code,{children:"web"})," backend mode, pointing at my local ",(0,i.jsx)(n.code,{children:"docs"})," folder."]}),"\n",(0,i.jsxs)(n.p,{children:["You'll want to remember the share token (",(0,i.jsx)(n.code,{children:"mltwsinym1s2"})," in this case), and the frontend endpoint URL. If this were a ",(0,i.jsx)(n.em,{children:"private"})," reserved share, there would not be a frontend URL."]}),"\n",(0,i.jsx)(n.p,{children:"If we do nothing else, and then point a web browser at the frontend endpoint, we get:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Not Found",src:s(5151).A+"",width:"1556",height:"1229"})}),"\n",(0,i.jsxs)(n.p,{children:["This is the ",(0,i.jsx)(n.code,{children:"404"})," error message returned by the ",(0,i.jsx)(n.code,{children:"zrok"})," frontend. We're getting this because we haven't yet started up a ",(0,i.jsx)(n.code,{children:"zrok share"})," for the service. Let's do that:"]}),"\n",(0,i.jsx)(n.p,{children:"This command:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",metastring:'title="Example"',children:"$ zrok share reserved mltwsinym1s2\n"})}),"\n",(0,i.jsx)(n.p,{children:"...results in a new share backend starting up and connecting to the existing reserved share:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"zrok share reserved",src:s(1248).A+"",width:"951",height:"706"})}),"\n",(0,i.jsxs)(n.p,{children:["And now if we refresh the frontend endpoint URL in the web browser, we'll see an index of the ",(0,i.jsx)(n.code,{children:"docs"})," directory:"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"zrok docs share",src:s(9467).A+"",width:"1669",height:"1033"})}),"\n",(0,i.jsxs)(n.p,{children:["With the reserved share, we're free to stop and restart the ",(0,i.jsx)(n.code,{children:"zrok share reserved"})," command as many times as we want, without losing the token for our share."]}),"\n",(0,i.jsxs)(n.p,{children:["When we're done with the reserved share, we can ",(0,i.jsx)(n.em,{children:"release"})," it using this command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-txt",metastring:'title="Example"',children:"$ zrok release mltwsinym1s2\n[ 0.230] INFO main.(*releaseCommand).run: reserved share 'mltwsinym1s2' released\n"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"/docs/0.4/concepts/sharing-reserved",children:"More about reserved shares"})}),"\n",(0,i.jsx)(n.h2,{id:"concepts-review",children:"Concepts Review"}),"\n",(0,i.jsxs)(n.p,{children:["In summary, ",(0,i.jsx)(n.code,{children:"zrok"})," lets you easily and securely share resources with both general internet users (through ",(0,i.jsx)(n.em,{children:"public"})," sharing) and also with other ",(0,i.jsx)(n.code,{children:"zrok"})," users (through ",(0,i.jsx)(n.em,{children:"private"})," sharing)."]}),"\n",(0,i.jsxs)(n.p,{children:["Here's a quick review of the ",(0,i.jsx)(n.code,{children:"zrok"})," mental model and the vocabulary."]}),"\n",(0,i.jsx)(n.h3,{id:"instance-and-account",children:"Instance and Account"}),"\n",(0,i.jsxs)(n.p,{children:["You create an ",(0,i.jsx)(n.em,{children:"account"})," with a ",(0,i.jsx)(n.code,{children:"zrok"})," ",(0,i.jsx)(n.em,{children:"instance"}),". Your account is identified by a username and a password, which you use to log into the ",(0,i.jsx)(n.em,{children:"web console"}),". Your account also has a ",(0,i.jsx)(n.em,{children:"secret token"}),", which you will use to authenticate from the ",(0,i.jsx)(n.code,{children:"zrok"})," command-line to interact with the ",(0,i.jsx)(n.em,{children:"instance"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You create a new ",(0,i.jsx)(n.em,{children:"account"})," with NetFoundry's ",(0,i.jsx)(n.code,{children:"zrok"})," ",(0,i.jsx)(n.em,{children:"instance"})," by subscribing in ",(0,i.jsx)(n.a,{href:"https://myzrok.io",children:"myzrok.io"})," or in a self-hosted ",(0,i.jsx)(n.code,{children:"zrok"})," ",(0,i.jsx)(n.em,{children:"instance"})," by running ",(0,i.jsxs)(n.a,{href:"/docs/0.4/guides/self-hosting/self-service-invite",children:["the ",(0,i.jsx)(n.code,{children:"zrok invite"})," command"]})," or the ",(0,i.jsx)(n.code,{children:"zrok admin create account"})," command."]}),"\n",(0,i.jsx)(n.h3,{id:"environment",children:"Environment"}),"\n",(0,i.jsxs)(n.p,{children:["Using your ",(0,i.jsx)(n.em,{children:"secret token"})," you use the ",(0,i.jsx)(n.code,{children:"zrok"})," command-line interface to create an ",(0,i.jsx)(n.em,{children:"environment"}),". An ",(0,i.jsx)(n.em,{children:"environment"})," corresponds to a single command-line user on a specific ",(0,i.jsx)(n.em,{children:"host system"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You create a new ",(0,i.jsx)(n.em,{children:"environment"})," by using the ",(0,i.jsx)(n.code,{children:"zrok enable"})," command."]}),"\n",(0,i.jsx)(n.h3,{id:"shares",children:"Shares"}),"\n",(0,i.jsxs)(n.p,{children:["Once you've enabled an ",(0,i.jsx)(n.em,{children:"environment"}),", you then create one or more ",(0,i.jsx)(n.em,{children:"shares"}),". Shares have either a ",(0,i.jsx)(n.em,{children:"public"})," or ",(0,i.jsx)(n.em,{children:"private"})," ",(0,i.jsx)(n.em,{children:"sharing mode"}),". ",(0,i.jsx)(n.em,{children:"Shares"})," share a specific type of resource using a ",(0,i.jsx)(n.em,{children:"backend mode"}),". As of this writing ",(0,i.jsx)(n.code,{children:"zrok"})," supports a ",(0,i.jsx)(n.code,{children:"proxy"})," ",(0,i.jsx)(n.em,{children:"backend mode"})," to share local HTTP resources as a ",(0,i.jsx)(n.em,{children:"reverse proxy"}),". ",(0,i.jsx)(n.code,{children:"zrok"})," also supports a ",(0,i.jsx)(n.code,{children:"web"})," ",(0,i.jsx)(n.em,{children:"backend mode"})," to share local file and HTML resources by enabling a basic HTTP server."]}),"\n",(0,i.jsxs)(n.p,{children:["Every ",(0,i.jsx)(n.em,{children:"share"})," is identified by a ",(0,i.jsx)(n.em,{children:"share token"}),". ",(0,i.jsx)(n.em,{children:"Public shares"})," can be accessed through either a ",(0,i.jsx)(n.em,{children:"frontend"})," instance offered through the ",(0,i.jsx)(n.code,{children:"zrok"})," ",(0,i.jsx)(n.em,{children:"instance"}),", or through the ",(0,i.jsx)(n.code,{children:"zrok access"})," command. ",(0,i.jsx)(n.em,{children:"Private shares"})," can only be accessed through the ",(0,i.jsx)(n.code,{children:"zrok access"})," command."]}),"\n",(0,i.jsxs)(n.p,{children:["You use the ",(0,i.jsx)(n.code,{children:"zrok share"})," command to create and enable ",(0,i.jsx)(n.em,{children:"ephemeral shares"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"reserved-shares-1",children:"Reserved Shares"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"zrok"})," supports creating ",(0,i.jsx)(n.em,{children:"shares"})," that have a consistent ",(0,i.jsx)(n.em,{children:"share token"})," that survives restarts of the ",(0,i.jsx)(n.code,{children:"zrok share"})," command. These are considered ",(0,i.jsx)(n.em,{children:"non-ephemeral"}),", and is callled a ",(0,i.jsx)(n.em,{children:"reserved share"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You use the ",(0,i.jsx)(n.code,{children:"zrok reserve"})," command to create ",(0,i.jsx)(n.em,{children:"reserved shares"}),". Reserved shares last until you use the ",(0,i.jsx)(n.code,{children:"zrok release"})," command to delete them."]}),"\n",(0,i.jsx)(n.h2,{id:"self-hosting-an-instance",children:"Self-Hosting an Instance"}),"\n",(0,i.jsxs)(n.p,{children:["Interested in self-hosting your own ",(0,i.jsx)(n.code,{children:"zrok"})," instance? See the ",(0,i.jsx)(n.a,{href:"/docs/category/self-hosting/",children:"self-hosting guides"}),"!"]}),"\n",(0,i.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Learn about ",(0,i.jsx)(n.a,{href:"https://openziti.io/",children:"OpenZiti"})]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}function m(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},3070:(e,n,s)=>{s.d(n,{F:()=>a,d:()=>t});var r=s(6540),i=s(4848);const o=(0,r.createContext)([]),t=()=>(0,r.useContext)(o),a=e=>{let{children:n}=e;const[s,t]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),t(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,i.jsx)(o.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(3070),i=s(3769),o=s(8532),t=s(4848);const a=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},c=e=>{let{osName:n,osLogo:s,infoText:c,guideLink:d}=e;const{colorMode:l}=(0,o.G)(),h=(0,r.d)();console.log("Assets in DownloadCard:",h);const u=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),m=h.filter((e=>e.name.includes(u)));return console.log("Filtered assets for",n,"in DownloadCard:",m),(0,t.jsxs)("div",{className:i.A.downloadCard,children:[(0,t.jsx)("div",{className:i.A.imgContainer,children:(0,t.jsx)("img",{src:s,alt:`${n} logo`})}),(0,t.jsx)("h3",{children:n}),m.length>0&&(0,t.jsx)("ul",{children:m.map(((e,n)=>(0,t.jsx)("li",{className:i.A.downloadButtons,children:(0,t.jsx)("a",{href:e.url,className:i.A.downloadLinks,children:a(e.arch)})},n)))}),d&&(0,t.jsxs)("div",{className:i.A.cardFooter,children:[(0,t.jsx)("p",{children:c}),(0,t.jsx)("a",{href:d,children:"GUIDE"}),(0,t.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},5803:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_enable_modal-45da63a6907e930daaa4c798272ce5fa.png"},4532:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_not_found-fa3415937c341eb10e1eb98c9b063583.png"},5151:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_reserved_not_found-2519707e5cc3e635b7a6feb381c1d040.png"},439:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_share_public-322dc971477d3a0b97b42478ea023dd7.png"},1248:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_share_reserved-6bce67775ce2c41abb0ef13ee1fad972.png"},590:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_environment_spark-925c0709ed7a42f0a708ab0523cdeb5f.png"},898:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_explorer_share-11236f68819da60014d5444e7429c189.png"},8404:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_share_detail-efeaa472d5e5c225a160f6d5647086b3.png"},9467:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_share_frontend-d7c0d6495493c00b94ae237339f2dc2d.png"},4387:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_ui_empty_environment_detail-153c921ade86f924079947b0f734e3ff.png"},3826:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_ui_empty_shares-048c08c18477bcabb9fa8c1b58537012.png"},6054:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_ui_new_environment-414d8e8fc25b09f257cb40ba47d6acbb.png"},8794:(e,n,s)=>{s.d(n,{A:()=>r});const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAZCAIAAACpVwlNAAAEr2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMjUiCiAgIHRpZmY6SW1hZ2VXaWR0aD0iMzAiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249Ijk2LzEiCiAgIHRpZmY6WVJlc29sdXRpb249Ijk2LzEiCiAgIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIzMCIKICAgZXhpZjpQaXhlbFlEaW1lbnNpb249IjI1IgogICBleGlmOkNvbG9yU3BhY2U9IjEiCiAgIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDEtMTlUMTA6NTY6NTYtMDU6MDAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDEtMTlUMTA6NTY6NTYtMDU6MDAiPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgUGhvdG8gMi4wLjMiCiAgICAgIHN0RXZ0OndoZW49IjIwMjMtMDEtMTlUMTA6NTY6NTYtMDU6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0iciI/Pq+HLHgAAAGBaUNDUHNSR0IgSUVDNjE5NjYtMi4xAAAokXWRy0tCQRSHP7UwemBQixYtJKyVRg8Q27RQyoJqYQZZbfTmI/BxuVcJaRu0FQqiNr0W9RfUNmgdBEURRNtaF7UpuZ2rghF5hjnzzW/OOcycAWs4rWT0piHIZPNaKOh3LkaWnPYXLHThwIclqujq7PxkmIb2eS/RYrces1bjuH+tbTWuK2BpER5XVC0vPCU8s55XTd4R7lZS0VXhM2G3JhcUvjP1WJVfTU5W+dtkLRwKgLVT2Jn8xbFfrKS0jLC8HFcmXVBq9zFf0h7PLszL2iezF50QQfw4mWaCAF6GGRPvxcMIg7KjQf5QJX+OnOQq4lWKaKyRJEUet6gFqR6XNSF6XEaaotn/v33VE6Mj1ertfmh+Noz3frBvQ7lkGF9HhlE+BtsTXGbr+blD8H2IXqprrgNwbML5VV2L7cLFFvQ8qlEtWpFsMq2JBLydQkcEum6gdbnas9o5Jw8Q3pCvuoa9fRiQeMfKD2DYZ+PDGzxnAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABZklEQVRIie2VvW7CMBDHr1UfwE5fII7lvahIWUEiQ7qxMLEwsVQMSB0YKsTExsDGxFs0QyqlYyMVld3k4wWw/QgMlqp+JXFQGZB649n3k+9/f9sX9w+PcJq4PBH3H/0zrkrWfK99jVF5/V6qIIzqod1m485rC6nK0S5GAPArvRDNHFtINZ0vviQp4Un2OTObjIs6q6G122yMhgPfaxvuN0VbGDHHBgDm2FbVAGqgLYyEVPFmCwDB84uQilHyB2i32ej3uoySvZDT+YInGaPE77QqlSkznz5vv9cFAEbJdL4QUlkYjYYDnYnf3o9HC6mewog5ttZBq7xcrf1OK95sy61ZgQaAIIx2lGgdRsPBcrXmSbYXstLyRmPkSWZh5HdaAODe3uipVlaZmk9IxdMcAHiam3DBRJCPCMJol+bfbuMxaJ7mjJLZZFxeb2Gku6mDTrJXjExeviILFqJF8WtpGOf5y5wn+gBcXI4F9z6rgwAAAABJRU5ErkJggg=="},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const i={},o=r.createContext(i);function t(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b6569025.b77dca15.js b/assets/js/b6569025.b77dca15.js new file mode 100644 index 00000000..eaebacfb --- /dev/null +++ b/assets/js/b6569025.b77dca15.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[714],{2390:(e,n,s)=>{s.d(n,{Ay:()=>c,RM:()=>l});var o=s(4848),t=s(8453),r=s(3070),a=s(3484),i=s(3769);const l=[];function d(e){return(0,o.jsx)(r.F,{children:(0,o.jsxs)("div",{className:i.A.downloadContainer,children:[(0,o.jsx)(a.A,{osName:"Windows",osLogo:"/img/logo-windows.svg",infoText:"Download EXE",guideLink:"/docs/guides/install/windows"}),(0,o.jsx)(a.A,{osName:"macOS",osLogo:"/img/logo-apple.svg",infoText:"Homebrew or Download",guideLink:"/docs/guides/install/macos"}),(0,o.jsx)(a.A,{osName:"Linux",osLogo:"/img/logo-linux.svg",infoText:"RPM/DEB/AUR or Homebrew",guideLink:"/docs/guides/install/linux"})]})})}function c(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d()}},6984:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"guides/install/index","title":"Install","description":"","source":"@site/../docs/guides/install/index.mdx","sourceDirName":"guides/install","slug":"/guides/install/","permalink":"/docs/guides/install/","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/index.mdx","tags":[],"version":"current","frontMatter":{"title":"Install"},"sidebar":"tutorialSidebar","previous":{"title":"Guides","permalink":"/docs/category/guides"},"next":{"title":"Linux","permalink":"/docs/guides/install/linux"}}');var t=s(4848),r=s(8453),a=s(2390);const i={title:"Install"},l=void 0,d={},c=[...a.RM];function u(e){return(0,t.jsx)(a.Ay,{})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u()}},3070:(e,n,s)=>{s.d(n,{F:()=>i,d:()=>a});var o=s(6540),t=s(4848);const r=(0,o.createContext)([]),a=()=>(0,o.useContext)(r),i=e=>{let{children:n}=e;const[s,a]=(0,o.useState)([]);return(0,o.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(r.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var o=s(3070),t=s(3769),r=s(8532),a=s(4848);const i=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:d}=e;const{colorMode:c}=(0,r.G)(),u=(0,o.d)();console.log("Assets in DownloadCard:",u);const m=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),x=u.filter((e=>e.name.includes(m)));return console.log("Filtered assets for",n,"in DownloadCard:",x),(0,a.jsxs)("div",{className:t.A.downloadCard,children:[(0,a.jsx)("div",{className:t.A.imgContainer,children:(0,a.jsx)("img",{src:s,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),x.length>0&&(0,a.jsx)("ul",{children:x.map(((e,n)=>(0,a.jsx)("li",{className:t.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:i(e.arch)})},n)))}),d&&(0,a.jsxs)("div",{className:t.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:d,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>o});const o={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>i});var o=s(6540);const t={},r=o.createContext(t);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b6569025.fe4b9c1c.js b/assets/js/b6569025.fe4b9c1c.js deleted file mode 100644 index bc15468d..00000000 --- a/assets/js/b6569025.fe4b9c1c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[714],{2390:(e,n,s)=>{s.d(n,{Ay:()=>c,RM:()=>l});var o=s(4848),t=s(8453),r=s(3070),a=s(3484),i=s(3769);const l=[];function d(e){return(0,o.jsx)(r.F,{children:(0,o.jsxs)("div",{className:i.A.downloadContainer,children:[(0,o.jsx)(a.A,{osName:"Windows",osLogo:"/img/logo-windows.svg",infoText:"Download EXE",guideLink:"/docs/guides/install/windows"}),(0,o.jsx)(a.A,{osName:"macOS",osLogo:"/img/logo-apple.svg",infoText:"Homebrew or Download",guideLink:"/docs/guides/install/macos"}),(0,o.jsx)(a.A,{osName:"Linux",osLogo:"/img/logo-linux.svg",infoText:"RPM/DEB or Homebrew",guideLink:"/docs/guides/install/linux"})]})})}function c(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d()}},6984:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"guides/install/index","title":"Install","description":"","source":"@site/../docs/guides/install/index.mdx","sourceDirName":"guides/install","slug":"/guides/install/","permalink":"/docs/guides/install/","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/index.mdx","tags":[],"version":"current","frontMatter":{"title":"Install"},"sidebar":"tutorialSidebar","previous":{"title":"Guides","permalink":"/docs/category/guides"},"next":{"title":"Linux","permalink":"/docs/guides/install/linux"}}');var t=s(4848),r=s(8453),a=s(2390);const i={title:"Install"},l=void 0,d={},c=[...a.RM];function u(e){return(0,t.jsx)(a.Ay,{})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(u,{...e})}):u()}},3070:(e,n,s)=>{s.d(n,{F:()=>i,d:()=>a});var o=s(6540),t=s(4848);const r=(0,o.createContext)([]),a=()=>(0,o.useContext)(r),i=e=>{let{children:n}=e;const[s,a]=(0,o.useState)([]);return(0,o.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),a(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,t.jsx)(r.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>l});s(6540);var o=s(3070),t=s(3769),r=s(8532),a=s(4848);const i=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},l=e=>{let{osName:n,osLogo:s,infoText:l,guideLink:d}=e;const{colorMode:c}=(0,r.G)(),u=(0,o.d)();console.log("Assets in DownloadCard:",u);const m=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),x=u.filter((e=>e.name.includes(m)));return console.log("Filtered assets for",n,"in DownloadCard:",x),(0,a.jsxs)("div",{className:t.A.downloadCard,children:[(0,a.jsx)("div",{className:t.A.imgContainer,children:(0,a.jsx)("img",{src:s,alt:`${n} logo`})}),(0,a.jsx)("h3",{children:n}),x.length>0&&(0,a.jsx)("ul",{children:x.map(((e,n)=>(0,a.jsx)("li",{className:t.A.downloadButtons,children:(0,a.jsx)("a",{href:e.url,className:t.A.downloadLinks,children:i(e.arch)})},n)))}),d&&(0,a.jsxs)("div",{className:t.A.cardFooter,children:[(0,a.jsx)("p",{children:l}),(0,a.jsx)("a",{href:d,children:"GUIDE"}),(0,a.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>o});const o={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},8453:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>i});var o=s(6540);const t={},r=o.createContext(t);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f888b719.5c9a422f.js b/assets/js/f888b719.cadb7eaf.js similarity index 76% rename from assets/js/f888b719.5c9a422f.js rename to assets/js/f888b719.cadb7eaf.js index 43ca9b82..14356735 100644 --- a/assets/js/f888b719.5c9a422f.js +++ b/assets/js/f888b719.cadb7eaf.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4470],{7768:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"getting-started","title":"Getting Started","description":"If you\'ve upgraded to v1.0.0 from a previous version and you receive an error message like this:","source":"@site/../docs/getting-started.mdx","sourceDirName":".","slug":"/getting-started","permalink":"/docs/getting-started","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/../docs/getting-started.mdx","tags":[],"version":"current","sidebarPosition":10,"frontMatter":{"title":"Getting Started","sidebar_label":"Getting Started","sidebar_position":10},"sidebar":"tutorialSidebar","next":{"title":"Concepts","permalink":"/docs/concepts/"}}');var o=s(4848),i=s(8453),t=(s(3070),s(3484),s(3769),s(2390));const a={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:10},c=void 0,d={},l=[{value:"Your Secure Internet Sharing Perimeter",id:"your-secure-internet-sharing-perimeter",level:2},{value:"What's it for?",id:"whats-it-for",level:2},{value:"Your First Share",id:"your-first-share",level:3},{value:"Installing the zrok Command",id:"installing-the-zrok-command",level:2},...t.RM,{value:"Enabling Your zrok Environment",id:"enabling-your-zrok-environment",level:2},{value:"Sharing",id:"sharing",level:2},{value:"Ephemeral by Default",id:"ephemeral-by-default",level:3},{value:"Public Shares and Frontends",id:"public-shares-and-frontends",level:3},{value:"Private Shares",id:"private-shares",level:3},{value:"Proxy Backend Mode",id:"proxy-backend-mode",level:3},{value:"Web Backend Mode",id:"web-backend-mode",level:3},{value:"Reserved Shares",id:"reserved-shares",level:3},{value:"Concepts Review",id:"concepts-review",level:2},{value:"Instance and Account",id:"instance-and-account",level:3},{value:"Environment",id:"environment",level:3},{value:"Shares",id:"shares",level:3},{value:"Reserved Shares",id:"reserved-shares-1",level:3},{value:"Self-Hosting an Instance",id:"self-hosting-an-instance",level:2},{value:"Resources",id:"resources",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Card:r,CardBody:a,CardFooter:c,CardHeader:d,Column:l,Columns:h}=n;return r||m("Card",!0),a||m("CardBody",!0),c||m("CardFooter",!0),d||m("CardHeader",!0),l||m("Column",!0),h||m("Columns",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.admonition,{type:"note",children:[(0,o.jsxs)(n.p,{children:["If you've upgraded to ",(0,o.jsx)(n.code,{children:"v1.0.0"})," from a previous version and you receive an error message like this:"]}),(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"[ERROR]: unable to create share (error getting zrok client: client version error accessing api endpoint 'https://api.zrok.io': [POST /clientVersionCheck] clientVersionCheck (status 404): {}: [POST /clientVersionCheck] clientVersionCheck (status 404): {})\n"})}),(0,o.jsxs)(n.p,{children:["Use the command ",(0,o.jsx)(n.code,{children:"zrok rebase apiEndpoint https://api-v1.zrok.io/"})," to update your environment to the latest zrok endpoint."]})]}),"\n",(0,o.jsx)(n.h2,{id:"your-secure-internet-sharing-perimeter",children:"Your Secure Internet Sharing Perimeter"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," (",(0,o.jsx)(n.em,{children:"/zi\u02d0\u0279\u0252k/ ZEE-rock"}),") is a secure, open-source, self-hostable sharing platform that simplifies shielding and sharing network services or files.\nThere's a hardened zrok-as-a-service offering available at ",(0,o.jsx)(n.a,{href:"https://myzrok.io",children:"myzrok.io"})," with a generous free tier."]}),"\n",(0,o.jsx)(n.h2,{id:"whats-it-for",children:"What's it for?"}),"\n",(0,o.jsxs)(n.p,{children:["Use ",(0,o.jsx)(n.code,{children:"zrok"})," to share a running service, like a web server or a network socket, or to share a directory of static files. ",(0,o.jsx)(n.code,{children:"zrok"})," goes beyond simple tunneling to provide sharing solutions for a variety of network and storage use cases."]}),"\n",(0,o.jsxs)(n.p,{children:["When using ",(0,o.jsx)(n.code,{children:"zrok"})," to ",(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-public",children:"share publicly"}),", you can reserve a public hostname, enable authentication options, or both. Public shares proxy HTTPS to your service or files."]}),"\n",(0,o.jsxs)(n.p,{children:["If ",(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-private",children:"sharing privately"}),", only users with the share token (and the appropriate permission grants) can access your share. In addition to what you can share publicly, private shares can include TCP and UDP services."]}),"\n",(0,o.jsxs)(n.p,{children:["Here's a quick overview of what's involved in getting started with ",(0,o.jsx)(n.code,{children:"zrok"}),":"]}),"\n",(0,o.jsx)(n.h3,{id:"your-first-share",children:"Your First Share"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Get an account token"}),"\n"]}),"\n",(0,o.jsxs)(h,{className:"text--center getting-started-cards",style:{marginLeft:1},children:[(0,o.jsx)(l,{style:{paddingBottom:20},children:(0,o.jsxs)(r,{shadow:"tl",children:[(0,o.jsx)(d,{children:(0,o.jsx)("h3",{children:"Hosted zrok"})}),(0,o.jsx)(a,{children:(0,o.jsx)(n.p,{children:"Use NetFoundry's public zrok instance."})}),(0,o.jsx)(c,{children:(0,o.jsx)("a",{href:"https://myzrok.io/",children:(0,o.jsx)("button",{className:"button button--secondary button--block",children:"Get an Account"})})})]})}),(0,o.jsx)(l,{style:{paddingBottom:20},children:(0,o.jsxs)(r,{shadow:"tl",children:[(0,o.jsx)(d,{children:(0,o.jsx)("h3",{children:"Self-Hosted zrok"})}),(0,o.jsx)(a,{children:(0,o.jsx)(n.p,{children:"Run a zrok instance on Linux, Docker, or Kubernetes."})}),(0,o.jsx)(c,{children:(0,o.jsx)("a",{href:"/docs/category/self-hosting/",children:(0,o.jsx)("button",{className:"button button--secondary button--block",children:"Guides"})})})]})})]}),"\n",(0,o.jsxs)(n.ol,{start:"2",children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"#installing-the-zrok-command",children:"Download the zrok binary"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Enable zrok for your ",(0,o.jsx)(n.a,{href:"#enabling-your-zrok-environment",children:"environment"})]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"zrok enable <your_account_token>\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Share ",(0,o.jsx)(n.code,{children:"http://localhost:8080"})]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"zrok share public 8080\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Visit the public URL displayed in your terminal"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok share public",src:s(7739).A+"",width:"697",height:"530"})}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h1,{id:"a-deeper-look-at-getting-started",children:"A Deeper Look at Getting Started"}),"\n",(0,o.jsxs)(n.p,{children:["Here's a deeper, more thorough look at getting started with ",(0,o.jsx)(n.code,{children:"zrok"}),":"]}),"\n",(0,o.jsx)(n.h2,{id:"installing-the-zrok-command",children:"Installing the zrok Command"}),"\n",(0,o.jsx)(t.Ay,{}),"\n",(0,o.jsx)(n.h2,{id:"enabling-your-zrok-environment",children:"Enabling Your zrok Environment"}),"\n",(0,o.jsxs)(n.p,{children:["After you have ",(0,o.jsx)(n.a,{href:"#your-first-share",children:"an account"}),", you can enable your ",(0,o.jsx)(n.code,{children:"zrok"})," environment."]}),"\n",(0,o.jsxs)(n.p,{children:["A zrok environment usually refers to an enabled device where shares and accesses can be created, .e.g., ",(0,o.jsx)(n.code,{children:"~/.zrok"})," on a Unix machine. It can be a specific user's environment or a system-wide agent's environment owned by the administrator."]}),"\n",(0,o.jsxs)(n.p,{children:["When your ",(0,o.jsx)(n.code,{children:"zrok"})," account was created, the service generated an ",(0,o.jsx)(n.em,{children:"account token"})," that identifies and authenticates in a single step. Protect your account token as if it were a password, or an important account number; it's a ",(0,o.jsx)(n.em,{children:"secret"}),", protect it."]}),"\n",(0,o.jsxs)(n.p,{children:["When we left off you had downloaded, extracted, and configured your ",(0,o.jsx)(n.code,{children:"zrok"})," software. In order to use that environment with your account, you'll need to ",(0,o.jsx)(n.code,{children:"enable"})," an ",(0,o.jsx)(n.em,{children:"environment"})," on your system. Enabling an environment generates a secure identity and the necessary underlying security policies with the OpenZiti network hosting the ",(0,o.jsx)(n.code,{children:"zrok"})," service so that you can begin sharing."]}),"\n",(0,o.jsx)(n.p,{children:"Log into the API console at:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"https://api-v1.zrok.io/",children:"https://api-v1.zrok.io/"})}),"\n",(0,o.jsx)(n.p,{children:"When you first log into your account on the API console, your interface will look like this:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok API console, empty",src:s(2279).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsx)(n.p,{children:'In the toolbar, there is a big green button that says "CLICK HERE TO GET STARTED!". If you click that button, you\'ll see the getting started wizard, which looks like this:'}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok getting started modal",src:s(312).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsx)(n.p,{children:"This wizard is broken into multiple steps. The first step we've already covered, which gets the zrok software installed onto your system."}),"\n",(0,o.jsxs)(n.p,{children:['Below "step 2" is a command: ',(0,o.jsx)(n.code,{children:"zrok enable 7g3K6gVKikWb"})," (your account will have a different account token, other than ",(0,o.jsx)(n.code,{children:"7g3K6gVKikWb"}),"). You'll want to copy this command into your shell and execute it:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok enable 7g3K6gVKikWb \n\u28fb contacting the zrok service...\n"})}),"\n",(0,o.jsx)(n.p,{children:"After a few seconds, the message will change and indicate that the enable operation succeeded:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok enable 7g3K6gVKikWb \n\u28fb the zrok environment was successfully enabled...\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Now, if we run a ",(0,o.jsx)(n.code,{children:"zrok status"})," command, you will see the details of your environment:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok status\n\nConfig:\n\n CONFIG VALUE SOURCE \n apiEndpoint https://api-v1.zrok.io env \n defaultFrontend public binary \n headless false binary \n\nEnvironment:\n\n PROPERTY VALUE \n Account Token <<SET>> \n Ziti Identity <<SET>> \n"})}),"\n",(0,o.jsx)(n.p,{children:"Excellent... our environment is now fully enabled."}),"\n",(0,o.jsxs)(n.p,{children:["If we return to the ",(0,o.jsx)(n.em,{children:"API console"}),", we'll now see the new environment reflected in the API console visualizer:"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"New Environment in Web UI",src:s(7954).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsxs)(n.p,{children:["In my case, the environment is named ",(0,o.jsx)(n.code,{children:"michael@testing"}),", which is the username of my shell and the hostname of the system the shell is running on."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Should you want to use a non-default name for your environment, you can pass the ",(0,o.jsx)(n.code,{children:"-d"})," option to the ",(0,o.jsx)(n.code,{children:"zrok enable"})," command. See ",(0,o.jsx)(n.code,{children:"zrok enable --help"})," for details."]})}),"\n",(0,o.jsxs)(n.p,{children:["If you click on the environment node in the explorer in the ",(0,o.jsx)(n.em,{children:"web console"}),", the details panel shown at the bottom of the page will change:"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Empty Environment",src:s(7554).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsxs)(n.p,{children:["The visualizer supports clicking, dragging, mouse wheel zooming, and selecting the nodes in the graph for more information (and available actions) for the selected node. If you ever get lost in the visualizer, click the ",(0,o.jsx)(n.img,{alt:"Zoom to Fit",src:s(5203).A+"",width:"25",height:"23"})," ",(0,o.jsx)(n.em,{children:"zoom to fit"})," icon in the lower right corner of the explorer."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["With your ",(0,o.jsx)(n.code,{children:"zrok"})," account you can ",(0,o.jsx)(n.code,{children:"zrok enable"})," multiple environments. This will allow you to share (and access your shares) from multiple environments simultaneously."]})}),"\n",(0,o.jsx)(n.p,{children:"Your environment is fully ready to go. Now we can move on to the fun stuff..."}),"\n",(0,o.jsx)(n.h2,{id:"sharing",children:"Sharing"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," is designed to make sharing resources as effortless as possible, while providing a high degree of security and control."]}),"\n",(0,o.jsx)(n.h3,{id:"ephemeral-by-default",children:"Ephemeral by Default"}),"\n",(0,o.jsxs)(n.p,{children:["Shared resources are ",(0,o.jsx)(n.em,{children:"ephemeral"})," by default; as soon as you terminate the ",(0,o.jsx)(n.code,{children:"zrok share"})," command, the entire share is removed and is no longer available to any users. Identifiers for shared resources are randomly allocated when the share is created."]}),"\n",(0,o.jsx)(n.h3,{id:"public-shares-and-frontends",children:"Public Shares and Frontends"}),"\n",(0,o.jsxs)(n.p,{children:["Resources that are shared ",(0,o.jsx)(n.em,{children:"publicly"})," are exposed to any users on the internet who have access to the ",(0,o.jsx)(n.code,{children:"zrok"}),' instance\'s "frontend".']}),"\n",(0,o.jsx)(n.p,{children:"A frontend is an HTTPS listener exposed to the internet, that lets any user with your ephemeral share token access your publicly shared resources."}),"\n",(0,o.jsxs)(n.p,{children:["For example, I might create a public share using the ",(0,o.jsx)(n.code,{children:"zrok share public"})," command, which results in my ",(0,o.jsx)(n.code,{children:"zrok"})," instance exposing a URL like ",(0,o.jsx)(n.code,{children:"https://xxr2b7tzfx64.share.zrok.io"})," to access my resources."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"$ zrok share public --backend-mode web .\n"})}),"\n",(0,o.jsxs)(n.p,{children:['In this case, my share was given the "share token" of ',(0,o.jsx)(n.code,{children:"xxr2b7tzfx64"}),". That URL can be given to any user, allowing them to immediately access the shared resources directly from my local environment, all without exposing any access to my private, secure environment. The physical network location of my environment is not exposed to anonymous consumers of my resources."]}),"\n",(0,o.jsx)(n.p,{children:"If we return to the web console, we see our share in the explorer:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Web Console Share",src:s(3588).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsxs)(n.p,{children:["If we click on the ",(0,o.jsx)(n.em,{children:"frontend endpoint"})," a new browser tab opens and we see the content of our share:\n",(0,o.jsx)(n.img,{alt:"Share Frontend",src:s(9635).A+"",width:"1669",height:"1033"})]}),"\n",(0,o.jsxs)(n.p,{children:["When we start accessing our share, notice the ",(0,o.jsx)(n.em,{children:"sparkline"})," graphs showing the activity:"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Environment Spark Line",src:s(9921).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsxs)(n.p,{children:["And as soon as I terminate the ",(0,o.jsx)(n.code,{children:"zrok share"})," client, the resources are removed from the ",(0,o.jsx)(n.code,{children:"zrok"})," environment."]}),"\n",(0,o.jsx)(n.p,{children:"If we try to reload the frontend endpoint in our web browser, we'll see:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Not Found",src:s(8436).A+"",width:"1616",height:"1382"})}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-public",children:"More about public shares"})}),"\n",(0,o.jsx)(n.h3,{id:"private-shares",children:"Private Shares"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," also provides a powerful ",(0,o.jsx)(n.em,{children:"private"})," sharing model. If I execute the following command:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-buttonless",children:"$ zrok share private http://localhost:8080\n"})}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"zrok"})," service will respond with the following:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:"access your share with: zrok access private wvszln4dyz9q\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Rather than allowing access to your service through a public frontend, a ",(0,o.jsx)(n.em,{children:"private"})," share is only exposed to the underlying OpenZiti network, and can only be accessed using the ",(0,o.jsx)(n.code,{children:"zrok access"})," command."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"zrok access private wvszln4dyz9q"})," command can be run by any ",(0,o.jsx)(n.code,{children:"zrok"})," user, allowing them to create and bind a local HTTP listener, that allows for private access to your shared resources."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-private",children:"More about private shares"})}),"\n",(0,o.jsx)(n.h3,{id:"proxy-backend-mode",children:"Proxy Backend Mode"}),"\n",(0,o.jsxs)(n.p,{children:["Without specifying a ",(0,o.jsx)(n.em,{children:"backend mode"}),", the ",(0,o.jsx)(n.code,{children:"zrok share"})," command will assume that you're trying to share a ",(0,o.jsx)(n.code,{children:"proxy"})," resource. A ",(0,o.jsx)(n.code,{children:"proxy"})," resource is usually some private HTTP/HTTPS endpoint (like a development server, or a private application) running in your local environment. Usually such an endpoint would have no inbound connectivity except for however it is reachable from your local environment. It might be running on ",(0,o.jsx)(n.code,{children:"localhost"}),", or only listening on a private LAN segment behind a firewall."]}),"\n",(0,o.jsxs)(n.p,{children:["For these services a ",(0,o.jsx)(n.code,{children:"proxy"})," share will allow those endpoints to be reached, either ",(0,o.jsx)(n.em,{children:"publicly"})," or ",(0,o.jsx)(n.em,{children:"privately"})," through the ",(0,o.jsx)(n.code,{children:"zrok"})," service."]}),"\n",(0,o.jsx)(n.h3,{id:"web-backend-mode",children:"Web Backend Mode"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"zrok share"})," command accepts a ",(0,o.jsx)(n.code,{children:"--backend-mode"})," option. Besides ",(0,o.jsx)(n.code,{children:"proxy"}),", the current ",(0,o.jsx)(n.code,{children:"v0.3"})," release (as of this writing) also supports a ",(0,o.jsx)(n.code,{children:"web"})," mode. The ",(0,o.jsx)(n.code,{children:"web"})," mode allows you to specify a local folder on your filesystem, and instantly turns your ",(0,o.jsx)(n.code,{children:"zrok"})," client into a web server, exposing your web content either ",(0,o.jsx)(n.em,{children:"publicly"})," or ",(0,o.jsx)(n.em,{children:"privately"})," without having to a configure a web server."]}),"\n",(0,o.jsx)(n.h3,{id:"reserved-shares",children:"Reserved Shares"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," shares are ",(0,o.jsx)(n.em,{children:"ephemeral"}),' unless you specifically create a "reserved" share.']}),"\n",(0,o.jsxs)(n.p,{children:["A reserved share can be re-used multiple times; it will survive termination of the ",(0,o.jsx)(n.code,{children:"zrok share"})," command, allowing for longer-lasting semi-permanent access to shared resources."]}),"\n",(0,o.jsx)(n.p,{children:"The first step is to create the reserved share:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok reserve public --backend-mode web v0.3_getting_started\n[ 0.275] INFO main.(*reserveCommand).run: your reserved share token is 'mltwsinym1s2'\n[ 0.275] INFO main.(*reserveCommand).run: reserved frontend endpoint: https://mltwsinym1s2.share.zrok.io\n"})}),"\n",(0,o.jsxs)(n.p,{children:["I'm asking the ",(0,o.jsx)(n.code,{children:"zrok"})," service to reserve a share with a ",(0,o.jsx)(n.code,{children:"web"})," backend mode, pointing at my local ",(0,o.jsx)(n.code,{children:"docs"})," folder."]}),"\n",(0,o.jsxs)(n.p,{children:["You'll want to remember the share token (",(0,o.jsx)(n.code,{children:"mltwsinym1s2"})," in this case), and the frontend endpoint URL. If this were a ",(0,o.jsx)(n.em,{children:"private"})," reserved share, there would not be a frontend URL."]}),"\n",(0,o.jsx)(n.p,{children:"If we do nothing else, and then point a web browser at the frontend endpoint, we get:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Not Found",src:s(6837).A+"",width:"1659",height:"1397"})}),"\n",(0,o.jsxs)(n.p,{children:["This is the ",(0,o.jsx)(n.code,{children:"404"})," error message returned by the ",(0,o.jsx)(n.code,{children:"zrok"})," frontend. We're getting this because we haven't yet started up a ",(0,o.jsx)(n.code,{children:"zrok share"})," for the service. Let's do that:"]}),"\n",(0,o.jsx)(n.p,{children:"This command:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok share reserved mltwsinym1s2\n"})}),"\n",(0,o.jsx)(n.p,{children:"...results in a new share backend starting up and connecting to the existing reserved share:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok share reserved",src:s(2504).A+"",width:"951",height:"706"})}),"\n",(0,o.jsxs)(n.p,{children:["And now if we refresh the frontend endpoint URL in the web browser, we'll see an index of the ",(0,o.jsx)(n.code,{children:"docs"})," directory:"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok docs share",src:s(9635).A+"",width:"1669",height:"1033"})}),"\n",(0,o.jsxs)(n.p,{children:["With the reserved share, we're free to stop and restart the ",(0,o.jsx)(n.code,{children:"zrok share reserved"})," command as many times as we want, without losing the token for our share."]}),"\n",(0,o.jsxs)(n.p,{children:["When we're done with the reserved share, we can ",(0,o.jsx)(n.em,{children:"release"})," it using this command:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok release mltwsinym1s2\n[ 0.230] INFO main.(*releaseCommand).run: reserved share 'mltwsinym1s2' released\n"})}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-reserved",children:"More about reserved shares"})}),"\n",(0,o.jsx)(n.h2,{id:"concepts-review",children:"Concepts Review"}),"\n",(0,o.jsxs)(n.p,{children:["In summary, ",(0,o.jsx)(n.code,{children:"zrok"})," lets you easily and securely share resources with both general internet users (through ",(0,o.jsx)(n.em,{children:"public"})," sharing) and also with other ",(0,o.jsx)(n.code,{children:"zrok"})," users (through ",(0,o.jsx)(n.em,{children:"private"})," sharing)."]}),"\n",(0,o.jsxs)(n.p,{children:["Here's a quick review of the ",(0,o.jsx)(n.code,{children:"zrok"})," mental model and the vocabulary."]}),"\n",(0,o.jsx)(n.h3,{id:"instance-and-account",children:"Instance and Account"}),"\n",(0,o.jsxs)(n.p,{children:["You create an ",(0,o.jsx)(n.em,{children:"account"})," with a ",(0,o.jsx)(n.code,{children:"zrok"})," ",(0,o.jsx)(n.em,{children:"instance"}),". Your account is identified by a username and a password, which you use to log into the ",(0,o.jsx)(n.em,{children:"web console"}),". Your account also has a ",(0,o.jsx)(n.em,{children:"secret token"}),", which you will use to authenticate from the ",(0,o.jsx)(n.code,{children:"zrok"})," command-line to interact with the ",(0,o.jsx)(n.em,{children:"instance"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["You create a new ",(0,o.jsx)(n.em,{children:"account"})," with NetFoundry's ",(0,o.jsx)(n.code,{children:"zrok"})," ",(0,o.jsx)(n.em,{children:"instance"})," by subscribing in ",(0,o.jsx)(n.a,{href:"https://myzrok.io",children:"myzrok.io"})," or in a self-hosted ",(0,o.jsx)(n.code,{children:"zrok"})," ",(0,o.jsx)(n.em,{children:"instance"})," by running ",(0,o.jsxs)(n.a,{href:"/docs/guides/self-hosting/self-service-invite",children:["the ",(0,o.jsx)(n.code,{children:"zrok invite"})," command"]})," or the ",(0,o.jsx)(n.code,{children:"zrok admin create account"})," command."]}),"\n",(0,o.jsx)(n.h3,{id:"environment",children:"Environment"}),"\n",(0,o.jsxs)(n.p,{children:["Using your ",(0,o.jsx)(n.em,{children:"secret token"})," you use the ",(0,o.jsx)(n.code,{children:"zrok"})," command-line interface to create an ",(0,o.jsx)(n.em,{children:"environment"}),". An ",(0,o.jsx)(n.em,{children:"environment"})," corresponds to a single command-line user on a specific ",(0,o.jsx)(n.em,{children:"host system"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["You create a new ",(0,o.jsx)(n.em,{children:"environment"})," by using the ",(0,o.jsx)(n.code,{children:"zrok enable"})," command."]}),"\n",(0,o.jsx)(n.h3,{id:"shares",children:"Shares"}),"\n",(0,o.jsxs)(n.p,{children:["Once you've enabled an ",(0,o.jsx)(n.em,{children:"environment"}),", you then create one or more ",(0,o.jsx)(n.em,{children:"shares"}),". Shares have either a ",(0,o.jsx)(n.em,{children:"public"})," or ",(0,o.jsx)(n.em,{children:"private"})," ",(0,o.jsx)(n.em,{children:"sharing mode"}),". ",(0,o.jsx)(n.em,{children:"Shares"})," share a specific type of resource using a ",(0,o.jsx)(n.em,{children:"backend mode"}),". As of this writing ",(0,o.jsx)(n.code,{children:"zrok"})," supports a ",(0,o.jsx)(n.code,{children:"proxy"})," ",(0,o.jsx)(n.em,{children:"backend mode"})," to share local HTTP resources as a ",(0,o.jsx)(n.em,{children:"reverse proxy"}),". ",(0,o.jsx)(n.code,{children:"zrok"})," also supports a ",(0,o.jsx)(n.code,{children:"web"})," ",(0,o.jsx)(n.em,{children:"backend mode"})," to share local file and HTML resources by enabling a basic HTTP server."]}),"\n",(0,o.jsxs)(n.p,{children:["Every ",(0,o.jsx)(n.em,{children:"share"})," is identified by a ",(0,o.jsx)(n.em,{children:"share token"}),". ",(0,o.jsx)(n.em,{children:"Public shares"})," can be accessed through either a ",(0,o.jsx)(n.em,{children:"frontend"})," instance offered through the ",(0,o.jsx)(n.code,{children:"zrok"})," ",(0,o.jsx)(n.em,{children:"instance"}),", or through the ",(0,o.jsx)(n.code,{children:"zrok access"})," command. ",(0,o.jsx)(n.em,{children:"Private shares"})," can only be accessed through the ",(0,o.jsx)(n.code,{children:"zrok access"})," command."]}),"\n",(0,o.jsxs)(n.p,{children:["You use the ",(0,o.jsx)(n.code,{children:"zrok share"})," command to create and enable ",(0,o.jsx)(n.em,{children:"ephemeral shares"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"reserved-shares-1",children:"Reserved Shares"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," supports creating ",(0,o.jsx)(n.em,{children:"shares"})," that have a consistent ",(0,o.jsx)(n.em,{children:"share token"})," that survives restarts of the ",(0,o.jsx)(n.code,{children:"zrok share"})," command. These are considered ",(0,o.jsx)(n.em,{children:"non-ephemeral"}),", and is callled a ",(0,o.jsx)(n.em,{children:"reserved share"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["You use the ",(0,o.jsx)(n.code,{children:"zrok reserve"})," command to create ",(0,o.jsx)(n.em,{children:"reserved shares"}),". Reserved shares last until you use the ",(0,o.jsx)(n.code,{children:"zrok release"})," command to delete them."]}),"\n",(0,o.jsx)(n.h2,{id:"self-hosting-an-instance",children:"Self-Hosting an Instance"}),"\n",(0,o.jsxs)(n.p,{children:["Interested in self-hosting your own ",(0,o.jsx)(n.code,{children:"zrok"})," instance? See the ",(0,o.jsx)(n.a,{href:"/docs/category/self-hosting/",children:"self-hosting guides"}),"!"]}),"\n",(0,o.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Learn about ",(0,o.jsx)(n.a,{href:"https://openziti.io/",children:"OpenZiti"})]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}function m(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},2390:(e,n,s)=>{s.d(n,{Ay:()=>l,RM:()=>c});var r=s(4848),o=s(8453),i=s(3070),t=s(3484),a=s(3769);const c=[];function d(e){return(0,r.jsx)(i.F,{children:(0,r.jsxs)("div",{className:a.A.downloadContainer,children:[(0,r.jsx)(t.A,{osName:"Windows",osLogo:"/img/logo-windows.svg",infoText:"Download EXE",guideLink:"/docs/guides/install/windows"}),(0,r.jsx)(t.A,{osName:"macOS",osLogo:"/img/logo-apple.svg",infoText:"Homebrew or Download",guideLink:"/docs/guides/install/macos"}),(0,r.jsx)(t.A,{osName:"Linux",osLogo:"/img/logo-linux.svg",infoText:"RPM/DEB or Homebrew",guideLink:"/docs/guides/install/linux"})]})})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d()}},3070:(e,n,s)=>{s.d(n,{F:()=>a,d:()=>t});var r=s(6540),o=s(4848);const i=(0,r.createContext)([]),t=()=>(0,r.useContext)(i),a=e=>{let{children:n}=e;const[s,t]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),t(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,o.jsx)(i.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(3070),o=s(3769),i=s(8532),t=s(4848);const a=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},c=e=>{let{osName:n,osLogo:s,infoText:c,guideLink:d}=e;const{colorMode:l}=(0,i.G)(),h=(0,r.d)();console.log("Assets in DownloadCard:",h);const u=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),m=h.filter((e=>e.name.includes(u)));return console.log("Filtered assets for",n,"in DownloadCard:",m),(0,t.jsxs)("div",{className:o.A.downloadCard,children:[(0,t.jsx)("div",{className:o.A.imgContainer,children:(0,t.jsx)("img",{src:s,alt:`${n} logo`})}),(0,t.jsx)("h3",{children:n}),m.length>0&&(0,t.jsx)("ul",{children:m.map(((e,n)=>(0,t.jsx)("li",{className:o.A.downloadButtons,children:(0,t.jsx)("a",{href:e.url,className:o.A.downloadLinks,children:a(e.arch)})},n)))}),d&&(0,t.jsxs)("div",{className:o.A.cardFooter,children:[(0,t.jsx)("p",{children:c}),(0,t.jsx)("a",{href:d,children:"GUIDE"}),(0,t.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},2279:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-getting-started-button-fd443990c600c5af5587c8ebabe0498b.png"},312:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-getting-started-modal-9c36a880534a3d25a7815f32020d5c29.png"},8436:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-not-found-afdfdf335c7b7e28e2439c70529eaf6f.png"},6837:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-reserved-not-found-d5a40367dcad5c1e39a1b24c6b959e8e.png"},7739:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-share-public-c8604a242bd6b3426f0658a91e2b0576.png"},7954:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-visualizer-enabled-89357d3c376bbd310390602be618737a.png"},7554:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-visualizer-environment-6415b27c0e27123e9f625d38de01afeb.png"},3588:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-visualizer-public-share-bb329270aafdad77ddc58fddef0b8c0b.png"},9921:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-visualizer-sparklines-2b56c37bce925c55d99c8f1fdb6d741c.png"},5203:(e,n,s)=>{s.d(n,{A:()=>r});const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAKtmlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU+kSgOfe9EYLREBK6E2QTgApoQdQerURkgChhBAIKDZUxBVcCyoiWFZ0RUTBVSmyVixYWBR7X5BFQF0XCzZUXoBDcPed9955c86f+c5k/pn559z/nrkANCZXLE5HlQAyRDmScH8vZmxcPJMwABhQA0XAgSOXly1mh4YGg0wm9N/l/R1ARvVNy9FY//7/fxVlviCbB4CEyjiRn83LkPEx2frME0tyADCHZXaDvBzxKN+SsapEVqCM+0c5eZy/jHLiGGOVxnwiw71lbAhApHK5kmQAqrXMzszlJcviUEdzWYv4QpGMC2TsnpGRyZfxGRmbynzEMh6Nz0r8Lk7y32ImymNyuclyHj/LmBB9hNnidO7C/7Md/1sy0qUTOUxki5oiCQiXaYasZ3+kZQbJWZQ4K2SChfwx/zFOkQZETTAv2zt+grPTIzgTzOf6BMnjpM8KnuAkoZ/cR5jDiZxgQbZvxARLMsPleZMk3uwJ5koma5CmRcntKQKOPH5+SmTMBOcKo2fJa0uLCJr08ZbbJdJw+VkEIn+vybx+8j5kZH93diFHvjcnJTJA3gfuZP0CEXsyZnasvDa+wMd30idK7i/O8ZLnEqeHyv0F6f5ye3ZuhHxvjuzhnNwbKu9hKjcwdIIhGPyBCQHgA+EyHQNhYww5ggU5o4fxzhQvlAiTU3KYbNmNEzA5Ip7VNKatta0DwOj9HX883oaN3UuE0T5pOygE8M8cGRlZPmkzl9kO9gAQDk3amBgAyiGAq994UknuuA07+oMDsuy9oAoaoAMGYAqWYAuO4Aqe4AuBEAKREAfzgAcpkAESyIPFsByKoAQ2wBaogF2wB/bDITgCTXACzsJFuArX4TY8hC7ohRcwCO9hGEEQAkJD6IgGoosYIRaILcJC3BFfJBgJR+KQBCQZESFSZDGyEilBSpEKZDdSg/yCHEfOIpeRTuQ+0o0MIG+QzygGpaKqqDZqjE5HWSgbDUIj0bloMpqF5qOF6Dq0HK1CD6KN6Fn0Knob7UJfoEMYwFAwDIwexhLDwnhjQjDxmCSMBLMUU4wpw1Rh6jAtmDbMTUwX5iXmExaPpWOZWEusKzYAG4XlYbOwS7FrsRXY/dhG7HnsTWw3dhD7DUfDaeEscC44Di4Wl4zLwxXhynD7cA24C7jbuF7cezwez8Cb4J3wAfg4fCp+EX4tfge+Hn8G34nvwQ8RCAQNggXBjRBC4BJyCEWEbYSDhNOEG4RewkcihahLtCX6EeOJIuIKYhnxAPEU8QaxjzhMUiIZkVxIISQ+aSFpPWkvqYV0jdRLGiYrk03IbuRIcip5ObmcXEe+QH5EfkuhUPQpzpQwipBSQCmnHKZconRTPlFVqOZUb+ocqpS6jlpNPUO9T31Lo9GMaZ60eFoObR2thnaO9oT2UYGuYKXAUeArLFOoVGhUuKHwSpGkaKTIVpynmK9YpnhU8ZriSyWSkrGStxJXaalSpdJxpbtKQ8p0ZRvlEOUM5bXKB5QvK/erEFSMVXxV+CqFKntUzqn00DF0A7o3nUdfSd9Lv0DvVcWrmqhyVFNVS1QPqXaoDqqpqNmrRastUKtUO6nWxcAwjBkcRjpjPeMI4w7j8xTtKewpgilrptRNuTHlg/pUdU91gXqxer36bfXPGkwNX400jY0aTRqPNbGa5pphmnmaOzUvaL6cqjrVdSpvavHUI1MfaKFa5lrhWou09mi1aw1p62j7a4u1t2mf036pw9Dx1EnV2axzSmdAl67rrivU3ax7Wvc5U43JZqYzy5nnmYN6WnoBelK93XodesP6JvpR+iv06/UfG5ANWAZJBpsNWg0GDXUNZxouNqw1fGBEMmIZpRhtNWoz+mBsYhxjvNq4ybjfRN2EY5JvUmvyyJRm6mGaZVplessMb8YySzPbYXbdHDV3ME8xrzS/ZoFaOFoILXZYdE7DTXOeJppWNe2uJdWSbZlrWWvZbcWwCrZaYdVk9Wq64fT46Runt03/Zu1gnW691/qhjYpNoM0KmxabN7bmtjzbSttbdjQ7P7tlds12r+0t7AX2O+3vOdAdZjqsdmh1+Oro5ChxrHMccDJ0SnDa7nSXpcoKZa1lXXLGOXs5L3M+4fzJxdElx+WIy1+ulq5prgdc+2eYzBDM2Dujx03fjeu2263Lneme4P6Te5eHngfXo8rjqaeBJ99zn2cf24ydyj7IfuVl7SXxavD64O3ivcT7jA/Gx9+n2KfDV8U3yrfC94mfvl+yX63foL+D/yL/MwG4gKCAjQF3OdocHqeGMxjoFLgk8HwQNSgiqCLoabB5sCS4ZSY6M3DmppmPZhnNEs1qCoEQTsimkMehJqFZob+G4cNCwyrDnoXbhC8Ob4ugR8yPOBDxPtIrcn3kwyjTKGlUa7Ri9JzomugPMT4xpTFdsdNjl8RejdOME8Y1xxPio+P3xQ/N9p29ZXbvHIc5RXPuzDWZu2Du5Xma89LnnZyvOJ87/2gCLiEm4UDCF24It4o7lMhJ3J44yPPmbeW94HvyN/MHBG6CUkFfkltSaVJ/slvypuSBFI+UspSXQm9hhfB1akDqrtQPaSFp1Wkj6THp9RnEjISM4yIVUZrofKZO5oLMTrGFuEjcleWStSVrUBIk2ZeNZM/Nbs5RlQ1K7VJT6Sppd657bmXux7zovKMLlBeIFrQvNF+4ZmFfvl/+z4uwi3iLWhfrLV6+uHsJe8nupcjSxKWtywyWFS7rLfAv2L+cvDxt+W8rrFeUrni3MmZlS6F2YUFhzyr/VbVFCkWSorurXVfv+gH7g/CHjjV2a7at+VbML75SYl1SVvJlLW/tlR9tfiz/cWRd0rqO9Y7rd27AbxBtuLPRY+P+UuXS/NKeTTM3NW5mbi7e/G7L/C2Xy+zLdm0lb5Vu7SoPLm/eZrhtw7YvFSkVtyu9Kuu3a21fs/3DDv6OGzs9d9bt0t5VsuvzT8Kf7u32391YZVxVtge/J3fPs73Re9t+Zv1cs09zX8m+r9Wi6q794fvP1zjV1BzQOrC+Fq2V1g4cnHPw+iGfQ811lnW76xn1JYfhsPTw818SfrlzJOhI61HW0bpjRse2N9AbihuRxoWNg00pTV3Ncc2dxwOPt7a4tjT8avVr9Qm9E5Un1U6uP0U+VXhq5HT+6aEz4jMvzyaf7Wmd3/rwXOy5W+fDzndcCLpw6aLfxXNt7LbTl9wunbjscvn4FdaVpquOVxvbHdobfnP4raHDsaPxmtO15uvO11s6Z3SeuuFx4+xNn5sXb3FuXb0963bnnag79+7Oudt1j3+v/376/dcPch8MPyx4hHtU/FjpcdkTrSdVv5v9Xt/l2HWy26e7/WnE04c9vJ4Xf2T/8aW38BntWVmfbl9Nv23/iQG/gevPZz/vfSF+Mfyy6E/lP7e/Mn117C/Pv9oHYwd7X0tej7xZ+1bjbfU7+3etQ6FDT95nvB/+UPxR4+P+T6xPbZ9jPvcN530hfCn/ava15VvQt0cjGSMjYq6EOzYKyKYDQJOSAN5UA9DiAOjXAcizx+frMUHGvwnGCP4Tj8/gY+II0OABEHgWwGIVQDsRQG+NbAZpAwilAUQ6A2pnJ18Ts/DY3D4qOrLvhrwoQKoLum8mFMA/ZHym/67uf2oYjWoP/9T/Ao1WD2wmydvWAAAAVmVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAADkoYABwAAABIAAABEoAIABAAAAAEAAAAZoAMABAAAAAEAAAAXAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdERrfoIAAAHUaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjIzPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI1PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cp1dxrAAAAFESURBVEgN7VM9ioQwFH4j24u2WglWIhYWHkFrC0+hJ7AQCw8gHsXSZhC8gIWVN7CxElFx1gRGNmsy7M4wM7BsICT53vd+/HzvtK7rBZ68uCfHx+H/k/xKZaZceZ6DaZrAcRzeWZYdAo/juNtFUQTf9w8cBJxY3SXLMqAguq5jxyAIwHVdIsg0TWDbNsa6roOmaWCLR3DwAyWh7c148TyPaqPxi6JAo0DlM+U6lnM/8sFyjaIINE1jmQ+4oiiAfGiL+U9o5Huxl8j13iTn8xm35E8l6vsekA910doRYRv5j7Qwz/NQ1zXEcYwVcBwHLMsi1FiWBZIkwVjbtoSNeLDkCsMQS7aR8Zmm6WGah2EgONusHDgo/s05qaoK5nnGRamqCpIkfS8QyrLcMcMwQBCE/X293ExyJT16vndOHq3+q/9LvuQTGT1Wl0RY14cAAAAASUVORK5CYII="},2504:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_share_reserved-6bce67775ce2c41abb0ef13ee1fad972.png"},9635:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_share_frontend-d7c0d6495493c00b94ae237339f2dc2d.png"},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const o={},i=r.createContext(o);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4470],{7768:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"getting-started","title":"Getting Started","description":"If you\'ve upgraded to v1.0.0 from a previous version and you receive an error message like this:","source":"@site/../docs/getting-started.mdx","sourceDirName":".","slug":"/getting-started","permalink":"/docs/getting-started","draft":false,"unlisted":false,"editUrl":"https://github.com/openziti/zrok/blob/main/docs/../docs/getting-started.mdx","tags":[],"version":"current","sidebarPosition":10,"frontMatter":{"title":"Getting Started","sidebar_label":"Getting Started","sidebar_position":10},"sidebar":"tutorialSidebar","next":{"title":"Concepts","permalink":"/docs/concepts/"}}');var o=s(4848),i=s(8453),t=(s(3070),s(3484),s(3769),s(2390));const a={title:"Getting Started",sidebar_label:"Getting Started",sidebar_position:10},c=void 0,d={},l=[{value:"Your Secure Internet Sharing Perimeter",id:"your-secure-internet-sharing-perimeter",level:2},{value:"What's it for?",id:"whats-it-for",level:2},{value:"Your First Share",id:"your-first-share",level:3},{value:"Installing the zrok Command",id:"installing-the-zrok-command",level:2},...t.RM,{value:"Enabling Your zrok Environment",id:"enabling-your-zrok-environment",level:2},{value:"Sharing",id:"sharing",level:2},{value:"Ephemeral by Default",id:"ephemeral-by-default",level:3},{value:"Public Shares and Frontends",id:"public-shares-and-frontends",level:3},{value:"Private Shares",id:"private-shares",level:3},{value:"Proxy Backend Mode",id:"proxy-backend-mode",level:3},{value:"Web Backend Mode",id:"web-backend-mode",level:3},{value:"Reserved Shares",id:"reserved-shares",level:3},{value:"Concepts Review",id:"concepts-review",level:2},{value:"Instance and Account",id:"instance-and-account",level:3},{value:"Environment",id:"environment",level:3},{value:"Shares",id:"shares",level:3},{value:"Reserved Shares",id:"reserved-shares-1",level:3},{value:"Self-Hosting an Instance",id:"self-hosting-an-instance",level:2},{value:"Resources",id:"resources",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components},{Card:r,CardBody:a,CardFooter:c,CardHeader:d,Column:l,Columns:h}=n;return r||m("Card",!0),a||m("CardBody",!0),c||m("CardFooter",!0),d||m("CardHeader",!0),l||m("Column",!0),h||m("Columns",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.admonition,{type:"note",children:[(0,o.jsxs)(n.p,{children:["If you've upgraded to ",(0,o.jsx)(n.code,{children:"v1.0.0"})," from a previous version and you receive an error message like this:"]}),(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"[ERROR]: unable to create share (error getting zrok client: client version error accessing api endpoint 'https://api.zrok.io': [POST /clientVersionCheck] clientVersionCheck (status 404): {}: [POST /clientVersionCheck] clientVersionCheck (status 404): {})\n"})}),(0,o.jsxs)(n.p,{children:["Use the command ",(0,o.jsx)(n.code,{children:"zrok rebase apiEndpoint https://api-v1.zrok.io/"})," to update your environment to the latest zrok endpoint."]})]}),"\n",(0,o.jsx)(n.h2,{id:"your-secure-internet-sharing-perimeter",children:"Your Secure Internet Sharing Perimeter"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," (",(0,o.jsx)(n.em,{children:"/zi\u02d0\u0279\u0252k/ ZEE-rock"}),") is a secure, open-source, self-hostable sharing platform that simplifies shielding and sharing network services or files.\nThere's a hardened zrok-as-a-service offering available at ",(0,o.jsx)(n.a,{href:"https://myzrok.io",children:"myzrok.io"})," with a generous free tier."]}),"\n",(0,o.jsx)(n.h2,{id:"whats-it-for",children:"What's it for?"}),"\n",(0,o.jsxs)(n.p,{children:["Use ",(0,o.jsx)(n.code,{children:"zrok"})," to share a running service, like a web server or a network socket, or to share a directory of static files. ",(0,o.jsx)(n.code,{children:"zrok"})," goes beyond simple tunneling to provide sharing solutions for a variety of network and storage use cases."]}),"\n",(0,o.jsxs)(n.p,{children:["When using ",(0,o.jsx)(n.code,{children:"zrok"})," to ",(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-public",children:"share publicly"}),", you can reserve a public hostname, enable authentication options, or both. Public shares proxy HTTPS to your service or files."]}),"\n",(0,o.jsxs)(n.p,{children:["If ",(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-private",children:"sharing privately"}),", only users with the share token (and the appropriate permission grants) can access your share. In addition to what you can share publicly, private shares can include TCP and UDP services."]}),"\n",(0,o.jsxs)(n.p,{children:["Here's a quick overview of what's involved in getting started with ",(0,o.jsx)(n.code,{children:"zrok"}),":"]}),"\n",(0,o.jsx)(n.h3,{id:"your-first-share",children:"Your First Share"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Get an account token"}),"\n"]}),"\n",(0,o.jsxs)(h,{className:"text--center getting-started-cards",style:{marginLeft:1},children:[(0,o.jsx)(l,{style:{paddingBottom:20},children:(0,o.jsxs)(r,{shadow:"tl",children:[(0,o.jsx)(d,{children:(0,o.jsx)("h3",{children:"Hosted zrok"})}),(0,o.jsx)(a,{children:(0,o.jsx)(n.p,{children:"Use NetFoundry's public zrok instance."})}),(0,o.jsx)(c,{children:(0,o.jsx)("a",{href:"https://myzrok.io/",children:(0,o.jsx)("button",{className:"button button--secondary button--block",children:"Get an Account"})})})]})}),(0,o.jsx)(l,{style:{paddingBottom:20},children:(0,o.jsxs)(r,{shadow:"tl",children:[(0,o.jsx)(d,{children:(0,o.jsx)("h3",{children:"Self-Hosted zrok"})}),(0,o.jsx)(a,{children:(0,o.jsx)(n.p,{children:"Run a zrok instance on Linux, Docker, or Kubernetes."})}),(0,o.jsx)(c,{children:(0,o.jsx)("a",{href:"/docs/category/self-hosting/",children:(0,o.jsx)("button",{className:"button button--secondary button--block",children:"Guides"})})})]})})]}),"\n",(0,o.jsxs)(n.ol,{start:"2",children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"#installing-the-zrok-command",children:"Download the zrok binary"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Enable zrok for your ",(0,o.jsx)(n.a,{href:"#enabling-your-zrok-environment",children:"environment"})]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"zrok enable <your_account_token>\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Share ",(0,o.jsx)(n.code,{children:"http://localhost:8080"})]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"zrok share public 8080\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Visit the public URL displayed in your terminal"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok share public",src:s(7739).A+"",width:"697",height:"530"})}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h1,{id:"a-deeper-look-at-getting-started",children:"A Deeper Look at Getting Started"}),"\n",(0,o.jsxs)(n.p,{children:["Here's a deeper, more thorough look at getting started with ",(0,o.jsx)(n.code,{children:"zrok"}),":"]}),"\n",(0,o.jsx)(n.h2,{id:"installing-the-zrok-command",children:"Installing the zrok Command"}),"\n",(0,o.jsx)(t.Ay,{}),"\n",(0,o.jsx)(n.h2,{id:"enabling-your-zrok-environment",children:"Enabling Your zrok Environment"}),"\n",(0,o.jsxs)(n.p,{children:["After you have ",(0,o.jsx)(n.a,{href:"#your-first-share",children:"an account"}),", you can enable your ",(0,o.jsx)(n.code,{children:"zrok"})," environment."]}),"\n",(0,o.jsxs)(n.p,{children:["A zrok environment usually refers to an enabled device where shares and accesses can be created, .e.g., ",(0,o.jsx)(n.code,{children:"~/.zrok"})," on a Unix machine. It can be a specific user's environment or a system-wide agent's environment owned by the administrator."]}),"\n",(0,o.jsxs)(n.p,{children:["When your ",(0,o.jsx)(n.code,{children:"zrok"})," account was created, the service generated an ",(0,o.jsx)(n.em,{children:"account token"})," that identifies and authenticates in a single step. Protect your account token as if it were a password, or an important account number; it's a ",(0,o.jsx)(n.em,{children:"secret"}),", protect it."]}),"\n",(0,o.jsxs)(n.p,{children:["When we left off you had downloaded, extracted, and configured your ",(0,o.jsx)(n.code,{children:"zrok"})," software. In order to use that environment with your account, you'll need to ",(0,o.jsx)(n.code,{children:"enable"})," an ",(0,o.jsx)(n.em,{children:"environment"})," on your system. Enabling an environment generates a secure identity and the necessary underlying security policies with the OpenZiti network hosting the ",(0,o.jsx)(n.code,{children:"zrok"})," service so that you can begin sharing."]}),"\n",(0,o.jsx)(n.p,{children:"Log into the API console at:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"https://api-v1.zrok.io/",children:"https://api-v1.zrok.io/"})}),"\n",(0,o.jsx)(n.p,{children:"When you first log into your account on the API console, your interface will look like this:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok API console, empty",src:s(2279).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsx)(n.p,{children:'In the toolbar, there is a big green button that says "CLICK HERE TO GET STARTED!". If you click that button, you\'ll see the getting started wizard, which looks like this:'}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok getting started modal",src:s(312).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsx)(n.p,{children:"This wizard is broken into multiple steps. The first step we've already covered, which gets the zrok software installed onto your system."}),"\n",(0,o.jsxs)(n.p,{children:['Below "step 2" is a command: ',(0,o.jsx)(n.code,{children:"zrok enable 7g3K6gVKikWb"})," (your account will have a different account token, other than ",(0,o.jsx)(n.code,{children:"7g3K6gVKikWb"}),"). You'll want to copy this command into your shell and execute it:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok enable 7g3K6gVKikWb \n\u28fb contacting the zrok service...\n"})}),"\n",(0,o.jsx)(n.p,{children:"After a few seconds, the message will change and indicate that the enable operation succeeded:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok enable 7g3K6gVKikWb \n\u28fb the zrok environment was successfully enabled...\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Now, if we run a ",(0,o.jsx)(n.code,{children:"zrok status"})," command, you will see the details of your environment:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok status\n\nConfig:\n\n CONFIG VALUE SOURCE \n apiEndpoint https://api-v1.zrok.io env \n defaultFrontend public binary \n headless false binary \n\nEnvironment:\n\n PROPERTY VALUE \n Account Token <<SET>> \n Ziti Identity <<SET>> \n"})}),"\n",(0,o.jsx)(n.p,{children:"Excellent... our environment is now fully enabled."}),"\n",(0,o.jsxs)(n.p,{children:["If we return to the ",(0,o.jsx)(n.em,{children:"API console"}),", we'll now see the new environment reflected in the API console visualizer:"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"New Environment in Web UI",src:s(7954).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsxs)(n.p,{children:["In my case, the environment is named ",(0,o.jsx)(n.code,{children:"michael@testing"}),", which is the username of my shell and the hostname of the system the shell is running on."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["Should you want to use a non-default name for your environment, you can pass the ",(0,o.jsx)(n.code,{children:"-d"})," option to the ",(0,o.jsx)(n.code,{children:"zrok enable"})," command. See ",(0,o.jsx)(n.code,{children:"zrok enable --help"})," for details."]})}),"\n",(0,o.jsxs)(n.p,{children:["If you click on the environment node in the explorer in the ",(0,o.jsx)(n.em,{children:"web console"}),", the details panel shown at the bottom of the page will change:"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Empty Environment",src:s(7554).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsxs)(n.p,{children:["The visualizer supports clicking, dragging, mouse wheel zooming, and selecting the nodes in the graph for more information (and available actions) for the selected node. If you ever get lost in the visualizer, click the ",(0,o.jsx)(n.img,{alt:"Zoom to Fit",src:s(5203).A+"",width:"25",height:"23"})," ",(0,o.jsx)(n.em,{children:"zoom to fit"})," icon in the lower right corner of the explorer."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["With your ",(0,o.jsx)(n.code,{children:"zrok"})," account you can ",(0,o.jsx)(n.code,{children:"zrok enable"})," multiple environments. This will allow you to share (and access your shares) from multiple environments simultaneously."]})}),"\n",(0,o.jsx)(n.p,{children:"Your environment is fully ready to go. Now we can move on to the fun stuff..."}),"\n",(0,o.jsx)(n.h2,{id:"sharing",children:"Sharing"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," is designed to make sharing resources as effortless as possible, while providing a high degree of security and control."]}),"\n",(0,o.jsx)(n.h3,{id:"ephemeral-by-default",children:"Ephemeral by Default"}),"\n",(0,o.jsxs)(n.p,{children:["Shared resources are ",(0,o.jsx)(n.em,{children:"ephemeral"})," by default; as soon as you terminate the ",(0,o.jsx)(n.code,{children:"zrok share"})," command, the entire share is removed and is no longer available to any users. Identifiers for shared resources are randomly allocated when the share is created."]}),"\n",(0,o.jsx)(n.h3,{id:"public-shares-and-frontends",children:"Public Shares and Frontends"}),"\n",(0,o.jsxs)(n.p,{children:["Resources that are shared ",(0,o.jsx)(n.em,{children:"publicly"})," are exposed to any users on the internet who have access to the ",(0,o.jsx)(n.code,{children:"zrok"}),' instance\'s "frontend".']}),"\n",(0,o.jsx)(n.p,{children:"A frontend is an HTTPS listener exposed to the internet, that lets any user with your ephemeral share token access your publicly shared resources."}),"\n",(0,o.jsxs)(n.p,{children:["For example, I might create a public share using the ",(0,o.jsx)(n.code,{children:"zrok share public"})," command, which results in my ",(0,o.jsx)(n.code,{children:"zrok"})," instance exposing a URL like ",(0,o.jsx)(n.code,{children:"https://xxr2b7tzfx64.share.zrok.io"})," to access my resources."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{children:"$ zrok share public --backend-mode web .\n"})}),"\n",(0,o.jsxs)(n.p,{children:['In this case, my share was given the "share token" of ',(0,o.jsx)(n.code,{children:"xxr2b7tzfx64"}),". That URL can be given to any user, allowing them to immediately access the shared resources directly from my local environment, all without exposing any access to my private, secure environment. The physical network location of my environment is not exposed to anonymous consumers of my resources."]}),"\n",(0,o.jsx)(n.p,{children:"If we return to the web console, we see our share in the explorer:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Web Console Share",src:s(3588).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsxs)(n.p,{children:["If we click on the ",(0,o.jsx)(n.em,{children:"frontend endpoint"})," a new browser tab opens and we see the content of our share:\n",(0,o.jsx)(n.img,{alt:"Share Frontend",src:s(9635).A+"",width:"1669",height:"1033"})]}),"\n",(0,o.jsxs)(n.p,{children:["When we start accessing our share, notice the ",(0,o.jsx)(n.em,{children:"sparkline"})," graphs showing the activity:"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Environment Spark Line",src:s(9921).A+"",width:"1816",height:"1364"})}),"\n",(0,o.jsxs)(n.p,{children:["And as soon as I terminate the ",(0,o.jsx)(n.code,{children:"zrok share"})," client, the resources are removed from the ",(0,o.jsx)(n.code,{children:"zrok"})," environment."]}),"\n",(0,o.jsx)(n.p,{children:"If we try to reload the frontend endpoint in our web browser, we'll see:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Not Found",src:s(8436).A+"",width:"1616",height:"1382"})}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-public",children:"More about public shares"})}),"\n",(0,o.jsx)(n.h3,{id:"private-shares",children:"Private Shares"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," also provides a powerful ",(0,o.jsx)(n.em,{children:"private"})," sharing model. If I execute the following command:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-buttonless",children:"$ zrok share private http://localhost:8080\n"})}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"zrok"})," service will respond with the following:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-buttonless",metastring:'title="Output"',children:"access your share with: zrok access private wvszln4dyz9q\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Rather than allowing access to your service through a public frontend, a ",(0,o.jsx)(n.em,{children:"private"})," share is only exposed to the underlying OpenZiti network, and can only be accessed using the ",(0,o.jsx)(n.code,{children:"zrok access"})," command."]}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"zrok access private wvszln4dyz9q"})," command can be run by any ",(0,o.jsx)(n.code,{children:"zrok"})," user, allowing them to create and bind a local HTTP listener, that allows for private access to your shared resources."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-private",children:"More about private shares"})}),"\n",(0,o.jsx)(n.h3,{id:"proxy-backend-mode",children:"Proxy Backend Mode"}),"\n",(0,o.jsxs)(n.p,{children:["Without specifying a ",(0,o.jsx)(n.em,{children:"backend mode"}),", the ",(0,o.jsx)(n.code,{children:"zrok share"})," command will assume that you're trying to share a ",(0,o.jsx)(n.code,{children:"proxy"})," resource. A ",(0,o.jsx)(n.code,{children:"proxy"})," resource is usually some private HTTP/HTTPS endpoint (like a development server, or a private application) running in your local environment. Usually such an endpoint would have no inbound connectivity except for however it is reachable from your local environment. It might be running on ",(0,o.jsx)(n.code,{children:"localhost"}),", or only listening on a private LAN segment behind a firewall."]}),"\n",(0,o.jsxs)(n.p,{children:["For these services a ",(0,o.jsx)(n.code,{children:"proxy"})," share will allow those endpoints to be reached, either ",(0,o.jsx)(n.em,{children:"publicly"})," or ",(0,o.jsx)(n.em,{children:"privately"})," through the ",(0,o.jsx)(n.code,{children:"zrok"})," service."]}),"\n",(0,o.jsx)(n.h3,{id:"web-backend-mode",children:"Web Backend Mode"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"zrok share"})," command accepts a ",(0,o.jsx)(n.code,{children:"--backend-mode"})," option. Besides ",(0,o.jsx)(n.code,{children:"proxy"}),", the current ",(0,o.jsx)(n.code,{children:"v0.3"})," release (as of this writing) also supports a ",(0,o.jsx)(n.code,{children:"web"})," mode. The ",(0,o.jsx)(n.code,{children:"web"})," mode allows you to specify a local folder on your filesystem, and instantly turns your ",(0,o.jsx)(n.code,{children:"zrok"})," client into a web server, exposing your web content either ",(0,o.jsx)(n.em,{children:"publicly"})," or ",(0,o.jsx)(n.em,{children:"privately"})," without having to a configure a web server."]}),"\n",(0,o.jsx)(n.h3,{id:"reserved-shares",children:"Reserved Shares"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," shares are ",(0,o.jsx)(n.em,{children:"ephemeral"}),' unless you specifically create a "reserved" share.']}),"\n",(0,o.jsxs)(n.p,{children:["A reserved share can be re-used multiple times; it will survive termination of the ",(0,o.jsx)(n.code,{children:"zrok share"})," command, allowing for longer-lasting semi-permanent access to shared resources."]}),"\n",(0,o.jsx)(n.p,{children:"The first step is to create the reserved share:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok reserve public --backend-mode web v0.3_getting_started\n[ 0.275] INFO main.(*reserveCommand).run: your reserved share token is 'mltwsinym1s2'\n[ 0.275] INFO main.(*reserveCommand).run: reserved frontend endpoint: https://mltwsinym1s2.share.zrok.io\n"})}),"\n",(0,o.jsxs)(n.p,{children:["I'm asking the ",(0,o.jsx)(n.code,{children:"zrok"})," service to reserve a share with a ",(0,o.jsx)(n.code,{children:"web"})," backend mode, pointing at my local ",(0,o.jsx)(n.code,{children:"docs"})," folder."]}),"\n",(0,o.jsxs)(n.p,{children:["You'll want to remember the share token (",(0,o.jsx)(n.code,{children:"mltwsinym1s2"})," in this case), and the frontend endpoint URL. If this were a ",(0,o.jsx)(n.em,{children:"private"})," reserved share, there would not be a frontend URL."]}),"\n",(0,o.jsx)(n.p,{children:"If we do nothing else, and then point a web browser at the frontend endpoint, we get:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Not Found",src:s(6837).A+"",width:"1659",height:"1397"})}),"\n",(0,o.jsxs)(n.p,{children:["This is the ",(0,o.jsx)(n.code,{children:"404"})," error message returned by the ",(0,o.jsx)(n.code,{children:"zrok"})," frontend. We're getting this because we haven't yet started up a ",(0,o.jsx)(n.code,{children:"zrok share"})," for the service. Let's do that:"]}),"\n",(0,o.jsx)(n.p,{children:"This command:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok share reserved mltwsinym1s2\n"})}),"\n",(0,o.jsx)(n.p,{children:"...results in a new share backend starting up and connecting to the existing reserved share:"}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok share reserved",src:s(2504).A+"",width:"951",height:"706"})}),"\n",(0,o.jsxs)(n.p,{children:["And now if we refresh the frontend endpoint URL in the web browser, we'll see an index of the ",(0,o.jsx)(n.code,{children:"docs"})," directory:"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"zrok docs share",src:s(9635).A+"",width:"1669",height:"1033"})}),"\n",(0,o.jsxs)(n.p,{children:["With the reserved share, we're free to stop and restart the ",(0,o.jsx)(n.code,{children:"zrok share reserved"})," command as many times as we want, without losing the token for our share."]}),"\n",(0,o.jsxs)(n.p,{children:["When we're done with the reserved share, we can ",(0,o.jsx)(n.em,{children:"release"})," it using this command:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-txt",children:"$ zrok release mltwsinym1s2\n[ 0.230] INFO main.(*releaseCommand).run: reserved share 'mltwsinym1s2' released\n"})}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"/docs/concepts/sharing-reserved",children:"More about reserved shares"})}),"\n",(0,o.jsx)(n.h2,{id:"concepts-review",children:"Concepts Review"}),"\n",(0,o.jsxs)(n.p,{children:["In summary, ",(0,o.jsx)(n.code,{children:"zrok"})," lets you easily and securely share resources with both general internet users (through ",(0,o.jsx)(n.em,{children:"public"})," sharing) and also with other ",(0,o.jsx)(n.code,{children:"zrok"})," users (through ",(0,o.jsx)(n.em,{children:"private"})," sharing)."]}),"\n",(0,o.jsxs)(n.p,{children:["Here's a quick review of the ",(0,o.jsx)(n.code,{children:"zrok"})," mental model and the vocabulary."]}),"\n",(0,o.jsx)(n.h3,{id:"instance-and-account",children:"Instance and Account"}),"\n",(0,o.jsxs)(n.p,{children:["You create an ",(0,o.jsx)(n.em,{children:"account"})," with a ",(0,o.jsx)(n.code,{children:"zrok"})," ",(0,o.jsx)(n.em,{children:"instance"}),". Your account is identified by a username and a password, which you use to log into the ",(0,o.jsx)(n.em,{children:"web console"}),". Your account also has a ",(0,o.jsx)(n.em,{children:"secret token"}),", which you will use to authenticate from the ",(0,o.jsx)(n.code,{children:"zrok"})," command-line to interact with the ",(0,o.jsx)(n.em,{children:"instance"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["You create a new ",(0,o.jsx)(n.em,{children:"account"})," with NetFoundry's ",(0,o.jsx)(n.code,{children:"zrok"})," ",(0,o.jsx)(n.em,{children:"instance"})," by subscribing in ",(0,o.jsx)(n.a,{href:"https://myzrok.io",children:"myzrok.io"})," or in a self-hosted ",(0,o.jsx)(n.code,{children:"zrok"})," ",(0,o.jsx)(n.em,{children:"instance"})," by running ",(0,o.jsxs)(n.a,{href:"/docs/guides/self-hosting/self-service-invite",children:["the ",(0,o.jsx)(n.code,{children:"zrok invite"})," command"]})," or the ",(0,o.jsx)(n.code,{children:"zrok admin create account"})," command."]}),"\n",(0,o.jsx)(n.h3,{id:"environment",children:"Environment"}),"\n",(0,o.jsxs)(n.p,{children:["Using your ",(0,o.jsx)(n.em,{children:"secret token"})," you use the ",(0,o.jsx)(n.code,{children:"zrok"})," command-line interface to create an ",(0,o.jsx)(n.em,{children:"environment"}),". An ",(0,o.jsx)(n.em,{children:"environment"})," corresponds to a single command-line user on a specific ",(0,o.jsx)(n.em,{children:"host system"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["You create a new ",(0,o.jsx)(n.em,{children:"environment"})," by using the ",(0,o.jsx)(n.code,{children:"zrok enable"})," command."]}),"\n",(0,o.jsx)(n.h3,{id:"shares",children:"Shares"}),"\n",(0,o.jsxs)(n.p,{children:["Once you've enabled an ",(0,o.jsx)(n.em,{children:"environment"}),", you then create one or more ",(0,o.jsx)(n.em,{children:"shares"}),". Shares have either a ",(0,o.jsx)(n.em,{children:"public"})," or ",(0,o.jsx)(n.em,{children:"private"})," ",(0,o.jsx)(n.em,{children:"sharing mode"}),". ",(0,o.jsx)(n.em,{children:"Shares"})," share a specific type of resource using a ",(0,o.jsx)(n.em,{children:"backend mode"}),". As of this writing ",(0,o.jsx)(n.code,{children:"zrok"})," supports a ",(0,o.jsx)(n.code,{children:"proxy"})," ",(0,o.jsx)(n.em,{children:"backend mode"})," to share local HTTP resources as a ",(0,o.jsx)(n.em,{children:"reverse proxy"}),". ",(0,o.jsx)(n.code,{children:"zrok"})," also supports a ",(0,o.jsx)(n.code,{children:"web"})," ",(0,o.jsx)(n.em,{children:"backend mode"})," to share local file and HTML resources by enabling a basic HTTP server."]}),"\n",(0,o.jsxs)(n.p,{children:["Every ",(0,o.jsx)(n.em,{children:"share"})," is identified by a ",(0,o.jsx)(n.em,{children:"share token"}),". ",(0,o.jsx)(n.em,{children:"Public shares"})," can be accessed through either a ",(0,o.jsx)(n.em,{children:"frontend"})," instance offered through the ",(0,o.jsx)(n.code,{children:"zrok"})," ",(0,o.jsx)(n.em,{children:"instance"}),", or through the ",(0,o.jsx)(n.code,{children:"zrok access"})," command. ",(0,o.jsx)(n.em,{children:"Private shares"})," can only be accessed through the ",(0,o.jsx)(n.code,{children:"zrok access"})," command."]}),"\n",(0,o.jsxs)(n.p,{children:["You use the ",(0,o.jsx)(n.code,{children:"zrok share"})," command to create and enable ",(0,o.jsx)(n.em,{children:"ephemeral shares"}),"."]}),"\n",(0,o.jsx)(n.h3,{id:"reserved-shares-1",children:"Reserved Shares"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"zrok"})," supports creating ",(0,o.jsx)(n.em,{children:"shares"})," that have a consistent ",(0,o.jsx)(n.em,{children:"share token"})," that survives restarts of the ",(0,o.jsx)(n.code,{children:"zrok share"})," command. These are considered ",(0,o.jsx)(n.em,{children:"non-ephemeral"}),", and is callled a ",(0,o.jsx)(n.em,{children:"reserved share"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["You use the ",(0,o.jsx)(n.code,{children:"zrok reserve"})," command to create ",(0,o.jsx)(n.em,{children:"reserved shares"}),". Reserved shares last until you use the ",(0,o.jsx)(n.code,{children:"zrok release"})," command to delete them."]}),"\n",(0,o.jsx)(n.h2,{id:"self-hosting-an-instance",children:"Self-Hosting an Instance"}),"\n",(0,o.jsxs)(n.p,{children:["Interested in self-hosting your own ",(0,o.jsx)(n.code,{children:"zrok"})," instance? See the ",(0,o.jsx)(n.a,{href:"/docs/category/self-hosting/",children:"self-hosting guides"}),"!"]}),"\n",(0,o.jsx)(n.h2,{id:"resources",children:"Resources"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Learn about ",(0,o.jsx)(n.a,{href:"https://openziti.io/",children:"OpenZiti"})]}),"\n"]})]})}function u(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}function m(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}},2390:(e,n,s)=>{s.d(n,{Ay:()=>l,RM:()=>c});var r=s(4848),o=s(8453),i=s(3070),t=s(3484),a=s(3769);const c=[];function d(e){return(0,r.jsx)(i.F,{children:(0,r.jsxs)("div",{className:a.A.downloadContainer,children:[(0,r.jsx)(t.A,{osName:"Windows",osLogo:"/img/logo-windows.svg",infoText:"Download EXE",guideLink:"/docs/guides/install/windows"}),(0,r.jsx)(t.A,{osName:"macOS",osLogo:"/img/logo-apple.svg",infoText:"Homebrew or Download",guideLink:"/docs/guides/install/macos"}),(0,r.jsx)(t.A,{osName:"Linux",osLogo:"/img/logo-linux.svg",infoText:"RPM/DEB/AUR or Homebrew",guideLink:"/docs/guides/install/linux"})]})})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(d,{...e})}):d()}},3070:(e,n,s)=>{s.d(n,{F:()=>a,d:()=>t});var r=s(6540),o=s(4848);const i=(0,r.createContext)([]),t=()=>(0,r.useContext)(i),a=e=>{let{children:n}=e;const[s,t]=(0,r.useState)([]);return(0,r.useEffect)((()=>{(async()=>{try{const e=await fetch("https://api.github.com/repos/openziti/zrok/releases/latest");if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const n=(await e.json()).assets.map((e=>({name:e.name,url:e.browser_download_url,arch:e.name.replace(".tar.gz","").split("_")[3]})));console.log("Fetched assets:",n),t(n)}catch(e){console.error("Error fetching the release assets:",e)}})()}),[]),(0,o.jsx)(i.Provider,{value:s,children:n})}},3484:(e,n,s)=>{s.d(n,{A:()=>c});s(6540);var r=s(3070),o=s(3769),i=s(8532),t=s(4848);const a=e=>{switch(e){case"amd64":return"x86_64";case"arm64":return"ARM64";case"armv7":return"ARM";default:return e.toUpperCase()}},c=e=>{let{osName:n,osLogo:s,infoText:c,guideLink:d}=e;const{colorMode:l}=(0,i.G)(),h=(0,r.d)();console.log("Assets in DownloadCard:",h);const u=(e=>{switch(e){case"Windows":return"windows";case"macOS":return"darwin";case"Linux":return"linux";default:return""}})(n),m=h.filter((e=>e.name.includes(u)));return console.log("Filtered assets for",n,"in DownloadCard:",m),(0,t.jsxs)("div",{className:o.A.downloadCard,children:[(0,t.jsx)("div",{className:o.A.imgContainer,children:(0,t.jsx)("img",{src:s,alt:`${n} logo`})}),(0,t.jsx)("h3",{children:n}),m.length>0&&(0,t.jsx)("ul",{children:m.map(((e,n)=>(0,t.jsx)("li",{className:o.A.downloadButtons,children:(0,t.jsx)("a",{href:e.url,className:o.A.downloadLinks,children:a(e.arch)})},n)))}),d&&(0,t.jsxs)("div",{className:o.A.cardFooter,children:[(0,t.jsx)("p",{children:c}),(0,t.jsx)("a",{href:d,children:"GUIDE"}),(0,t.jsx)("p",{})]})]})}},3769:(e,n,s)=>{s.d(n,{A:()=>r});const r={downloadContainer:"downloadContainer_nNgj",downloadCard:"downloadCard_D_EY",cardFooter:"cardFooter_Rhom",downloadButtons:"downloadButtons_NPAP",downloadLinks:"downloadLinks_thSu",imgContainer:"imgContainer_r0QA"}},2279:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-getting-started-button-fd443990c600c5af5587c8ebabe0498b.png"},312:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-getting-started-modal-9c36a880534a3d25a7815f32020d5c29.png"},8436:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-not-found-afdfdf335c7b7e28e2439c70529eaf6f.png"},6837:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-reserved-not-found-d5a40367dcad5c1e39a1b24c6b959e8e.png"},7739:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-share-public-c8604a242bd6b3426f0658a91e2b0576.png"},7954:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-visualizer-enabled-89357d3c376bbd310390602be618737a.png"},7554:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-visualizer-environment-6415b27c0e27123e9f625d38de01afeb.png"},3588:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-visualizer-public-share-bb329270aafdad77ddc58fddef0b8c0b.png"},9921:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok-visualizer-sparklines-2b56c37bce925c55d99c8f1fdb6d741c.png"},5203:(e,n,s)=>{s.d(n,{A:()=>r});const r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAXCAYAAAD+4+QTAAAKtmlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU+kSgOfe9EYLREBK6E2QTgApoQdQerURkgChhBAIKDZUxBVcCyoiWFZ0RUTBVSmyVixYWBR7X5BFQF0XCzZUXoBDcPed9955c86f+c5k/pn559z/nrkANCZXLE5HlQAyRDmScH8vZmxcPJMwABhQA0XAgSOXly1mh4YGg0wm9N/l/R1ARvVNy9FY//7/fxVlviCbB4CEyjiRn83LkPEx2frME0tyADCHZXaDvBzxKN+SsapEVqCM+0c5eZy/jHLiGGOVxnwiw71lbAhApHK5kmQAqrXMzszlJcviUEdzWYv4QpGMC2TsnpGRyZfxGRmbynzEMh6Nz0r8Lk7y32ImymNyuclyHj/LmBB9hNnidO7C/7Md/1sy0qUTOUxki5oiCQiXaYasZ3+kZQbJWZQ4K2SChfwx/zFOkQZETTAv2zt+grPTIzgTzOf6BMnjpM8KnuAkoZ/cR5jDiZxgQbZvxARLMsPleZMk3uwJ5koma5CmRcntKQKOPH5+SmTMBOcKo2fJa0uLCJr08ZbbJdJw+VkEIn+vybx+8j5kZH93diFHvjcnJTJA3gfuZP0CEXsyZnasvDa+wMd30idK7i/O8ZLnEqeHyv0F6f5ye3ZuhHxvjuzhnNwbKu9hKjcwdIIhGPyBCQHgA+EyHQNhYww5ggU5o4fxzhQvlAiTU3KYbNmNEzA5Ip7VNKatta0DwOj9HX883oaN3UuE0T5pOygE8M8cGRlZPmkzl9kO9gAQDk3amBgAyiGAq994UknuuA07+oMDsuy9oAoaoAMGYAqWYAuO4Aqe4AuBEAKREAfzgAcpkAESyIPFsByKoAQ2wBaogF2wB/bDITgCTXACzsJFuArX4TY8hC7ohRcwCO9hGEEQAkJD6IgGoosYIRaILcJC3BFfJBgJR+KQBCQZESFSZDGyEilBSpEKZDdSg/yCHEfOIpeRTuQ+0o0MIG+QzygGpaKqqDZqjE5HWSgbDUIj0bloMpqF5qOF6Dq0HK1CD6KN6Fn0Knob7UJfoEMYwFAwDIwexhLDwnhjQjDxmCSMBLMUU4wpw1Rh6jAtmDbMTUwX5iXmExaPpWOZWEusKzYAG4XlYbOwS7FrsRXY/dhG7HnsTWw3dhD7DUfDaeEscC44Di4Wl4zLwxXhynD7cA24C7jbuF7cezwez8Cb4J3wAfg4fCp+EX4tfge+Hn8G34nvwQ8RCAQNggXBjRBC4BJyCEWEbYSDhNOEG4RewkcihahLtCX6EeOJIuIKYhnxAPEU8QaxjzhMUiIZkVxIISQ+aSFpPWkvqYV0jdRLGiYrk03IbuRIcip5ObmcXEe+QH5EfkuhUPQpzpQwipBSQCmnHKZconRTPlFVqOZUb+ocqpS6jlpNPUO9T31Lo9GMaZ60eFoObR2thnaO9oT2UYGuYKXAUeArLFOoVGhUuKHwSpGkaKTIVpynmK9YpnhU8ZriSyWSkrGStxJXaalSpdJxpbtKQ8p0ZRvlEOUM5bXKB5QvK/erEFSMVXxV+CqFKntUzqn00DF0A7o3nUdfSd9Lv0DvVcWrmqhyVFNVS1QPqXaoDqqpqNmrRastUKtUO6nWxcAwjBkcRjpjPeMI4w7j8xTtKewpgilrptRNuTHlg/pUdU91gXqxer36bfXPGkwNX400jY0aTRqPNbGa5pphmnmaOzUvaL6cqjrVdSpvavHUI1MfaKFa5lrhWou09mi1aw1p62j7a4u1t2mf036pw9Dx1EnV2axzSmdAl67rrivU3ax7Wvc5U43JZqYzy5nnmYN6WnoBelK93XodesP6JvpR+iv06/UfG5ANWAZJBpsNWg0GDXUNZxouNqw1fGBEMmIZpRhtNWoz+mBsYhxjvNq4ybjfRN2EY5JvUmvyyJRm6mGaZVplessMb8YySzPbYXbdHDV3ME8xrzS/ZoFaOFoILXZYdE7DTXOeJppWNe2uJdWSbZlrWWvZbcWwCrZaYdVk9Wq64fT46Runt03/Zu1gnW691/qhjYpNoM0KmxabN7bmtjzbSttbdjQ7P7tlds12r+0t7AX2O+3vOdAdZjqsdmh1+Oro5ChxrHMccDJ0SnDa7nSXpcoKZa1lXXLGOXs5L3M+4fzJxdElx+WIy1+ulq5prgdc+2eYzBDM2Dujx03fjeu2263Lneme4P6Te5eHngfXo8rjqaeBJ99zn2cf24ydyj7IfuVl7SXxavD64O3ivcT7jA/Gx9+n2KfDV8U3yrfC94mfvl+yX63foL+D/yL/MwG4gKCAjQF3OdocHqeGMxjoFLgk8HwQNSgiqCLoabB5sCS4ZSY6M3DmppmPZhnNEs1qCoEQTsimkMehJqFZob+G4cNCwyrDnoXbhC8Ob4ugR8yPOBDxPtIrcn3kwyjTKGlUa7Ri9JzomugPMT4xpTFdsdNjl8RejdOME8Y1xxPio+P3xQ/N9p29ZXbvHIc5RXPuzDWZu2Du5Xma89LnnZyvOJ87/2gCLiEm4UDCF24It4o7lMhJ3J44yPPmbeW94HvyN/MHBG6CUkFfkltSaVJ/slvypuSBFI+UspSXQm9hhfB1akDqrtQPaSFp1Wkj6THp9RnEjISM4yIVUZrofKZO5oLMTrGFuEjcleWStSVrUBIk2ZeNZM/Nbs5RlQ1K7VJT6Sppd657bmXux7zovKMLlBeIFrQvNF+4ZmFfvl/+z4uwi3iLWhfrLV6+uHsJe8nupcjSxKWtywyWFS7rLfAv2L+cvDxt+W8rrFeUrni3MmZlS6F2YUFhzyr/VbVFCkWSorurXVfv+gH7g/CHjjV2a7at+VbML75SYl1SVvJlLW/tlR9tfiz/cWRd0rqO9Y7rd27AbxBtuLPRY+P+UuXS/NKeTTM3NW5mbi7e/G7L/C2Xy+zLdm0lb5Vu7SoPLm/eZrhtw7YvFSkVtyu9Kuu3a21fs/3DDv6OGzs9d9bt0t5VsuvzT8Kf7u32391YZVxVtge/J3fPs73Re9t+Zv1cs09zX8m+r9Wi6q794fvP1zjV1BzQOrC+Fq2V1g4cnHPw+iGfQ811lnW76xn1JYfhsPTw818SfrlzJOhI61HW0bpjRse2N9AbihuRxoWNg00pTV3Ncc2dxwOPt7a4tjT8avVr9Qm9E5Un1U6uP0U+VXhq5HT+6aEz4jMvzyaf7Wmd3/rwXOy5W+fDzndcCLpw6aLfxXNt7LbTl9wunbjscvn4FdaVpquOVxvbHdobfnP4raHDsaPxmtO15uvO11s6Z3SeuuFx4+xNn5sXb3FuXb0963bnnag79+7Oudt1j3+v/376/dcPch8MPyx4hHtU/FjpcdkTrSdVv5v9Xt/l2HWy26e7/WnE04c9vJ4Xf2T/8aW38BntWVmfbl9Nv23/iQG/gevPZz/vfSF+Mfyy6E/lP7e/Mn117C/Pv9oHYwd7X0tej7xZ+1bjbfU7+3etQ6FDT95nvB/+UPxR4+P+T6xPbZ9jPvcN530hfCn/ava15VvQt0cjGSMjYq6EOzYKyKYDQJOSAN5UA9DiAOjXAcizx+frMUHGvwnGCP4Tj8/gY+II0OABEHgWwGIVQDsRQG+NbAZpAwilAUQ6A2pnJ18Ts/DY3D4qOrLvhrwoQKoLum8mFMA/ZHym/67uf2oYjWoP/9T/Ao1WD2wmydvWAAAAVmVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAADkoYABwAAABIAAABEoAIABAAAAAEAAAAZoAMABAAAAAEAAAAXAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdERrfoIAAAHUaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjIzPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI1PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cp1dxrAAAAFESURBVEgN7VM9ioQwFH4j24u2WglWIhYWHkFrC0+hJ7AQCw8gHsXSZhC8gIWVN7CxElFx1gRGNmsy7M4wM7BsICT53vd+/HzvtK7rBZ68uCfHx+H/k/xKZaZceZ6DaZrAcRzeWZYdAo/juNtFUQTf9w8cBJxY3SXLMqAguq5jxyAIwHVdIsg0TWDbNsa6roOmaWCLR3DwAyWh7c148TyPaqPxi6JAo0DlM+U6lnM/8sFyjaIINE1jmQ+4oiiAfGiL+U9o5Huxl8j13iTn8xm35E8l6vsekA910doRYRv5j7Qwz/NQ1zXEcYwVcBwHLMsi1FiWBZIkwVjbtoSNeLDkCsMQS7aR8Zmm6WGah2EgONusHDgo/s05qaoK5nnGRamqCpIkfS8QyrLcMcMwQBCE/X293ExyJT16vndOHq3+q/9LvuQTGT1Wl0RY14cAAAAASUVORK5CYII="},2504:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_share_reserved-6bce67775ce2c41abb0ef13ee1fad972.png"},9635:(e,n,s)=>{s.d(n,{A:()=>r});const r=s.p+"assets/images/zrok_web_console_share_frontend-d7c0d6495493c00b94ae237339f2dc2d.png"},8453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>a});var r=s(6540);const o={},i=r.createContext(o);function t(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.27dd39d7.js b/assets/js/runtime~main.5239a08d.js similarity index 92% rename from assets/js/runtime~main.27dd39d7.js rename to assets/js/runtime~main.5239a08d.js index 28463f47..778e3a4e 100644 --- a/assets/js/runtime~main.27dd39d7.js +++ b/assets/js/runtime~main.5239a08d.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,d,c,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,r.amdO={},e=[],r.O=(a,d,c,f)=>{if(!d){var b=1/0;for(i=0;i<e.length;i++){d=e[i][0],c=e[i][1],f=e[i][2];for(var t=!0,o=0;o<d.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=c();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[d,c,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};a=a||[null,d({}),d([]),d(d)];for(var t=2&c&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(f,b),f},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({37:"ebc0e2a0",277:"4f1777fd",351:"3fab0acb",429:"50ef9c44",471:"7dd0c8d0",598:"9939c4f4",627:"d087459a",714:"b6569025",749:"21880a4d",826:"bc32cbb6",887:"c015c796",957:"c141421f",1057:"bbbe662c",1235:"a7456010",1346:"d3a54718",1421:"71c8a211",1595:"1ddd36f2",1769:"aad6478e",1831:"80941509",1864:"8a9ffb5d",1939:"7f5ec875",2138:"1a4e3797",2256:"11b43341",2634:"c4f5d8e4",2757:"cda0d2e5",2759:"1ba5bc99",2867:"6a6a5bbc",3165:"c88279fc",3373:"6e881e32",3423:"e1dfe4fe",3434:"bfe99541",3574:"4cb7be2f",3588:"288b1075",3747:"01cb08ea",3786:"c304be44",3921:"36b94792",3979:"2c440c24",4074:"5cd0a723",4247:"d768dc0f",4277:"27b0284c",4466:"7d0a541a",4470:"f888b719",4504:"b36bb0c9",4717:"392083ed",4909:"bc747cac",4927:"47881d5c",5117:"8dbf8f84",5689:"685bed1a",5695:"f8f494be",5742:"aba21aa0",5955:"8b4ddd1a",6063:"6ad1709d",6289:"ce04f2ae",6332:"2da89d45",6381:"1f91e8db",6475:"033e8fc8",6595:"0c1cdb3d",6878:"1dd31738",6946:"2cc2e835",6969:"14eb3368",6974:"bf372175",7098:"a7bd4aaa",7120:"2fede397",7216:"0c66edb9",7242:"6272ba0e",7499:"07d0b302",7599:"f7af5a99",7752:"339d500a",8051:"adf8dca1",8173:"0efac3c3",8240:"28f20845",8301:"81fb89b8",8401:"17896441",8436:"4277b6a0",8471:"2e812224",8528:"43e1c8e4",8582:"20595907",8675:"54fa7005",8746:"25ef1bb8",8875:"17f4c24e",9002:"ecf841c3",9025:"75b20590",9033:"901ef07d",9048:"a94703ab",9148:"35a60099",9253:"e2c4d679",9355:"600b2345",9471:"48341697",9476:"7452427d",9576:"61ea36d9",9631:"9af26a4e",9647:"5e95c892",9851:"e3e0bfdc",9905:"ef8afbfd"}[e]||e)+"."+{37:"2fd8a7d5",277:"8662c934",351:"42090723",382:"a8e40f63",429:"12fc4d19",471:"bff7c1df",598:"269715f4",627:"5b953d23",714:"fe4b9c1c",749:"3fc237ab",826:"9999155a",887:"72c3baed",957:"94fe8bc5",1057:"9639f5d7",1235:"7b4b0a20",1346:"cf229226",1421:"bc7ae09e",1595:"9d005e77",1769:"3d3869e2",1809:"e9544cab",1831:"76c5af9c",1864:"d8752724",1939:"930ba73d",2138:"41a00028",2256:"79f8cce9",2634:"e72ebafa",2757:"2230e891",2759:"29713972",2867:"492570ea",2913:"952f279a",3042:"616631a6",3165:"e4590d8c",3373:"d1a95584",3423:"6a8817d7",3434:"ebbc647d",3574:"a83087ce",3588:"d8c0cc34",3747:"e2a119f7",3786:"9bdbc4e1",3921:"4fa1b781",3979:"8ad59b19",4017:"7e97479c",4074:"a9c6bc01",4247:"3a416f3d",4277:"f6ce6473",4466:"60c67a50",4470:"5c9a422f",4504:"40225a52",4717:"44e8edfb",4831:"cc421862",4909:"47cf4617",4927:"207612b2",5117:"3f2e467f",5689:"805a7a11",5695:"6cdbf166",5742:"9ac6642b",5955:"f19e7085",6063:"68cc20aa",6289:"7967717a",6332:"50a9d468",6381:"2ff8779a",6475:"d38e5d82",6595:"2f3a3b78",6878:"f2361110",6946:"3f7ac032",6969:"77817439",6974:"b4ab81db",7098:"cea47d6c",7120:"cf7aaa58",7216:"ea664c8d",7242:"6f3f0f49",7499:"d3837b27",7599:"8573f403",7752:"f2d81bcd",8051:"2569ff33",8158:"18bfb97f",8173:"e00c8d4e",8240:"b3a7ec46",8301:"5431648f",8401:"575d0faf",8436:"0e01d84b",8471:"1a40eb4c",8528:"968e1006",8582:"d363fbd2",8675:"b2d85980",8746:"829f2dbc",8875:"e3487d90",8913:"83bce4ad",9002:"55fddec0",9025:"6e350206",9033:"b8ef613e",9048:"fa816e76",9148:"e9f86877",9253:"dd14fdd8",9355:"9c2e688e",9471:"ee186ebb",9476:"213d2c47",9576:"d29dac57",9631:"b4a6cf60",9647:"6fe04f8c",9851:"c7a4408d",9905:"adaf6ea9"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},f="website:",r.l=(e,a,d,b)=>{if(c[e])c[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+d){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+d),t.src=e),c[e]=[a];var l=(a,d)=>{t.onerror=t.onload=null,clearTimeout(s);var f=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"8401",20595907:"8582",48341697:"9471",80941509:"1831",ebc0e2a0:"37","4f1777fd":"277","3fab0acb":"351","50ef9c44":"429","7dd0c8d0":"471","9939c4f4":"598",d087459a:"627",b6569025:"714","21880a4d":"749",bc32cbb6:"826",c015c796:"887",c141421f:"957",bbbe662c:"1057",a7456010:"1235",d3a54718:"1346","71c8a211":"1421","1ddd36f2":"1595",aad6478e:"1769","8a9ffb5d":"1864","7f5ec875":"1939","1a4e3797":"2138","11b43341":"2256",c4f5d8e4:"2634",cda0d2e5:"2757","1ba5bc99":"2759","6a6a5bbc":"2867",c88279fc:"3165","6e881e32":"3373",e1dfe4fe:"3423",bfe99541:"3434","4cb7be2f":"3574","288b1075":"3588","01cb08ea":"3747",c304be44:"3786","36b94792":"3921","2c440c24":"3979","5cd0a723":"4074",d768dc0f:"4247","27b0284c":"4277","7d0a541a":"4466",f888b719:"4470",b36bb0c9:"4504","392083ed":"4717",bc747cac:"4909","47881d5c":"4927","8dbf8f84":"5117","685bed1a":"5689",f8f494be:"5695",aba21aa0:"5742","8b4ddd1a":"5955","6ad1709d":"6063",ce04f2ae:"6289","2da89d45":"6332","1f91e8db":"6381","033e8fc8":"6475","0c1cdb3d":"6595","1dd31738":"6878","2cc2e835":"6946","14eb3368":"6969",bf372175:"6974",a7bd4aaa:"7098","2fede397":"7120","0c66edb9":"7216","6272ba0e":"7242","07d0b302":"7499",f7af5a99:"7599","339d500a":"7752",adf8dca1:"8051","0efac3c3":"8173","28f20845":"8240","81fb89b8":"8301","4277b6a0":"8436","2e812224":"8471","43e1c8e4":"8528","54fa7005":"8675","25ef1bb8":"8746","17f4c24e":"8875",ecf841c3:"9002","75b20590":"9025","901ef07d":"9033",a94703ab:"9048","35a60099":"9148",e2c4d679:"9253","600b2345":"9355","7452427d":"9476","61ea36d9":"9576","9af26a4e":"9631","5e95c892":"9647",e3e0bfdc:"9851",ef8afbfd:"9905"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,d)=>{var c=r.o(e,a)?e[a]:void 0;if(0!==c)if(c)d.push(c[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((d,f)=>c=e[a]=[d,f]));d.push(c[2]=f);var b=r.p+r.u(a),t=new Error;r.l(b,(d=>{if(r.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var f=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,c[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var c,f,b=d[0],t=d[1],o=d[2],n=0;if(b.some((a=>0!==e[a]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(a&&a(d);n<b.length;n++)f=b[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},d=self.webpackChunkwebsite=self.webpackChunkwebsite||[];d.forEach(a.bind(null,0)),d.push=a.bind(null,d.push.bind(d))})()})(); \ No newline at end of file +(()=>{"use strict";var e,a,d,c,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(d.exports,d,d.exports,r),d.loaded=!0,d.exports}r.m=b,r.c=t,r.amdO={},e=[],r.O=(a,d,c,f)=>{if(!d){var b=1/0;for(i=0;i<e.length;i++){d=e[i][0],c=e[i][1],f=e[i][2];for(var t=!0,o=0;o<d.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every((e=>r.O[e](d[o])))?d.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=c();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[d,c,f]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,c){if(1&c&&(e=this(e)),8&c)return e;if("object"==typeof e&&e){if(4&c&&e.__esModule)return e;if(16&c&&"function"==typeof e.then)return e}var f=Object.create(null);r.r(f);var b={};a=a||[null,d({}),d([]),d(d)];for(var t=2&c&&e;"object"==typeof t&&!~a.indexOf(t);t=d(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(f,b),f},r.d=(e,a)=>{for(var d in a)r.o(a,d)&&!r.o(e,d)&&Object.defineProperty(e,d,{enumerable:!0,get:a[d]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,d)=>(r.f[d](e,a),a)),[])),r.u=e=>"assets/js/"+({37:"ebc0e2a0",277:"4f1777fd",351:"3fab0acb",429:"50ef9c44",471:"7dd0c8d0",598:"9939c4f4",627:"d087459a",714:"b6569025",749:"21880a4d",826:"bc32cbb6",887:"c015c796",957:"c141421f",1057:"bbbe662c",1235:"a7456010",1346:"d3a54718",1421:"71c8a211",1595:"1ddd36f2",1769:"aad6478e",1831:"80941509",1864:"8a9ffb5d",1939:"7f5ec875",2138:"1a4e3797",2256:"11b43341",2634:"c4f5d8e4",2757:"cda0d2e5",2759:"1ba5bc99",2867:"6a6a5bbc",3165:"c88279fc",3373:"6e881e32",3423:"e1dfe4fe",3434:"bfe99541",3574:"4cb7be2f",3588:"288b1075",3747:"01cb08ea",3786:"c304be44",3921:"36b94792",3979:"2c440c24",4074:"5cd0a723",4247:"d768dc0f",4277:"27b0284c",4466:"7d0a541a",4470:"f888b719",4504:"b36bb0c9",4717:"392083ed",4909:"bc747cac",4927:"47881d5c",5117:"8dbf8f84",5689:"685bed1a",5695:"f8f494be",5742:"aba21aa0",5955:"8b4ddd1a",6063:"6ad1709d",6289:"ce04f2ae",6332:"2da89d45",6381:"1f91e8db",6475:"033e8fc8",6595:"0c1cdb3d",6878:"1dd31738",6946:"2cc2e835",6969:"14eb3368",6974:"bf372175",7098:"a7bd4aaa",7120:"2fede397",7216:"0c66edb9",7242:"6272ba0e",7499:"07d0b302",7599:"f7af5a99",7752:"339d500a",8051:"adf8dca1",8173:"0efac3c3",8240:"28f20845",8301:"81fb89b8",8401:"17896441",8436:"4277b6a0",8471:"2e812224",8528:"43e1c8e4",8582:"20595907",8675:"54fa7005",8746:"25ef1bb8",8875:"17f4c24e",9002:"ecf841c3",9025:"75b20590",9033:"901ef07d",9048:"a94703ab",9148:"35a60099",9253:"e2c4d679",9355:"600b2345",9471:"48341697",9476:"7452427d",9576:"61ea36d9",9631:"9af26a4e",9647:"5e95c892",9851:"e3e0bfdc",9905:"ef8afbfd"}[e]||e)+"."+{37:"2fd8a7d5",277:"8662c934",351:"42090723",382:"a8e40f63",429:"12fc4d19",471:"bff7c1df",598:"269715f4",627:"5b953d23",714:"b77dca15",749:"3fc237ab",826:"9999155a",887:"72c3baed",957:"94fe8bc5",1057:"9639f5d7",1235:"7b4b0a20",1346:"cf229226",1421:"bc7ae09e",1595:"8f4f006e",1769:"3d3869e2",1809:"e9544cab",1831:"76c5af9c",1864:"76a8055d",1939:"930ba73d",2138:"41a00028",2256:"e4ddb3ce",2634:"e72ebafa",2757:"2230e891",2759:"f852d55b",2867:"492570ea",2913:"952f279a",3042:"616631a6",3165:"e4590d8c",3373:"d1a95584",3423:"6a8817d7",3434:"ebbc647d",3574:"a83087ce",3588:"d8c0cc34",3747:"e2a119f7",3786:"9bdbc4e1",3921:"4fa1b781",3979:"8ad59b19",4017:"7e97479c",4074:"a9c6bc01",4247:"3a416f3d",4277:"f6ce6473",4466:"60c67a50",4470:"cadb7eaf",4504:"40225a52",4717:"44e8edfb",4831:"cc421862",4909:"47cf4617",4927:"9fc06796",5117:"3f2e467f",5689:"805a7a11",5695:"6cdbf166",5742:"9ac6642b",5955:"f19e7085",6063:"68cc20aa",6289:"7967717a",6332:"50a9d468",6381:"2ff8779a",6475:"d38e5d82",6595:"2f3a3b78",6878:"f2361110",6946:"3f7ac032",6969:"77817439",6974:"b4ab81db",7098:"cea47d6c",7120:"cf7aaa58",7216:"ea664c8d",7242:"6f3f0f49",7499:"d3837b27",7599:"8573f403",7752:"f2d81bcd",8051:"2569ff33",8158:"18bfb97f",8173:"ddd75f48",8240:"b3a7ec46",8301:"5431648f",8401:"575d0faf",8436:"0e01d84b",8471:"1a40eb4c",8528:"968e1006",8582:"d363fbd2",8675:"b2d85980",8746:"829f2dbc",8875:"e020a04d",8913:"83bce4ad",9002:"55fddec0",9025:"6e350206",9033:"b8ef613e",9048:"fa816e76",9148:"e9f86877",9253:"dd14fdd8",9355:"9c2e688e",9471:"ee186ebb",9476:"213d2c47",9576:"d29dac57",9631:"b4a6cf60",9647:"6fe04f8c",9851:"c7a4408d",9905:"adaf6ea9"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),c={},f="website:",r.l=(e,a,d,b)=>{if(c[e])c[e].push(a);else{var t,o;if(void 0!==d)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==f+d){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",f+d),t.src=e),c[e]=[a];var l=(a,d)=>{t.onerror=t.onload=null,clearTimeout(s);var f=c[e];if(delete c[e],t.parentNode&&t.parentNode.removeChild(t),f&&f.forEach((e=>e(d))),a)return a(d)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/",r.gca=function(e){return e={17896441:"8401",20595907:"8582",48341697:"9471",80941509:"1831",ebc0e2a0:"37","4f1777fd":"277","3fab0acb":"351","50ef9c44":"429","7dd0c8d0":"471","9939c4f4":"598",d087459a:"627",b6569025:"714","21880a4d":"749",bc32cbb6:"826",c015c796:"887",c141421f:"957",bbbe662c:"1057",a7456010:"1235",d3a54718:"1346","71c8a211":"1421","1ddd36f2":"1595",aad6478e:"1769","8a9ffb5d":"1864","7f5ec875":"1939","1a4e3797":"2138","11b43341":"2256",c4f5d8e4:"2634",cda0d2e5:"2757","1ba5bc99":"2759","6a6a5bbc":"2867",c88279fc:"3165","6e881e32":"3373",e1dfe4fe:"3423",bfe99541:"3434","4cb7be2f":"3574","288b1075":"3588","01cb08ea":"3747",c304be44:"3786","36b94792":"3921","2c440c24":"3979","5cd0a723":"4074",d768dc0f:"4247","27b0284c":"4277","7d0a541a":"4466",f888b719:"4470",b36bb0c9:"4504","392083ed":"4717",bc747cac:"4909","47881d5c":"4927","8dbf8f84":"5117","685bed1a":"5689",f8f494be:"5695",aba21aa0:"5742","8b4ddd1a":"5955","6ad1709d":"6063",ce04f2ae:"6289","2da89d45":"6332","1f91e8db":"6381","033e8fc8":"6475","0c1cdb3d":"6595","1dd31738":"6878","2cc2e835":"6946","14eb3368":"6969",bf372175:"6974",a7bd4aaa:"7098","2fede397":"7120","0c66edb9":"7216","6272ba0e":"7242","07d0b302":"7499",f7af5a99:"7599","339d500a":"7752",adf8dca1:"8051","0efac3c3":"8173","28f20845":"8240","81fb89b8":"8301","4277b6a0":"8436","2e812224":"8471","43e1c8e4":"8528","54fa7005":"8675","25ef1bb8":"8746","17f4c24e":"8875",ecf841c3:"9002","75b20590":"9025","901ef07d":"9033",a94703ab:"9048","35a60099":"9148",e2c4d679:"9253","600b2345":"9355","7452427d":"9476","61ea36d9":"9576","9af26a4e":"9631","5e95c892":"9647",e3e0bfdc:"9851",ef8afbfd:"9905"}[e]||e,r.p+r.u(e)},(()=>{var e={5354:0,1869:0};r.f.j=(a,d)=>{var c=r.o(e,a)?e[a]:void 0;if(0!==c)if(c)d.push(c[2]);else if(/^(1869|5354)$/.test(a))e[a]=0;else{var f=new Promise(((d,f)=>c=e[a]=[d,f]));d.push(c[2]=f);var b=r.p+r.u(a),t=new Error;r.l(b,(d=>{if(r.o(e,a)&&(0!==(c=e[a])&&(e[a]=void 0),c)){var f=d&&("load"===d.type?"missing":d.type),b=d&&d.target&&d.target.src;t.message="Loading chunk "+a+" failed.\n("+f+": "+b+")",t.name="ChunkLoadError",t.type=f,t.request=b,c[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,d)=>{var c,f,b=d[0],t=d[1],o=d[2],n=0;if(b.some((a=>0!==e[a]))){for(c in t)r.o(t,c)&&(r.m[c]=t[c]);if(o)var i=o(r)}for(a&&a(d);n<b.length;n++)f=b[n],r.o(e,f)&&e[f]&&e[f][0](),e[f]=0;return r.O(i)},d=self.webpackChunkwebsite=self.webpackChunkwebsite||[];d.forEach(a.bind(null,0)),d.push=a.bind(null,d.push.bind(d))})()})(); \ No newline at end of file diff --git a/docs/0.4/category/guides/index.html b/docs/0.4/category/guides/index.html index 7db25ea2..9ee212ff 100644 --- a/docs/0.4/category/guides/index.html +++ b/docs/0.4/category/guides/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/category/metrics-and-limits/index.html b/docs/0.4/category/metrics-and-limits/index.html index 6c96908f..d4ef3e54 100644 --- a/docs/0.4/category/metrics-and-limits/index.html +++ b/docs/0.4/category/metrics-and-limits/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/category/myzrok/index.html b/docs/0.4/category/myzrok/index.html index 3038605a..460028bc 100644 --- a/docs/0.4/category/myzrok/index.html +++ b/docs/0.4/category/myzrok/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/category/oauth/index.html b/docs/0.4/category/oauth/index.html index 59df1da3..dbbadd26 100644 --- a/docs/0.4/category/oauth/index.html +++ b/docs/0.4/category/oauth/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/category/self-hosting/index.html b/docs/0.4/category/self-hosting/index.html index fc2b41fa..27952ff6 100644 --- a/docs/0.4/category/self-hosting/index.html +++ b/docs/0.4/category/self-hosting/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/files/index.html b/docs/0.4/concepts/files/index.html index 803e6f2b..c54fb048 100644 --- a/docs/0.4/concepts/files/index.html +++ b/docs/0.4/concepts/files/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/hosting/index.html b/docs/0.4/concepts/hosting/index.html index 1f8fa7cb..c84a27fe 100644 --- a/docs/0.4/concepts/hosting/index.html +++ b/docs/0.4/concepts/hosting/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/http/index.html b/docs/0.4/concepts/http/index.html index 0faa7892..5f827170 100644 --- a/docs/0.4/concepts/http/index.html +++ b/docs/0.4/concepts/http/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/index.html b/docs/0.4/concepts/index.html index 2db361f1..c6ebfad9 100644 --- a/docs/0.4/concepts/index.html +++ b/docs/0.4/concepts/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/opensource/index.html b/docs/0.4/concepts/opensource/index.html index 59bb5146..095b308c 100644 --- a/docs/0.4/concepts/opensource/index.html +++ b/docs/0.4/concepts/opensource/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/sharing-private/index.html b/docs/0.4/concepts/sharing-private/index.html index 31958ca7..8277197b 100644 --- a/docs/0.4/concepts/sharing-private/index.html +++ b/docs/0.4/concepts/sharing-private/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/sharing-public/index.html b/docs/0.4/concepts/sharing-public/index.html index 3d74a9e6..ad29bea4 100644 --- a/docs/0.4/concepts/sharing-public/index.html +++ b/docs/0.4/concepts/sharing-public/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/sharing-reserved/index.html b/docs/0.4/concepts/sharing-reserved/index.html index d9a72b8b..d98bd3b5 100644 --- a/docs/0.4/concepts/sharing-reserved/index.html +++ b/docs/0.4/concepts/sharing-reserved/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/concepts/tunnels/index.html b/docs/0.4/concepts/tunnels/index.html index ef42c78d..b38b3025 100644 --- a/docs/0.4/concepts/tunnels/index.html +++ b/docs/0.4/concepts/tunnels/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/getting-started/index.html b/docs/0.4/getting-started/index.html index 4d34b3c6..6d09925f 100644 --- a/docs/0.4/getting-started/index.html +++ b/docs/0.4/getting-started/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> @@ -64,7 +64,7 @@ There's a hardened zrok-as-a-service offering available at <a href="https:/ <p>If <a href="/docs/0.4/concepts/sharing-public/">sharing publicly</a>, you can reserve a subdomain, enable authentication options, or both. Public shares proxy HTTPS to your service or files.</p> <p>If <a href="/docs/0.4/concepts/sharing-private/">sharing privately</a>, only users with the share token can access your share. In addition to what you can share publicly, private shares can include TCP and UDP services.</p> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="installing-the-zrok-command">Installing the zrok Command<a href="#installing-the-zrok-command" class="hash-link" aria-label="Direct link to Installing the zrok Command" title="Direct link to Installing the zrok Command"></a></h2> -<div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-windows.svg" alt="Windows logo"></div><h3>Windows</h3><div class="cardFooter_Rhom"><p>Download EXE</p><a href="/docs/guides/install/windows">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3><div class="cardFooter_Rhom"><p>Homebrew or Download</p><a href="/docs/guides/install/macos">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3><div class="cardFooter_Rhom"><p>RPM/DEB or Homebrew</p><a href="/docs/guides/install/linux">GUIDE</a><p></p></div></div></div> +<div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-windows.svg" alt="Windows logo"></div><h3>Windows</h3><div class="cardFooter_Rhom"><p>Download EXE</p><a href="/docs/guides/install/windows">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3><div class="cardFooter_Rhom"><p>Homebrew or Download</p><a href="/docs/guides/install/macos">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3><div class="cardFooter_Rhom"><p>RPM/DEB/AUR or Homebrew</p><a href="/docs/guides/install/linux">GUIDE</a><p></p></div></div></div> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="enabling-your-zrok-environment">Enabling Your zrok Environment<a href="#enabling-your-zrok-environment" class="hash-link" aria-label="Direct link to Enabling Your zrok Environment" title="Direct link to Enabling Your zrok Environment"></a></h2> <p>After you have <a href="#your-first-share">an account</a>, you can enable your <code>zrok</code> environment.</p> <p>A zrok environment usually refers to an enabled device where shares and accesses can be created, .e.g., <code>~/.zrok</code> on a Unix machine. It can be a specific user's environment or a system-wide agent's environment owned by the administrator.</p> diff --git a/docs/0.4/guides/docker-share/docker_private_share_guide/index.html b/docs/0.4/guides/docker-share/docker_private_share_guide/index.html index 39732431..094c9f94 100644 --- a/docs/0.4/guides/docker-share/docker_private_share_guide/index.html +++ b/docs/0.4/guides/docker-share/docker_private_share_guide/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/docker-share/docker_public_share_guide/index.html b/docs/0.4/guides/docker-share/docker_public_share_guide/index.html index 73a68336..132f94e3 100644 --- a/docs/0.4/guides/docker-share/docker_public_share_guide/index.html +++ b/docs/0.4/guides/docker-share/docker_public_share_guide/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/docker-share/index.html b/docs/0.4/guides/docker-share/index.html index 40bbf29d..829d508b 100644 --- a/docs/0.4/guides/docker-share/index.html +++ b/docs/0.4/guides/docker-share/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/drives/index.html b/docs/0.4/guides/drives/index.html index 4f47b449..cb9b9700 100644 --- a/docs/0.4/guides/drives/index.html +++ b/docs/0.4/guides/drives/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/frontdoor/index.html b/docs/0.4/guides/frontdoor/index.html index 162354fd..09120620 100644 --- a/docs/0.4/guides/frontdoor/index.html +++ b/docs/0.4/guides/frontdoor/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/install/index.html b/docs/0.4/guides/install/index.html index 823239a1..4dff69da 100644 --- a/docs/0.4/guides/install/index.html +++ b/docs/0.4/guides/install/index.html @@ -10,13 +10,13 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MDFLZPK8" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> -<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/0.4/guides/install/">0.4</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/guides/install/">1.0</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/0.4/guides/install/">0.4</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://zrok.io/pricing/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pricing<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://myzrok.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">account<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" title="GitHub"></a><a href="https://openziti.discourse.group/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discourse-link" title="Discourse"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite" aria-pressed="true"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/0.4/getting-started/">Getting Started</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/0.4/concepts/">Concepts</a><button aria-label="Expand sidebar category 'Concepts'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/0.4/category/guides/">Guides</a><button aria-label="Collapse sidebar category 'Guides'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible menu__list-item-collapsible--active"><a class="menu__link menu__link--sublist menu__link--active" aria-current="page" tabindex="0" href="/docs/0.4/guides/install/">Install</a><button aria-label="Collapse sidebar category 'Install'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/install/linux/">Linux</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/install/macos/">macOS</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/install/windows/">Windows</a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/frontdoor/">frontdoor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/permission-modes/">Permission Modes</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/0.4/guides/docker-share/">Docker Share</a><button aria-label="Expand sidebar category 'Docker Share'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/linux-user-share/">Linux User Share</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/0.4/category/self-hosting/">Self Hosting</a><button aria-label="Expand sidebar category 'Self Hosting'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/drives/">Drives</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/vpn/">VPN</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/0.4/category/myzrok/">myzrok</a><button aria-label="Expand sidebar category 'myzrok'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for <!-- -->zrok<!-- --> <b>0.4</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/docs/guides/install/">latest version</a></b> (<!-- -->1.0<!-- -->).</div></div><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/0.4/category/guides/"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Install</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 0.4</span><div class="theme-doc-markdown markdown"><header><h1>Install</h1></header><div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-windows.svg" alt="Windows logo"></div><h3>Windows</h3><div class="cardFooter_Rhom"><p>Download EXE</p><a href="/docs/guides/install/windows">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3><div class="cardFooter_Rhom"><p>Homebrew or Download</p><a href="/docs/guides/install/macos">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3><div class="cardFooter_Rhom"><p>RPM/DEB or Homebrew</p><a href="/docs/guides/install/linux">GUIDE</a><p></p></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/guides/install/index.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/0.4/category/guides/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Guides</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/0.4/guides/install/linux/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Linux</div></a></nav></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 NetFoundry Inc. Built with Docusaurus.</div></div></div></footer></div> +<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/0.4/guides/install/">0.4</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/guides/install/">1.0</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/0.4/guides/install/">0.4</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://zrok.io/pricing/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pricing<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://myzrok.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">account<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" title="GitHub"></a><a href="https://openziti.discourse.group/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discourse-link" title="Discourse"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite" aria-pressed="true"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/0.4/getting-started/">Getting Started</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/0.4/concepts/">Concepts</a><button aria-label="Expand sidebar category 'Concepts'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/0.4/category/guides/">Guides</a><button aria-label="Collapse sidebar category 'Guides'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible menu__list-item-collapsible--active"><a class="menu__link menu__link--sublist menu__link--active" aria-current="page" tabindex="0" href="/docs/0.4/guides/install/">Install</a><button aria-label="Collapse sidebar category 'Install'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/install/linux/">Linux</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/install/macos/">macOS</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/install/windows/">Windows</a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/frontdoor/">frontdoor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/permission-modes/">Permission Modes</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/0.4/guides/docker-share/">Docker Share</a><button aria-label="Expand sidebar category 'Docker Share'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/linux-user-share/">Linux User Share</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/0.4/category/self-hosting/">Self Hosting</a><button aria-label="Expand sidebar category 'Self Hosting'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/drives/">Drives</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/vpn/">VPN</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/0.4/category/myzrok/">myzrok</a><button aria-label="Expand sidebar category 'myzrok'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for <!-- -->zrok<!-- --> <b>0.4</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/docs/guides/install/">latest version</a></b> (<!-- -->1.0<!-- -->).</div></div><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/0.4/category/guides/"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Install</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 0.4</span><div class="theme-doc-markdown markdown"><header><h1>Install</h1></header><div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-windows.svg" alt="Windows logo"></div><h3>Windows</h3><div class="cardFooter_Rhom"><p>Download EXE</p><a href="/docs/guides/install/windows">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3><div class="cardFooter_Rhom"><p>Homebrew or Download</p><a href="/docs/guides/install/macos">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3><div class="cardFooter_Rhom"><p>RPM/DEB/AUR or Homebrew</p><a href="/docs/guides/install/linux">GUIDE</a><p></p></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/openziti/zrok/blob/main/docs/versioned_docs/version-0.4/guides/install/index.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/0.4/category/guides/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Guides</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/0.4/guides/install/linux/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Linux</div></a></nav></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 NetFoundry Inc. Built with Docusaurus.</div></div></div></footer></div> </body> </html> \ No newline at end of file diff --git a/docs/0.4/guides/install/linux/index.html b/docs/0.4/guides/install/linux/index.html index 67d929d6..0e279884 100644 --- a/docs/0.4/guides/install/linux/index.html +++ b/docs/0.4/guides/install/linux/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> @@ -23,6 +23,7 @@ <div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Check out <a href="/docs/0.4/guides/frontdoor/?os=Linux">zrok frontdoor</a> for running <code>zrok</code> as an always-on service.</p></div></div> <details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Ansible Playbook</summary><div><div class="collapsibleContent_i85q"><div><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_Ktv7">Set up package repository and install zrok</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Set up zrok Package Repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">gather_facts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">hosts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> all</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">become</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">tasks</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Set up apt repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">when</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ansible_os_family == "Debian"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">block</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install playbook dependencies</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.package</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> gnupg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">state</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> present</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Fetch armored pubkey</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.uri</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">url</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">//get.openziti.io/tun/package</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">repos.gpg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">return_content</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'yes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">register</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> armored_pubkey</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Dearmor pubkey</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.shell</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">></span><span class="token scalar string" style="color:rgb(255, 121, 198)"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> gpg --dearmor --output /usr/share/keyrings/openziti.gpg <<< "{{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> armored_pubkey.content }}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">args</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">creates</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /usr/share/keyrings/openziti.gpg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">executable</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /bin/bash</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Set pubkey filemode</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.file</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">path</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /usr/share/keyrings/openziti.gpg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">mode</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> a+rX</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install OpenZiti repo deb source</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.copy</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">dest</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /etc/apt/sources.list.d/openziti</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">release.list</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">content</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">></span><span class="token scalar string" style="color:rgb(255, 121, 198)"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> deb [signed-by=/usr/share/keyrings/openziti.gpg]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> https://packages.openziti.org/zitipax-openziti-deb-stable debian</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> main</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Refresh Repo Sources</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.apt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">update_cache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'yes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">cache_valid_time</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token number">3600</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Set up yum repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">when</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ansible_os_family == "RedHat"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">block</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install OpenZiti repo rpm source</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.yum_repository</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> OpenZitiRelease</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> OpenZiti Release</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">baseurl</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> https</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">//packages.openziti.org/zitipax</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">openziti</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">rpm</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">stable/redhat/$basearch</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">enabled</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'yes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">gpgkey</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> https</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">//packages.openziti.org/zitipax</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">openziti</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">rpm</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">stable/redhat/$basearch/repodata/repomd.xml.key</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">repo_gpgcheck</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'yes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">gpgcheck</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'no'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install zrok package</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">gather_facts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">hosts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> all </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">become</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">tasks</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install zrok</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.package</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> zrok</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">state</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> present</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div></div></div></details> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="homebrew">Homebrew<a href="#homebrew" class="hash-link" aria-label="Direct link to Homebrew" title="Direct link to Homebrew"></a></h2> +<p>This formula is maintained by the Homebrew community.</p> <div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">brew install zrok</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="linux-binary">Linux Binary<a href="#linux-binary" class="hash-link" aria-label="Direct link to Linux Binary" title="Direct link to Linux Binary"></a></h2> <div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3></div></div> diff --git a/docs/0.4/guides/install/macos/index.html b/docs/0.4/guides/install/macos/index.html index d16235c0..034b4d26 100644 --- a/docs/0.4/guides/install/macos/index.html +++ b/docs/0.4/guides/install/macos/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> @@ -18,6 +18,7 @@ <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/0.4/guides/install/macos/">0.4</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/guides/install/macos/">1.0</a></li><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/0.4/guides/install/macos/">0.4</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://zrok.io/pricing/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pricing<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://myzrok.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">account<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" title="GitHub"></a><a href="https://openziti.discourse.group/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discourse-link" title="Discourse"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite" aria-pressed="true"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/0.4/getting-started/">Getting Started</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/0.4/concepts/">Concepts</a><button aria-label="Expand sidebar category 'Concepts'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/0.4/category/guides/">Guides</a><button aria-label="Collapse sidebar category 'Guides'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" tabindex="0" href="/docs/0.4/guides/install/">Install</a><button aria-label="Collapse sidebar category 'Install'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/install/linux/">Linux</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/0.4/guides/install/macos/">macOS</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/install/windows/">Windows</a></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/frontdoor/">frontdoor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/permission-modes/">Permission Modes</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/0.4/guides/docker-share/">Docker Share</a><button aria-label="Expand sidebar category 'Docker Share'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/linux-user-share/">Linux User Share</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/0.4/category/self-hosting/">Self Hosting</a><button aria-label="Expand sidebar category 'Self Hosting'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/drives/">Drives</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/0.4/guides/vpn/">VPN</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/0.4/category/myzrok/">myzrok</a><button aria-label="Expand sidebar category 'myzrok'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role="alert"><div>This is documentation for <!-- -->zrok<!-- --> <b>0.4</b>, which is no longer actively maintained.</div><div class="margin-top--md">For up-to-date documentation, see the <b><a href="/docs/guides/install/macos/">latest version</a></b> (<!-- -->1.0<!-- -->).</div></div><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/0.4/category/guides/"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/0.4/guides/install/"><span itemprop="name">Install</span></a><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">macOS</span><meta itemprop="position" content="3"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 0.4</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Install zrok in macOS</h1></header><h2 class="anchor anchorWithStickyNavbar_LWe7" id="homebrew">Homebrew<a href="#homebrew" class="hash-link" aria-label="Direct link to Homebrew" title="Direct link to Homebrew"></a></h2> +<p>This formula is maintained by the Homebrew community.</p> <div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">brew install zrok</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="darwin-binary">Darwin Binary<a href="#darwin-binary" class="hash-link" aria-label="Direct link to Darwin Binary" title="Direct link to Darwin Binary"></a></h2> <div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3></div></div> diff --git a/docs/0.4/guides/install/windows/index.html b/docs/0.4/guides/install/windows/index.html index 11ae6730..0f1a7f5d 100644 --- a/docs/0.4/guides/install/windows/index.html +++ b/docs/0.4/guides/install/windows/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/linux-user-share/index.html b/docs/0.4/guides/linux-user-share/index.html index 5bc741a8..26a51c76 100644 --- a/docs/0.4/guides/linux-user-share/index.html +++ b/docs/0.4/guides/linux-user-share/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/permission-modes/index.html b/docs/0.4/guides/permission-modes/index.html index 0fd367a7..b19d744f 100644 --- a/docs/0.4/guides/permission-modes/index.html +++ b/docs/0.4/guides/permission-modes/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/docker/index.html b/docs/0.4/guides/self-hosting/docker/index.html index 80f83cd2..03f38ae0 100644 --- a/docs/0.4/guides/self-hosting/docker/index.html +++ b/docs/0.4/guides/self-hosting/docker/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/instance-configuration/index.html b/docs/0.4/guides/self-hosting/instance-configuration/index.html index d3135736..5a56948f 100644 --- a/docs/0.4/guides/self-hosting/instance-configuration/index.html +++ b/docs/0.4/guides/self-hosting/instance-configuration/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/interstitial-page/index.html b/docs/0.4/guides/self-hosting/interstitial-page/index.html index b0180058..a258bb07 100644 --- a/docs/0.4/guides/self-hosting/interstitial-page/index.html +++ b/docs/0.4/guides/self-hosting/interstitial-page/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/kubernetes/index.html b/docs/0.4/guides/self-hosting/kubernetes/index.html index e92fe5f5..37f864f6 100644 --- a/docs/0.4/guides/self-hosting/kubernetes/index.html +++ b/docs/0.4/guides/self-hosting/kubernetes/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/linux/index.html b/docs/0.4/guides/self-hosting/linux/index.html index cc4a39f6..f8334839 100644 --- a/docs/0.4/guides/self-hosting/linux/index.html +++ b/docs/0.4/guides/self-hosting/linux/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/linux/nginx/index.html b/docs/0.4/guides/self-hosting/linux/nginx/index.html index 90141f60..0745e997 100644 --- a/docs/0.4/guides/self-hosting/linux/nginx/index.html +++ b/docs/0.4/guides/self-hosting/linux/nginx/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/metrics-and-limits/configuring-limits/index.html b/docs/0.4/guides/self-hosting/metrics-and-limits/configuring-limits/index.html index a01feebd..828b17a7 100644 --- a/docs/0.4/guides/self-hosting/metrics-and-limits/configuring-limits/index.html +++ b/docs/0.4/guides/self-hosting/metrics-and-limits/configuring-limits/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/metrics-and-limits/configuring-metrics/index.html b/docs/0.4/guides/self-hosting/metrics-and-limits/configuring-metrics/index.html index f900e11e..cb3d165e 100644 --- a/docs/0.4/guides/self-hosting/metrics-and-limits/configuring-metrics/index.html +++ b/docs/0.4/guides/self-hosting/metrics-and-limits/configuring-metrics/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/oauth/configuring-oauth/index.html b/docs/0.4/guides/self-hosting/oauth/configuring-oauth/index.html index cfe4824b..5efca50f 100644 --- a/docs/0.4/guides/self-hosting/oauth/configuring-oauth/index.html +++ b/docs/0.4/guides/self-hosting/oauth/configuring-oauth/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/organizations/index.html b/docs/0.4/guides/self-hosting/organizations/index.html index c03da6c1..5a4c118e 100644 --- a/docs/0.4/guides/self-hosting/organizations/index.html +++ b/docs/0.4/guides/self-hosting/organizations/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/personalized-frontend/index.html b/docs/0.4/guides/self-hosting/personalized-frontend/index.html index 1294fe54..0e5c11e3 100644 --- a/docs/0.4/guides/self-hosting/personalized-frontend/index.html +++ b/docs/0.4/guides/self-hosting/personalized-frontend/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/self-hosting/self-service-invite/index.html b/docs/0.4/guides/self-hosting/self-service-invite/index.html index 57630b7c..bf0be636 100644 --- a/docs/0.4/guides/self-hosting/self-service-invite/index.html +++ b/docs/0.4/guides/self-hosting/self-service-invite/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/guides/vpn/index.html b/docs/0.4/guides/vpn/index.html index 51196528..55a7a1e5 100644 --- a/docs/0.4/guides/vpn/index.html +++ b/docs/0.4/guides/vpn/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/0.4/myzrok/custom-domains/index.html b/docs/0.4/myzrok/custom-domains/index.html index 444b3a04..fc29e9ea 100644 --- a/docs/0.4/myzrok/custom-domains/index.html +++ b/docs/0.4/myzrok/custom-domains/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/category/guides/index.html b/docs/category/guides/index.html index ced79c4e..38aec952 100644 --- a/docs/category/guides/index.html +++ b/docs/category/guides/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/category/metrics-and-limits/index.html b/docs/category/metrics-and-limits/index.html index 79a52242..9f3afbd6 100644 --- a/docs/category/metrics-and-limits/index.html +++ b/docs/category/metrics-and-limits/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/category/myzrok/index.html b/docs/category/myzrok/index.html index 7e7b8aa5..ed2b6c93 100644 --- a/docs/category/myzrok/index.html +++ b/docs/category/myzrok/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/category/oauth/index.html b/docs/category/oauth/index.html index 45d0877a..98879fae 100644 --- a/docs/category/oauth/index.html +++ b/docs/category/oauth/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/category/self-hosting/index.html b/docs/category/self-hosting/index.html index ed6b4e99..09db010e 100644 --- a/docs/category/self-hosting/index.html +++ b/docs/category/self-hosting/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/files/index.html b/docs/concepts/files/index.html index f2a8dd15..d2488026 100644 --- a/docs/concepts/files/index.html +++ b/docs/concepts/files/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/hosting/index.html b/docs/concepts/hosting/index.html index f9dd4e80..734cf6d5 100644 --- a/docs/concepts/hosting/index.html +++ b/docs/concepts/hosting/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/http/index.html b/docs/concepts/http/index.html index 92b248e9..1cf55203 100644 --- a/docs/concepts/http/index.html +++ b/docs/concepts/http/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/index.html b/docs/concepts/index.html index b0ff6021..3e65294e 100644 --- a/docs/concepts/index.html +++ b/docs/concepts/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/opensource/index.html b/docs/concepts/opensource/index.html index ffa88af0..39bf4dc9 100644 --- a/docs/concepts/opensource/index.html +++ b/docs/concepts/opensource/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/sharing-private/index.html b/docs/concepts/sharing-private/index.html index 8c3832f5..32a2c360 100644 --- a/docs/concepts/sharing-private/index.html +++ b/docs/concepts/sharing-private/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/sharing-public/index.html b/docs/concepts/sharing-public/index.html index b168a6d7..24e9bcba 100644 --- a/docs/concepts/sharing-public/index.html +++ b/docs/concepts/sharing-public/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/sharing-reserved/index.html b/docs/concepts/sharing-reserved/index.html index 8c4add48..46d8f0ff 100644 --- a/docs/concepts/sharing-reserved/index.html +++ b/docs/concepts/sharing-reserved/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/concepts/tunnels/index.html b/docs/concepts/tunnels/index.html index 90d1f494..781ed4ff 100644 --- a/docs/concepts/tunnels/index.html +++ b/docs/concepts/tunnels/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/getting-started/index.html b/docs/getting-started/index.html index 8fac37c5..672273a2 100644 --- a/docs/getting-started/index.html +++ b/docs/getting-started/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> @@ -51,7 +51,7 @@ There's a hardened zrok-as-a-service offering available at <a href="https:/ <h1>A Deeper Look at Getting Started</h1> <p>Here's a deeper, more thorough look at getting started with <code>zrok</code>:</p> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="installing-the-zrok-command">Installing the zrok Command<a href="#installing-the-zrok-command" class="hash-link" aria-label="Direct link to Installing the zrok Command" title="Direct link to Installing the zrok Command"></a></h2> -<div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-windows.svg" alt="Windows logo"></div><h3>Windows</h3><div class="cardFooter_Rhom"><p>Download EXE</p><a href="/docs/guides/install/windows">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3><div class="cardFooter_Rhom"><p>Homebrew or Download</p><a href="/docs/guides/install/macos">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3><div class="cardFooter_Rhom"><p>RPM/DEB or Homebrew</p><a href="/docs/guides/install/linux">GUIDE</a><p></p></div></div></div> +<div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-windows.svg" alt="Windows logo"></div><h3>Windows</h3><div class="cardFooter_Rhom"><p>Download EXE</p><a href="/docs/guides/install/windows">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3><div class="cardFooter_Rhom"><p>Homebrew or Download</p><a href="/docs/guides/install/macos">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3><div class="cardFooter_Rhom"><p>RPM/DEB/AUR or Homebrew</p><a href="/docs/guides/install/linux">GUIDE</a><p></p></div></div></div> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="enabling-your-zrok-environment">Enabling Your zrok Environment<a href="#enabling-your-zrok-environment" class="hash-link" aria-label="Direct link to Enabling Your zrok Environment" title="Direct link to Enabling Your zrok Environment"></a></h2> <p>After you have <a href="#your-first-share">an account</a>, you can enable your <code>zrok</code> environment.</p> <p>A zrok environment usually refers to an enabled device where shares and accesses can be created, .e.g., <code>~/.zrok</code> on a Unix machine. It can be a specific user's environment or a system-wide agent's environment owned by the administrator.</p> diff --git a/docs/guides/agent/index.html b/docs/guides/agent/index.html index a76bd7b2..caae0c56 100644 --- a/docs/guides/agent/index.html +++ b/docs/guides/agent/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/agent/linux-service/index.html b/docs/guides/agent/linux-service/index.html index 2c0f0966..9ac14aa0 100644 --- a/docs/guides/agent/linux-service/index.html +++ b/docs/guides/agent/linux-service/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/agent/windows-service/index.html b/docs/guides/agent/windows-service/index.html index ce250cd8..03dee881 100644 --- a/docs/guides/agent/windows-service/index.html +++ b/docs/guides/agent/windows-service/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/docker-share/docker_private_share_guide/index.html b/docs/guides/docker-share/docker_private_share_guide/index.html index 6aa69756..fbc73329 100644 --- a/docs/guides/docker-share/docker_private_share_guide/index.html +++ b/docs/guides/docker-share/docker_private_share_guide/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/docker-share/docker_public_share_guide/index.html b/docs/guides/docker-share/docker_public_share_guide/index.html index b0dee87e..4a23512c 100644 --- a/docs/guides/docker-share/docker_public_share_guide/index.html +++ b/docs/guides/docker-share/docker_public_share_guide/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/docker-share/index.html b/docs/guides/docker-share/index.html index a53bd8b4..07ca9610 100644 --- a/docs/guides/docker-share/index.html +++ b/docs/guides/docker-share/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/drives/index.html b/docs/guides/drives/index.html index 07568f88..91297606 100644 --- a/docs/guides/drives/index.html +++ b/docs/guides/drives/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/frontdoor/index.html b/docs/guides/frontdoor/index.html index 4be2fd27..dbab7b6a 100644 --- a/docs/guides/frontdoor/index.html +++ b/docs/guides/frontdoor/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/install/index.html b/docs/guides/install/index.html index d7eb5e5f..85740dbd 100644 --- a/docs/guides/install/index.html +++ b/docs/guides/install/index.html @@ -10,13 +10,13 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MDFLZPK8" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> -<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/guides/install/">1.0</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/guides/install/">1.0</a></li><li><a class="dropdown__link" href="/docs/0.4/guides/install/">0.4</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://zrok.io/pricing/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pricing<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://myzrok.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">account<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" title="GitHub"></a><a href="https://openziti.discourse.group/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discourse-link" title="Discourse"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite" aria-pressed="true"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/getting-started/">Getting Started</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/concepts/">Concepts</a><button aria-label="Expand sidebar category 'Concepts'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/category/guides/">Guides</a><button aria-label="Collapse sidebar category 'Guides'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible menu__list-item-collapsible--active"><a class="menu__link menu__link--sublist menu__link--active" aria-current="page" tabindex="0" href="/docs/guides/install/">Install</a><button aria-label="Collapse sidebar category 'Install'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/linux/">Linux</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/macos/">macOS</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/windows/">Windows</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/agent/">The zrok Agent</a><button aria-label="Expand sidebar category 'The zrok Agent'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/frontdoor/">frontdoor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/permission-modes/">Permission Modes</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/docker-share/">Docker Share</a><button aria-label="Expand sidebar category 'Docker Share'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/category/self-hosting/">Self Hosting</a><button aria-label="Expand sidebar category 'Self Hosting'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/drives/">Drives</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/vpn/">VPN</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/category/myzrok/">myzrok</a><button aria-label="Expand sidebar category 'myzrok'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/category/guides/"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Install</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 1.0</span><div class="theme-doc-markdown markdown"><header><h1>Install</h1></header><div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-windows.svg" alt="Windows logo"></div><h3>Windows</h3><div class="cardFooter_Rhom"><p>Download EXE</p><a href="/docs/guides/install/windows">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3><div class="cardFooter_Rhom"><p>Homebrew or Download</p><a href="/docs/guides/install/macos">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3><div class="cardFooter_Rhom"><p>RPM/DEB or Homebrew</p><a href="/docs/guides/install/linux">GUIDE</a><p></p></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/index.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/category/guides/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Guides</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guides/install/linux/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Linux</div></a></nav></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 NetFoundry Inc. Built with Docusaurus.</div></div></div></footer></div> +<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/guides/install/">1.0</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/guides/install/">1.0</a></li><li><a class="dropdown__link" href="/docs/0.4/guides/install/">0.4</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://zrok.io/pricing/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pricing<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://myzrok.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">account<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" title="GitHub"></a><a href="https://openziti.discourse.group/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discourse-link" title="Discourse"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite" aria-pressed="true"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/getting-started/">Getting Started</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/concepts/">Concepts</a><button aria-label="Expand sidebar category 'Concepts'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/category/guides/">Guides</a><button aria-label="Collapse sidebar category 'Guides'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible menu__list-item-collapsible--active"><a class="menu__link menu__link--sublist menu__link--active" aria-current="page" tabindex="0" href="/docs/guides/install/">Install</a><button aria-label="Collapse sidebar category 'Install'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/linux/">Linux</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/macos/">macOS</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/windows/">Windows</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/agent/">The zrok Agent</a><button aria-label="Expand sidebar category 'The zrok Agent'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/frontdoor/">frontdoor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/permission-modes/">Permission Modes</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/docker-share/">Docker Share</a><button aria-label="Expand sidebar category 'Docker Share'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/category/self-hosting/">Self Hosting</a><button aria-label="Expand sidebar category 'Self Hosting'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/drives/">Drives</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/vpn/">VPN</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/category/myzrok/">myzrok</a><button aria-label="Expand sidebar category 'myzrok'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/category/guides/"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Install</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 1.0</span><div class="theme-doc-markdown markdown"><header><h1>Install</h1></header><div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-windows.svg" alt="Windows logo"></div><h3>Windows</h3><div class="cardFooter_Rhom"><p>Download EXE</p><a href="/docs/guides/install/windows">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3><div class="cardFooter_Rhom"><p>Homebrew or Download</p><a href="/docs/guides/install/macos">GUIDE</a><p></p></div></div><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3><div class="cardFooter_Rhom"><p>RPM/DEB/AUR or Homebrew</p><a href="/docs/guides/install/linux">GUIDE</a><p></p></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/index.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/category/guides/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Guides</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guides/install/linux/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Linux</div></a></nav></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 NetFoundry Inc. Built with Docusaurus.</div></div></div></footer></div> </body> </html> \ No newline at end of file diff --git a/docs/guides/install/linux/index.html b/docs/guides/install/linux/index.html index 4ecd5d4f..cde46fb5 100644 --- a/docs/guides/install/linux/index.html +++ b/docs/guides/install/linux/index.html @@ -3,27 +3,25 @@ <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v3.7.0"> -<title data-rh="true">Install zrok in Linux | zrok</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.zrok.io/docs/guides/install/linux/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Install zrok in Linux | zrok"><meta data-rh="true" name="description" content="Install zrok from the Repository"><meta data-rh="true" property="og:description" content="Install zrok from the Repository"><link data-rh="true" rel="icon" href="/img/space-ziggy.png"><link data-rh="true" rel="canonical" href="https://docs.zrok.io/docs/guides/install/linux/"><link data-rh="true" rel="alternate" href="https://docs.zrok.io/docs/guides/install/linux/" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.zrok.io/docs/guides/install/linux/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://CO73R59OLO-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.googletagmanager.com"> +<title data-rh="true">Install zrok in Linux | zrok</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.zrok.io/docs/guides/install/linux/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Install zrok in Linux | zrok"><meta data-rh="true" name="description" content="Package Repository"><meta data-rh="true" property="og:description" content="Package Repository"><link data-rh="true" rel="icon" href="/img/space-ziggy.png"><link data-rh="true" rel="canonical" href="https://docs.zrok.io/docs/guides/install/linux/"><link data-rh="true" rel="alternate" href="https://docs.zrok.io/docs/guides/install/linux/" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.zrok.io/docs/guides/install/linux/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://CO73R59OLO-dsn.algolia.net" crossorigin="anonymous"><link rel="preconnect" href="https://www.googletagmanager.com"> <script>window.dataLayer=window.dataLayer||[]</script> <script>!function(e,t,a,n){e[n]=e[n]||[],e[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"});var g=t.getElementsByTagName(a)[0],m=t.createElement(a);m.async=!0,m.src="https://www.googletagmanager.com/gtm.js?id=GTM-MDFLZPK8",g.parentNode.insertBefore(m,g)}(window,document,"script","dataLayer")</script> <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MDFLZPK8" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> -<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/guides/install/linux/">1.0</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/guides/install/linux/">1.0</a></li><li><a class="dropdown__link" href="/docs/0.4/guides/install/linux/">0.4</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://zrok.io/pricing/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pricing<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://myzrok.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">account<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" title="GitHub"></a><a href="https://openziti.discourse.group/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discourse-link" title="Discourse"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite" aria-pressed="true"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/getting-started/">Getting Started</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/concepts/">Concepts</a><button aria-label="Expand sidebar category 'Concepts'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/category/guides/">Guides</a><button aria-label="Collapse sidebar category 'Guides'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" tabindex="0" href="/docs/guides/install/">Install</a><button aria-label="Collapse sidebar category 'Install'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/guides/install/linux/">Linux</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/macos/">macOS</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/windows/">Windows</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/agent/">The zrok Agent</a><button aria-label="Expand sidebar category 'The zrok Agent'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/frontdoor/">frontdoor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/permission-modes/">Permission Modes</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/docker-share/">Docker Share</a><button aria-label="Expand sidebar category 'Docker Share'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/category/self-hosting/">Self Hosting</a><button aria-label="Expand sidebar category 'Self Hosting'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/drives/">Drives</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/vpn/">VPN</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/category/myzrok/">myzrok</a><button aria-label="Expand sidebar category 'myzrok'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/category/guides/"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/guides/install/"><span itemprop="name">Install</span></a><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Linux</span><meta itemprop="position" content="3"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 1.0</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Install zrok in Linux</h1></header><h2 class="anchor anchorWithStickyNavbar_LWe7" id="install-zrok-from-the-repository">Install <code>zrok</code> from the Repository<a href="#install-zrok-from-the-repository" class="hash-link" aria-label="Direct link to install-zrok-from-the-repository" title="Direct link to install-zrok-from-the-repository"></a></h2> -<p>This will configure the system to receive DEB or RPM package updates.</p> +<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/guides/install/linux/">1.0</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/guides/install/linux/">1.0</a></li><li><a class="dropdown__link" href="/docs/0.4/guides/install/linux/">0.4</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://zrok.io/pricing/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pricing<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://myzrok.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">account<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" title="GitHub"></a><a href="https://openziti.discourse.group/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discourse-link" title="Discourse"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite" aria-pressed="true"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/getting-started/">Getting Started</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/concepts/">Concepts</a><button aria-label="Expand sidebar category 'Concepts'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/category/guides/">Guides</a><button aria-label="Collapse sidebar category 'Guides'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" tabindex="0" href="/docs/guides/install/">Install</a><button aria-label="Collapse sidebar category 'Install'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/guides/install/linux/">Linux</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/macos/">macOS</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/windows/">Windows</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/agent/">The zrok Agent</a><button aria-label="Expand sidebar category 'The zrok Agent'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/frontdoor/">frontdoor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/permission-modes/">Permission Modes</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/docker-share/">Docker Share</a><button aria-label="Expand sidebar category 'Docker Share'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/category/self-hosting/">Self Hosting</a><button aria-label="Expand sidebar category 'Self Hosting'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/drives/">Drives</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/vpn/">VPN</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/category/myzrok/">myzrok</a><button aria-label="Expand sidebar category 'myzrok'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/category/guides/"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/guides/install/"><span itemprop="name">Install</span></a><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Linux</span><meta itemprop="position" content="3"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 1.0</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Install zrok in Linux</h1></header><h2 class="anchor anchorWithStickyNavbar_LWe7" id="package-repository">Package Repository<a href="#package-repository" class="hash-link" aria-label="Direct link to Package Repository" title="Direct link to Package Repository"></a></h2> +<p>The RedHat (RPM) and Debian (DEB) packages are maintained by NetFoundry.</p> <div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">curl -sSf https://get.openziti.io/install.bash | sudo bash -s zrok</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> <div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Check out <a href="/docs/guides/frontdoor/?os=Linux">zrok frontdoor</a> for running <code>zrok</code> as an always-on service.</p></div></div> <details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Ansible Playbook</summary><div><div class="collapsibleContent_i85q"><div><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_Ktv7">Set up package repository and install zrok</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Set up zrok Package Repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">gather_facts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">hosts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> all</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">become</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">tasks</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Set up apt repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">when</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ansible_os_family == "Debian"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">block</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install playbook dependencies</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.package</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> gnupg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">state</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> present</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Fetch armored pubkey</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.uri</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">url</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> https</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">//get.openziti.io/tun/package</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">repos.gpg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">return_content</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'yes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">register</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> armored_pubkey</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Dearmor pubkey</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.shell</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">></span><span class="token scalar string" style="color:rgb(255, 121, 198)"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> gpg --dearmor --output /usr/share/keyrings/openziti.gpg <<< "{{</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> armored_pubkey.content }}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">args</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">creates</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /usr/share/keyrings/openziti.gpg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">executable</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /bin/bash</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Set pubkey filemode</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.file</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">path</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /usr/share/keyrings/openziti.gpg</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">mode</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> a+rX</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install OpenZiti repo deb source</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.copy</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">dest</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> /etc/apt/sources.list.d/openziti</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">release.list</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">content</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">></span><span class="token scalar string" style="color:rgb(255, 121, 198)"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> deb [signed-by=/usr/share/keyrings/openziti.gpg]</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> https://packages.openziti.org/zitipax-openziti-deb-stable debian</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token scalar string" style="color:rgb(255, 121, 198)"> main</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Refresh Repo Sources</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.apt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">update_cache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'yes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">cache_valid_time</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token number">3600</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Set up yum repo</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">when</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> ansible_os_family == "RedHat"</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">block</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install OpenZiti repo rpm source</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.yum_repository</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> OpenZitiRelease</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> OpenZiti Release</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">baseurl</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> https</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">//packages.openziti.org/zitipax</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">openziti</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">rpm</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">stable/redhat/$basearch</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">enabled</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'yes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">gpgkey</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> https</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">//packages.openziti.org/zitipax</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">openziti</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">rpm</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">stable/redhat/$basearch/repodata/repomd.xml.key</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">repo_gpgcheck</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'yes'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">gpgcheck</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">'no'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install zrok package</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">gather_facts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">hosts</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> all </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">become</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token boolean important">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token key atrule">tasks</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> Install zrok</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">ansible.builtin.package</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> zrok</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">state</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> present</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div></div></div></details> -<h2 class="anchor anchorWithStickyNavbar_LWe7" id="homebrew">Homebrew<a href="#homebrew" class="hash-link" aria-label="Direct link to Homebrew" title="Direct link to Homebrew"></a></h2> -<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">brew install zrok</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="linux-binary">Linux Binary<a href="#linux-binary" class="hash-link" aria-label="Direct link to Linux Binary" title="Direct link to Linux Binary"></a></h2> <div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-linux.svg" alt="Linux logo"></div><h3>Linux</h3></div></div> <p>Download the binary distribution for your Linux distribution's architecture or run the install script below to pick the correct CPU architecture automatically. For Intel and AMD 64-bit machines use the <code>amd64</code> distribution. For Raspberry Pi use the <code>arm64</code> distribution.</p> @@ -43,9 +41,14 @@ <li> <p>With the <code>zrok</code> executable in your path, you can then execute the <code>zrok</code> command from your shell:</p> <div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">zrok version</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> -<div class="language-buttonless codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_Ktv7">Output</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-buttonless codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"> _ </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> _____ __ ___ | | __</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">|_ / '__/ _ \| |/ /</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> / /| | | (_) | < </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">/___|_| \___/|_|\_\</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">v0.4.0 [c889005]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> +<div class="language-buttonless codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockTitle_Ktv7">Output</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-buttonless codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"> _ </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> _____ __ ___ | | __</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">|_ / '__/ _ \| |/ /</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> / /| | | (_) | < </span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">/___|_| \___/|_|\_\</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">v1.0.0 [c889005]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> </li> </ol></div></div></details> -<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Script to install binary in <code>/usr/local/bin/zrok</code></summary><div><div class="collapsibleContent_i85q"><p>This script auto-selects the correct architecture and may be helpful for Raspberry Pi users.</p><div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">cd $(mktemp -d);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">ZROK_VERSION=$(</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> curl -sSf https://api.github.com/repos/openziti/zrok/releases/latest \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> | jq -r '.tag_name'</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">case $(uname -m) in</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> x86_64) GOXARCH=amd64</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> aarch64|arm64) GOXARCH=arm64</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> arm*) GOXARCH=armv7</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> *) echo "ERROR: unknown arch '$(uname -m)'" >&2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> exit 1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">esac;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">curl -sSfL \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> "https://github.com/openziti/zrok/releases/download/${ZROK_VERSION}/zrok_${ZROK_VERSION#v}_linux_${GOXARCH}.tar.gz" \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> | tar -xz -f -;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sudo install -o root -g root ./zrok /usr/local/bin/;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">zrok version;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div></div></details></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/linux.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/guides/install/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Install</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guides/install/macos/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">macOS</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#install-zrok-from-the-repository" class="table-of-contents__link toc-highlight">Install <code>zrok</code> from the Repository</a></li><li><a href="#homebrew" class="table-of-contents__link toc-highlight">Homebrew</a></li><li><a href="#linux-binary" class="table-of-contents__link toc-highlight">Linux Binary</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 NetFoundry Inc. Built with Docusaurus.</div></div></div></footer></div> +<details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true"><summary>Script to install binary in <code>/usr/local/bin/zrok</code></summary><div><div class="collapsibleContent_i85q"><p>This script auto-selects the correct architecture and may be helpful for Raspberry Pi users.</p><div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">cd $(mktemp -d);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">ZROK_VERSION=$(</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> curl -sSf https://api.github.com/repos/openziti/zrok/releases/latest \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> | jq -r '.tag_name'</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">);</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">case $(uname -m) in</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> x86_64) GOXARCH=amd64</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> aarch64|arm64) GOXARCH=arm64</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> arm*) GOXARCH=armv7</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> *) echo "ERROR: unknown arch '$(uname -m)'" >&2</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> exit 1</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ;;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">esac;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">curl -sSfL \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> "https://github.com/openziti/zrok/releases/download/${ZROK_VERSION}/zrok_${ZROK_VERSION#v}_linux_${GOXARCH}.tar.gz" \</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> | tar -xz -f -;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">sudo install -o root -g root ./zrok /usr/local/bin/;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">zrok version;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div></div></details> +<h2 class="anchor anchorWithStickyNavbar_LWe7" id="arch-user-repository">Arch User Repository<a href="#arch-user-repository" class="hash-link" aria-label="Direct link to Arch User Repository" title="Direct link to Arch User Repository"></a></h2> +<p><a href="https://aur.archlinux.org/packages/zrok-bin" target="_blank" rel="noopener noreferrer">An Arch User Repository (AUR) package</a> is maintained by the Arch community. As of April 2025, the AUR package includes the <code>zrok</code> CLI and <a href="/docs/guides/agent/linux-service/">the <code>zrok-agent.service</code> systemd <code>--user</code> service</a>.</p> +<h2 class="anchor anchorWithStickyNavbar_LWe7" id="homebrew-formula">Homebrew Formula<a href="#homebrew-formula" class="hash-link" aria-label="Direct link to Homebrew Formula" title="Direct link to Homebrew Formula"></a></h2> +<p>This formula is maintained by the Homebrew community.</p> +<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">brew install zrok</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/openziti/zrok/blob/main/docs/../docs/guides/install/linux.mdx" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/guides/install/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Install</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/guides/install/macos/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">macOS</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#package-repository" class="table-of-contents__link toc-highlight">Package Repository</a></li><li><a href="#linux-binary" class="table-of-contents__link toc-highlight">Linux Binary</a></li><li><a href="#arch-user-repository" class="table-of-contents__link toc-highlight">Arch User Repository</a></li><li><a href="#homebrew-formula" class="table-of-contents__link toc-highlight">Homebrew Formula</a></li></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2025 NetFoundry Inc. Built with Docusaurus.</div></div></div></footer></div> </body> </html> \ No newline at end of file diff --git a/docs/guides/install/macos/index.html b/docs/guides/install/macos/index.html index f11d2f33..a3f91e43 100644 --- a/docs/guides/install/macos/index.html +++ b/docs/guides/install/macos/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> @@ -18,6 +18,7 @@ <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"dark")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a href="https://zrok.io" target="_self" rel="noopener noreferrer" class="navbar__brand"><div class="navbar__logo"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/space-ziggy.png" alt="Ziggy Goes to Space" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate">zrok</b></a><div class="navbar__item dropdown dropdown--hoverable"><a aria-current="page" class="navbar__link active" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/guides/install/macos/">1.0</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/guides/install/macos/">1.0</a></li><li><a class="dropdown__link" href="/docs/0.4/guides/install/macos/">0.4</a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://zrok.io/pricing/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">pricing<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://myzrok.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">account<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/orgs/openziti/projects/16" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">roadmap<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/openziti/zrok" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" title="GitHub"></a><a href="https://openziti.discourse.group/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discourse-link" title="Discourse"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently dark mode)" aria-label="Switch between dark and light mode (currently dark mode)" aria-live="polite" aria-pressed="true"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/getting-started/">Getting Started</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/concepts/">Concepts</a><button aria-label="Expand sidebar category 'Concepts'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/category/guides/">Guides</a><button aria-label="Collapse sidebar category 'Guides'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" tabindex="0" href="/docs/guides/install/">Install</a><button aria-label="Collapse sidebar category 'Install'" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/linux/">Linux</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/guides/install/macos/">macOS</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/install/windows/">Windows</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/agent/">The zrok Agent</a><button aria-label="Expand sidebar category 'The zrok Agent'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/frontdoor/">frontdoor</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/permission-modes/">Permission Modes</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/guides/docker-share/">Docker Share</a><button aria-label="Expand sidebar category 'Docker Share'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/docs/category/self-hosting/">Self Hosting</a><button aria-label="Expand sidebar category 'Self Hosting'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/drives/">Drives</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/guides/vpn/">VPN</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/category/myzrok/">myzrok</a><button aria-label="Expand sidebar category 'myzrok'" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/category/guides/"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/docs/guides/install/"><span itemprop="name">Install</span></a><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">macOS</span><meta itemprop="position" content="3"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 1.0</span><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Install zrok in macOS</h1></header><h2 class="anchor anchorWithStickyNavbar_LWe7" id="homebrew">Homebrew<a href="#homebrew" class="hash-link" aria-label="Direct link to Homebrew" title="Direct link to Homebrew"></a></h2> +<p>This formula is maintained by the Homebrew community.</p> <div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">brew install zrok</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> <h2 class="anchor anchorWithStickyNavbar_LWe7" id="darwin-binary">Darwin Binary<a href="#darwin-binary" class="hash-link" aria-label="Direct link to Darwin Binary" title="Direct link to Darwin Binary"></a></h2> <div class="downloadContainer_nNgj"><div class="downloadCard_D_EY"><div class="imgContainer_r0QA"><img src="/img/logo-apple.svg" alt="macOS logo"></div><h3>macOS</h3></div></div> diff --git a/docs/guides/install/windows/index.html b/docs/guides/install/windows/index.html index 406f733c..20133c9b 100644 --- a/docs/guides/install/windows/index.html +++ b/docs/guides/install/windows/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/permission-modes/index.html b/docs/guides/permission-modes/index.html index 257a1955..6c27da0f 100644 --- a/docs/guides/permission-modes/index.html +++ b/docs/guides/permission-modes/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/docker/index.html b/docs/guides/self-hosting/docker/index.html index 7769a495..ea34127a 100644 --- a/docs/guides/self-hosting/docker/index.html +++ b/docs/guides/self-hosting/docker/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/instance-configuration/index.html b/docs/guides/self-hosting/instance-configuration/index.html index 1a4f8a28..84d58f03 100644 --- a/docs/guides/self-hosting/instance-configuration/index.html +++ b/docs/guides/self-hosting/instance-configuration/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/interstitial-page/index.html b/docs/guides/self-hosting/interstitial-page/index.html index 795ae99e..0e97dcec 100644 --- a/docs/guides/self-hosting/interstitial-page/index.html +++ b/docs/guides/self-hosting/interstitial-page/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/kubernetes/index.html b/docs/guides/self-hosting/kubernetes/index.html index 5cd00e79..ea6e6002 100644 --- a/docs/guides/self-hosting/kubernetes/index.html +++ b/docs/guides/self-hosting/kubernetes/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/linux/index.html b/docs/guides/self-hosting/linux/index.html index 13540b07..582be33c 100644 --- a/docs/guides/self-hosting/linux/index.html +++ b/docs/guides/self-hosting/linux/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/linux/nginx/index.html b/docs/guides/self-hosting/linux/nginx/index.html index 9405629b..dfe58856 100644 --- a/docs/guides/self-hosting/linux/nginx/index.html +++ b/docs/guides/self-hosting/linux/nginx/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/metrics-and-limits/configuring-limits/index.html b/docs/guides/self-hosting/metrics-and-limits/configuring-limits/index.html index 1162887c..76512fb1 100644 --- a/docs/guides/self-hosting/metrics-and-limits/configuring-limits/index.html +++ b/docs/guides/self-hosting/metrics-and-limits/configuring-limits/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/metrics-and-limits/configuring-metrics/index.html b/docs/guides/self-hosting/metrics-and-limits/configuring-metrics/index.html index 84af8989..20b739bd 100644 --- a/docs/guides/self-hosting/metrics-and-limits/configuring-metrics/index.html +++ b/docs/guides/self-hosting/metrics-and-limits/configuring-metrics/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/oauth/configuring-oauth/index.html b/docs/guides/self-hosting/oauth/configuring-oauth/index.html index b956403b..c67866fb 100644 --- a/docs/guides/self-hosting/oauth/configuring-oauth/index.html +++ b/docs/guides/self-hosting/oauth/configuring-oauth/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/organizations/index.html b/docs/guides/self-hosting/organizations/index.html index c3aa404c..ada30967 100644 --- a/docs/guides/self-hosting/organizations/index.html +++ b/docs/guides/self-hosting/organizations/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/personalized-frontend/index.html b/docs/guides/self-hosting/personalized-frontend/index.html index 5ddfb47a..578dbe39 100644 --- a/docs/guides/self-hosting/personalized-frontend/index.html +++ b/docs/guides/self-hosting/personalized-frontend/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/self-hosting/self-service-invite/index.html b/docs/guides/self-hosting/self-service-invite/index.html index 2c8ed6b5..211663dd 100644 --- a/docs/guides/self-hosting/self-service-invite/index.html +++ b/docs/guides/self-hosting/self-service-invite/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/guides/vpn/index.html b/docs/guides/vpn/index.html index 5052cec5..f0bf4563 100644 --- a/docs/guides/vpn/index.html +++ b/docs/guides/vpn/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/docs/myzrok/custom-domains/index.html b/docs/myzrok/custom-domains/index.html index ea689581..e35d109b 100644 --- a/docs/myzrok/custom-domains/index.html +++ b/docs/myzrok/custom-domains/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/index.html b/index.html index ddfcb415..d22f4579 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard"> diff --git a/search/index.html b/search/index.html index 64dc7d5d..d12772a4 100644 --- a/search/index.html +++ b/search/index.html @@ -10,7 +10,7 @@ <link rel="search" type="application/opensearchdescription+xml" title="zrok" href="/opensearch.xml"><link rel="stylesheet" href="/assets/css/styles.b199a884.css"> -<script src="/assets/js/runtime~main.27dd39d7.js" defer="defer"></script> +<script src="/assets/js/runtime~main.5239a08d.js" defer="defer"></script> <script src="/assets/js/main.73901735.js" defer="defer"></script> </head> <body class="navigation-with-keyboard">