Geo-scale, next-generation peer-to-peer sharing platform built on top of OpenZiti.
Go to file
2024-06-21 16:08:28 -04:00
.github/workflows publish zrok NodeJS SDK when a zrok Release is created 2024-05-06 12:19:35 -06:00
bin adjust generate_rest.sh 2024-03-25 14:08:49 -06:00
build remove old 'gon' lint (#435) 2023-11-07 13:12:17 -05:00
cmd/zrok changelog; '--frontend' in 'zrok reserve public' (#663) 2024-06-21 10:27:53 -04:00
controller added a nullable 'label' column to the 'limit_classes' table (#666) 2024-06-21 10:53:18 -04:00
docker Merge pull request #660 from openziti/qrkourier-patch-3 2024-06-15 17:04:25 -04:00
docs update docs to include 'label' column (#666) 2024-06-21 10:54:44 -04:00
drives fix: close file 2024-05-08 18:10:01 +08:00
endpoints avoid logging stray packets (multicast, etc) 2024-04-12 12:18:42 -04:00
environment crud for defaultFrontend config (#663) 2024-06-20 14:31:26 -04:00
etc share_frontends implementation and testing (#650) 2024-06-17 13:16:07 -04:00
nfpm remove the extra escape from email pattern when reserving a share 2024-06-04 09:00:20 -04:00
rest_client_zrok update shares to include add/remove access grants (#432) 2024-03-06 11:57:03 -05:00
rest_model_zrok adjust admin tooling to support creating open/closed permission mode frontends (#539) 2024-06-18 13:38:00 -04:00
rest_server_zrok adjust admin tooling to support creating open/closed permission mode frontends (#539) 2024-06-18 13:38:00 -04:00
sdk adjust admin tooling to support creating open/closed permission mode frontends (#539) 2024-06-18 13:38:00 -04:00
specs adjust admin tooling to support creating open/closed permission mode frontends (#539) 2024-06-18 13:38:00 -04:00
tui seriousbusiness 2023-01-13 14:36:07 -05:00
ui Merge branch 'main' into snyk-upgrade-d8c6f5b4c55065b4ec64d776fcbd3a56 2024-06-21 16:01:17 -04:00
util basic unique name implementation (#123) 2023-12-08 12:03:07 -05:00
website Merge pull request #630 from openziti/upgrade-docusaurus 2024-05-24 10:32:22 -04:00
.flake8 Python SDK Update (#523) 2024-01-17 10:46:19 -06:00
.gitattributes feat: add .gitattributes to enforce lf line encoding 2024-02-12 21:04:33 +01:00
.gitignore Merge remote-tracking branch 'origin/main' into node-sdk 2024-03-25 09:48:23 -06:00
.goreleaser-darwin.yml update goreleaser to user apple notarytool over archived gon 2023-11-03 14:30:19 -05:00
.goreleaser-linux-arm64.yml add zrok-share package 2023-11-15 16:10:19 -05:00
.goreleaser-linux-armhf.yml add zrok-share package 2023-11-15 16:10:19 -05:00
.goreleaser-linux.yml add zrok-share package 2023-11-15 16:10:19 -05:00
.goreleaser-release.yml fully cross-platform build? (#70) 2022-11-03 16:51:22 -04:00
.goreleaser-windows.yml openziti-rest-kitchen -> openziti (#158) 2023-01-13 15:01:34 -05:00
.markdownlint.yaml initial code style guides 2023-12-15 13:17:21 -05:00
ACKNOWLEDGEMENTS.md acknowledgements (#558) 2024-02-08 14:08:03 -05:00
BUILD.md add mkdir step to build 2024-04-18 07:59:08 -04:00
CHANGELOG.md changelog 2024-06-21 16:05:13 -04:00
CODE_OF_CONDUCT.md add standard markdowns, start to fill them out 2023-01-27 08:28:50 -05:00
CONTRIBUTING.md refine style guide 2024-01-08 11:09:39 -05:00
go.mod Merge branch 'main' into vpn-mode 2024-04-16 14:43:28 -04:00
go.sum Merge branch 'main' into vpn-mode 2024-04-16 14:43:28 -04:00
LICENSE add LICENSE 2023-01-30 13:22:37 -05:00
README.md images; readme (#416) 2023-11-08 11:55:44 -05:00
RELEASING.md correct factual error in release instructions 2023-11-01 17:41:49 -04:00
SECURITY.md add standard markdowns, start to fill them out 2023-01-27 08:28:50 -05:00

zrok

zrok is a next-generation, peer-to-peer sharing platform built on top of OpenZiti, a programmable zero-trust network overlay. zrok is a Ziti Native Application.

zrok facilitates sharing resources both publicly and privately. Public sharing allows you to share zrok resources with non-zrok users over the public internet. Private sharing allows you to directly share your resources peer-to-peer with other zrok users without changing your security or firewall settings.

Like other offerings in this space, zrok allows users to share tunnels for HTTP, TCP and UDP network resources. zrok additionally allows users to easily and rapidly share files, web content, and custom resources in a peer-to-peer manner.

zrok is an extensible platform for sharing. Initially we're targeting technical users. Super-simple sharing for end users is planned and in the backlog.

zrok Web Console

Frictionless

You can be up and sharing using the zrok.io service in minutes. Here is a synopsis of what's involved:

  • Download the binary for your platform here
  • zrok invite to create an account with the service
  • zrok enable to enable your shell environment for sharing with the service

And then... sharing...

Easily share private network resources with public internet users, securely, without having to alter any of your local network configuration:

$ zrok share public localhost:8080

zrok share public

$ curl -s https://dslno640nct4.share.zrok.io | head
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <meta name="theme-color" content="#000000"/>
    <meta name="description" content="zrok ui"/>
    <link rel="preconnect" href="https://fonts.googleapis.com">

Share "network drives" with public and private users running on Windows, macOS, or Linux systems:

$ zrok share public --backend-mode drive ~/Repos/zrok

zrok share public -b drive

Mounting and working with shared drives is simple, and works with any applications on the end users' systems:

mounted zrok drive

See the Concepts and Getting Started Guide for a full overview.

The zrok SDK

zrok includes an SDK that allows you to embed zrok sharing capabilities into your own applications. If you're familiar with a golang net.Conn and net.Listener, you'll be right at home with our SDK.

A Simple zrok Sharing Service

// load enabled zrok environment
root, err := environment.LoadRoot()

// request a share for your resource
shr, err := sdk.CreateShare(root, &sdk.ShareRequest{
    BackendMode: sdk.TcpTunnelBackendMode,
    ShareMode:   sdk.PrivateShareMode,
	// ...
})

// accept requests for your resource
listener, err := sdk.NewListener(shr.Token, root)

A Simple zrok Client

// load enabled zrok environment
root, err := environment.LoadRoot()

// request access to a shared zrok resource
acc, err := sdk.CreateAccess(root, &sdk.AccessRequest{ShareToken: shrToken})

// establish a connection to the resource directly
conn, err := sdk.NewDialer(shrToken, root)

This blog post provides more details for getting started with the zrok SDK.

Self-Hosting

zrok is designed to scale up to support extremely large service instances. zrok.io is a public service instance operated by NetFoundry using the same code base that is available to self-hosted environments.

zrok is also designed to scale down to support extremely small deployments. Run zrok and OpenZiti on a Raspberry Pi!

The single zrok binary contains everything you need to operate zrok environments and also host your own service instances. Just add an OpenZiti network and you're up and running.

See the Self-Hosting Guide for details on getting your own zrok service instance running.

zrok Office Hours

We maintain a growing playlist of videos focusing on various aspects of zrok. This includes the "office hours" series, which are longer-format videos digging into the implementation of zrok and showcasing some of the latest features and capabilities:

zrok Office Hours

Building

If you are interested in building zrok for yourself instead of using a released package, please refer to BUILD.md

Contributing

If you'd like to contribute back to zrok, that'd be great. Please see our CONTRIBUTING.md page and abide by the CODE_OF_CONDUCT.md.