Geo-scale, next-generation peer-to-peer sharing platform built on top of OpenZiti.
Go to file
Michael Quigley ca6a11cc59
Merge pull request #393 from openziti/v0.4_caddy
Caddy Integration (First Round) (#330, #388, #392)
2023-08-31 20:47:58 -04:00
.github/workflows go/node version update 2023-08-11 11:19:22 -04:00
bin initial rough pass for a stored token implementation 2023-01-09 11:00:37 -06:00
build v0.4 series 2023-03-30 18:57:27 -04:00
cmd/zrok added '-b' shorthand for '--backend-mode' (#397) 2023-08-31 14:19:05 -04:00
controller caddy backend store migrations (#391) 2023-08-21 16:04:31 -04:00
docker preen Docker share guides for 0.4 2023-06-13 14:25:14 -04:00
docs readme 2023-08-28 17:04:42 -04:00
endpoints private sharing; caddy (#392); sdk refactor 2023-08-30 13:46:51 -04:00
environment default behavior for environment.LoadRoot was returning nil when it should have been returning an env_core.Root stub (#383) 2023-07-31 18:01:23 -04:00
etc zrok 2023-08-31 17:40:34 -04:00
rest_client_zrok Enhanced password requirements and relevant ui changes 2023-05-23 10:51:15 -05:00
rest_model_zrok --backend-mode caddy rough-in (#391) 2023-08-28 14:49:20 -04:00
rest_server_zrok --backend-mode caddy rough-in (#391) 2023-08-28 14:49:20 -04:00
sdk --backend-mode caddy rough-in (#391) 2023-08-28 14:49:20 -04:00
specs --backend-mode caddy rough-in (#391) 2023-08-28 14:49:20 -04:00
tui seriousbusiness 2023-01-13 14:36:07 -05:00
ui health check endpoint for checking both the SQL store and also influx (#372) 2023-08-08 13:48:34 -04:00
util ensure supplied email addresses are valid at both the CLI and the API (#108) 2022-11-29 13:23:23 -05:00
website organize metrics and limits guides under self-hosting 2023-07-27 11:15:08 -04:00
.gitignore gitignore 2023-03-08 14:23:43 -05:00
.goreleaser-darwin.yml openziti-rest-kitchen -> openziti (#158) 2023-01-13 15:01:34 -05:00
.goreleaser-linux-arm64.yml publish Docker images for amd64,arm64 2023-02-09 11:22:08 -05:00
.goreleaser-linux-armhf.yml publish Docker images for amd64,arm64 2023-02-09 11:22:08 -05:00
.goreleaser-linux.yml publish Docker images for amd64,arm64 2023-02-09 11:22:08 -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
BUILD.md build instructions update 2023-08-28 17:14:01 -04:00
CHANGELOG.md typo 2023-08-31 17:42:02 -04:00
CODE_OF_CONDUCT.md add standard markdowns, start to fill them out 2023-01-27 08:28:50 -05:00
CONTRIBUTING.md add standard markdowns, start to fill them out 2023-01-27 08:28:50 -05:00
go.mod initial default template integration (#392) 2023-08-29 13:18:01 -04:00
go.sum initial default template integration (#392) 2023-08-29 13:18:01 -04:00
LICENSE add LICENSE 2023-01-30 13:22:37 -05:00
README.md readme polish 2023-08-28 17:17:57 -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 an 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...

  • zrok share to share resources immediately, simply and securely

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.

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.