Get Started with zrok: Invite, Enable, and Share
Updated
You can start sharing a resource with zrok in three commands: download the binary for your platform, run zrok2 invite to create an account with the service, run zrok2 enable to set up your shell environment, and run zrok2 share to expose the resource. This applies whether you use the public zrok.io service operated by NetFoundry or a self-hosted instance, since both run the same code base.
Before You Start
zrok is an open-source, zero-trust peer-to-peer tunneling and ingress solution built on OpenZiti. The site describes it as available as SaaS or self-hosted, and the single zrok binary contains everything needed to operate zrok environments and host your own service instances — a self-hosted setup additionally requires a Ziti network.
Two things to decide before running commands:
- Which service instance you target. zrok.io is the public instance run by NetFoundry. A self-hosted instance is your own deployment layered on an OpenZiti network, and the site notes it can scale down to a Raspberry Pi.
- Whether you need public or private sharing. Private sharing keeps your resources off public endpoints and transports communication only between zrok clients. Public sharing exposes an endpoint.
Step 1: Download the Binary
Download the zrok binary for your platform from the download page linked in the site navigation. The same binary serves both sharing clients and service-instance operators, so there is no separate client package to hunt for.
Step 2: Run zrok2 invite
zrok2 invite creates an account with the service. The site presents this as the first of its three getting-started steps: download the binary, then run the invite command to create your account.
Expected result: your account exists on the target service instance, and you have the credentials the next step needs.
Common snag: if you are pointing at a self-hosted instance rather than zrok.io, the invite must go to that instance, not the public one. Confirm which environment your binary is configured for before inviting.
Step 3: Run zrok2 enable
zrok2 enable enables your shell environment for sharing with the service. Run it in the shell where you intend to share.
Expected result: your shell is authenticated and ready to issue share commands.
Common snag: environment changes made by enable apply to that shell session. If sharing fails in a new terminal, re-enable in that terminal rather than assuming the account is broken.
Step 4: Run zrok2 share
zrok2 share shares resources "immediately, simply, and securely," per the site. What you share is not limited to HTTP: the site describes zrok as going beyond HTTP proxies to let users share files and web content, with a framework designed to extend to many kinds of decentralized, peer-to-peer resource sharing.
Expected result: a share is created and the resource is reachable according to the sharing mode you chose — private (between zrok users, no public endpoint) or public.
Quick Reference
| Step | Command | What it does | What to check |
|---|---|---|---|
| 1 | Download binary | Gets the zrok client for your platform | Correct platform build |
| 2 | zrok2 invite |
Creates an account with the service | Targeting the intended instance |
| 3 | zrok2 enable |
Enables your shell environment | Run in the shell you will share from |
| 4 | zrok2 share |
Shares the resource | Private vs. public mode |
Choosing Between Public and Self-Hosted
Both options use the same code base, so the four steps above are identical; the difference is who operates the service instance and network.
- Choose zrok.io (public SaaS instance) if you want to be up and sharing in minutes without running infrastructure. The site frames the three-step flow as the fast path.
- Choose self-hosted if you need to control the deployment, including very small setups — the site explicitly describes running an OpenZiti network with zrok on top on a Raspberry Pi. Budget for operating the Ziti network in addition to zrok.
For current plan details and any account requirements, check the pricing and account pages linked from the site rather than assuming terms.