mirror of
https://github.com/openziti/zrok.git
synced 2025-06-19 08:17:05 +02:00
add getting started cards for hosted and self-hosted
This commit is contained in:
parent
8706381046
commit
4b012d94ae
@ -6,7 +6,44 @@ sidebar_position: 10
|
|||||||
|
|
||||||
import { AssetsProvider } from '@site/src/components/assets-context';
|
import { AssetsProvider } from '@site/src/components/assets-context';
|
||||||
import DownloadCard from '@site/src/components/download-card';
|
import DownloadCard from '@site/src/components/download-card';
|
||||||
import styles from '@site/src/css/download-card.module.css';
|
import DownloadCardStyles from '@site/src/css/download-card.module.css';
|
||||||
|
|
||||||
|
|
||||||
|
## Choose Your Path
|
||||||
|
|
||||||
|
<Columns>
|
||||||
|
<Column className='text--center'>
|
||||||
|
<Card shadow='tl'>
|
||||||
|
<CardHeader style={{textAlign: "center"}}>
|
||||||
|
<h3>Self-Hosted zrok</h3>
|
||||||
|
</CardHeader>
|
||||||
|
<CardBody style={{textAlign: "center"}}>
|
||||||
|
Run your own public zrok instance with Linux, Docker, or Kubernetes.
|
||||||
|
</CardBody>
|
||||||
|
<CardFooter style={{textAlign: "center"}}>
|
||||||
|
<a href="/docs/category/self-hosting/">
|
||||||
|
<button className='button button--secondary button--block'>Guides</button>
|
||||||
|
</a>
|
||||||
|
</CardFooter>
|
||||||
|
</Card>
|
||||||
|
</Column>
|
||||||
|
<Column className='text--justify'>
|
||||||
|
<Card shadow='tl'>
|
||||||
|
<CardHeader style={{textAlign: "center"}}>
|
||||||
|
<h3>Hosted zrokNet</h3>
|
||||||
|
</CardHeader>
|
||||||
|
<CardBody style={{textAlign: "center"}}>
|
||||||
|
Use NetFoundry's public zrok instance.
|
||||||
|
</CardBody>
|
||||||
|
<CardFooter style={{textAlign: "center"}}>
|
||||||
|
<a href="https://myzrok.io/">
|
||||||
|
<button className='button button--secondary button--block'>Get an Account</button>
|
||||||
|
</a>
|
||||||
|
</CardFooter>
|
||||||
|
</Card>
|
||||||
|
</Column>
|
||||||
|
</Columns>
|
||||||
|
|
||||||
|
|
||||||
## What's a zrok?
|
## What's a zrok?
|
||||||
|
|
||||||
@ -37,7 +74,7 @@ If [sharing privately](./concepts/sharing-private.md), only users with the share
|
|||||||
## Installing the zrok Command
|
## Installing the zrok Command
|
||||||
|
|
||||||
<AssetsProvider>
|
<AssetsProvider>
|
||||||
<div className={styles.downloadContainer}>
|
<div className={DownloadCardStyles.downloadContainer}>
|
||||||
<DownloadCard
|
<DownloadCard
|
||||||
osName="Windows"
|
osName="Windows"
|
||||||
osLogo="/img/logo-windows.svg"
|
osLogo="/img/logo-windows.svg"
|
||||||
@ -104,6 +141,8 @@ Congratulations! Your `zrok` account is ready to go!
|
|||||||
|
|
||||||
## Enabling Your zrok Environment
|
## Enabling Your zrok Environment
|
||||||
|
|
||||||
|
A zrok environment usually refers to an enabled device where shares and accesses can be created, .e.g., `~/.zrok` on a Unix machine. It can be a specific user's environment or a system-wide agent's environment owned by the administrator.
|
||||||
|
|
||||||
When your `zrok` account was created, the service generated a _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 _secret_, protect it.
|
When your `zrok` account was created, the service generated a _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 _secret_, protect it.
|
||||||
|
|
||||||
When we left off you had downloaded, extracted, and configured your `zrok` environment. In order to use that environment with your account, you'll need to `enable` it. Enabling an environment generates a secure identity and the necessary underlying security policies with the OpenZiti network hosting the `zrok` service.
|
When we left off you had downloaded, extracted, and configured your `zrok` environment. In order to use that environment with your account, you'll need to `enable` it. Enabling an environment generates a secure identity and the necessary underlying security policies with the OpenZiti network hosting the `zrok` service.
|
||||||
|
@ -118,9 +118,11 @@ With Caddy, you can balance the workload for websites or web services or share s
|
|||||||
```yaml title="compose.override.yml"
|
```yaml title="compose.override.yml"
|
||||||
services:
|
services:
|
||||||
httpbin1:
|
httpbin1:
|
||||||
image: mccutchen/go-httpbin # 8080/tcp
|
image: mccutchen/go-httpbin
|
||||||
|
expose: 8080
|
||||||
httpbin2:
|
httpbin2:
|
||||||
image: mccutchen/go-httpbin # 8080/tcp
|
image: mccutchen/go-httpbin
|
||||||
|
expose: 8080
|
||||||
zrok-share:
|
zrok-share:
|
||||||
volumes:
|
volumes:
|
||||||
- ./Caddyfile:/mnt/.zrok/Caddyfile
|
- ./Caddyfile:/mnt/.zrok/Caddyfile
|
||||||
|
9
docs/guides/self-hosting/kubernetes.mdx
Normal file
9
docs/guides/self-hosting/kubernetes.mdx
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
title: Self-host a zrok Instance in Kubernetes
|
||||||
|
sidebar_label: Kubernetes
|
||||||
|
sidebar_position: 55
|
||||||
|
---
|
||||||
|
|
||||||
|
The Helm chart for zrok is available from the main OpenZiti charts repo.
|
||||||
|
|
||||||
|
[Link to README in GitHub](https://github.com/openziti/helm-charts/tree/main/charts/zrok#readme)
|
15
ui/package-lock.json
generated
15
ui/package-lock.json
generated
@ -6277,9 +6277,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001587",
|
"version": "1.0.30001651",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
|
||||||
"integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==",
|
"integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
@ -6293,7 +6293,8 @@
|
|||||||
"type": "github",
|
"type": "github",
|
||||||
"url": "https://github.com/sponsors/ai"
|
"url": "https://github.com/sponsors/ai"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"license": "CC-BY-4.0"
|
||||||
},
|
},
|
||||||
"node_modules/canvas-color-tracker": {
|
"node_modules/canvas-color-tracker": {
|
||||||
"version": "1.1.6",
|
"version": "1.1.6",
|
||||||
@ -24373,9 +24374,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001587",
|
"version": "1.0.30001651",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001587.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
|
||||||
"integrity": "sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA=="
|
"integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg=="
|
||||||
},
|
},
|
||||||
"canvas-color-tracker": {
|
"canvas-color-tracker": {
|
||||||
"version": "1.1.6",
|
"version": "1.1.6",
|
||||||
|
966
website/package-lock.json
generated
966
website/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -14,9 +14,9 @@
|
|||||||
"write-heading-ids": "docusaurus write-heading-ids"
|
"write-heading-ids": "docusaurus write-heading-ids"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "^3.3.2",
|
"@docusaurus/core": "^3.5.2",
|
||||||
"@docusaurus/plugin-client-redirects": "^3.3.2",
|
"@docusaurus/plugin-client-redirects": "^3.5.2",
|
||||||
"@docusaurus/preset-classic": "^3.3.2",
|
"@docusaurus/preset-classic": "^3.5.2",
|
||||||
"@mdx-js/react": "^3.0.1",
|
"@mdx-js/react": "^3.0.1",
|
||||||
"clsx": "^1.2.1",
|
"clsx": "^1.2.1",
|
||||||
"prism-react-renderer": "^1.3.5",
|
"prism-react-renderer": "^1.3.5",
|
||||||
@ -26,7 +26,7 @@
|
|||||||
"remark-math": "^5.1.1"
|
"remark-math": "^5.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@docusaurus/module-type-aliases": "^3.3.2",
|
"@docusaurus/module-type-aliases": "^3.5.2",
|
||||||
"yaml-loader": "^0.8.0"
|
"yaml-loader": "^0.8.0"
|
||||||
},
|
},
|
||||||
"browserslist": {
|
"browserslist": {
|
||||||
|
44
website/src/components/Card/CardBody/index.js
Normal file
44
website/src/components/Card/CardBody/index.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import React, { CSSProperties } from 'react';
|
||||||
|
import clsx from 'clsx';
|
||||||
|
const CardBody = ({
|
||||||
|
className, // classNamees for the container card
|
||||||
|
style, // Custom styles for the container card
|
||||||
|
children, // Content to be included within the card
|
||||||
|
textAlign,
|
||||||
|
variant,
|
||||||
|
italic = false ,
|
||||||
|
noDecoration = false,
|
||||||
|
transform,
|
||||||
|
breakWord = false,
|
||||||
|
truncate = false,
|
||||||
|
weight,
|
||||||
|
}) => {
|
||||||
|
const text = textAlign ? `text--${textAlign}` :'';
|
||||||
|
const textColor = variant ? `text--${variant}` : '';
|
||||||
|
const textItalic = italic ? 'text--italic' : '';
|
||||||
|
const textDecoration = noDecoration ? 'text-no-decoration' : '';
|
||||||
|
const textType = transform ? `text--${transform}` : '';
|
||||||
|
const textBreak = breakWord ? 'text--break' : '';
|
||||||
|
const textTruncate = truncate ? 'text--truncate' : '';
|
||||||
|
const textWeight = weight ? `text--${weight}` : '';
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={clsx(
|
||||||
|
'card__body',
|
||||||
|
className,
|
||||||
|
text,
|
||||||
|
textType,
|
||||||
|
textColor,
|
||||||
|
textItalic,
|
||||||
|
textDecoration,
|
||||||
|
textBreak,
|
||||||
|
textTruncate,
|
||||||
|
textWeight
|
||||||
|
)}
|
||||||
|
style={style}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
export default CardBody;
|
44
website/src/components/Card/CardFooter/index.js
Normal file
44
website/src/components/Card/CardFooter/index.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import React, { CSSProperties } from 'react';
|
||||||
|
import clsx from 'clsx';
|
||||||
|
const CardFooter = ({
|
||||||
|
className,
|
||||||
|
style,
|
||||||
|
children,
|
||||||
|
textAlign,
|
||||||
|
variant,
|
||||||
|
italic = false ,
|
||||||
|
noDecoration = false,
|
||||||
|
transform,
|
||||||
|
breakWord = false,
|
||||||
|
truncate = false,
|
||||||
|
weight,
|
||||||
|
}) => {
|
||||||
|
const text = textAlign ? `text--${textAlign}` :'';
|
||||||
|
const textColor = variant ? `text--${variant}` : '';
|
||||||
|
const textItalic = italic ? 'text--italic' : '';
|
||||||
|
const textDecoration = noDecoration ? 'text-no-decoration' : '';
|
||||||
|
const textType = transform ? `text--${transform}` : '';
|
||||||
|
const textBreak = breakWord ? 'text--break' : '';
|
||||||
|
const textTruncate = truncate ? 'text--truncate' : '';
|
||||||
|
const textWeight = weight ? `text--${weight}` : '';
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={clsx(
|
||||||
|
'card__footer',
|
||||||
|
className,
|
||||||
|
text,
|
||||||
|
textType,
|
||||||
|
textColor,
|
||||||
|
textItalic,
|
||||||
|
textDecoration,
|
||||||
|
textBreak,
|
||||||
|
textTruncate,
|
||||||
|
textWeight
|
||||||
|
)}
|
||||||
|
style={style}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
export default CardFooter;
|
44
website/src/components/Card/CardHeader/index.js
Normal file
44
website/src/components/Card/CardHeader/index.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import React, { CSSProperties } from 'react'; // CSSProperties allows inline styling with better type checking.
|
||||||
|
import clsx from 'clsx'; // clsx helps manage conditional className names in a clean and concise manner.
|
||||||
|
const CardHeader = ({
|
||||||
|
className, // classNamees for the container card
|
||||||
|
style, // Custom styles for the container card
|
||||||
|
children, // Content to be included within the card
|
||||||
|
textAlign,
|
||||||
|
variant,
|
||||||
|
italic = false ,
|
||||||
|
noDecoration = false,
|
||||||
|
transform,
|
||||||
|
breakWord = false,
|
||||||
|
truncate = false,
|
||||||
|
weight,
|
||||||
|
}) => {
|
||||||
|
const text = textAlign ? `text--${textAlign}` :'';
|
||||||
|
const textColor = variant ? `text--${variant}` : '';
|
||||||
|
const textItalic = italic ? 'text--italic' : '';
|
||||||
|
const textDecoration = noDecoration ? 'text-no-decoration' : '';
|
||||||
|
const textType = transform ? `text--${transform}` : '';
|
||||||
|
const textBreak = breakWord ? 'text--break' : '';
|
||||||
|
const textTruncate = truncate ? 'text--truncate' : '';
|
||||||
|
const textWeight = weight ? `text--${weight}` : '';
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={clsx(
|
||||||
|
'card__header',
|
||||||
|
className,
|
||||||
|
text,
|
||||||
|
textType,
|
||||||
|
textColor,
|
||||||
|
textItalic,
|
||||||
|
textDecoration,
|
||||||
|
textBreak,
|
||||||
|
textTruncate,
|
||||||
|
textWeight
|
||||||
|
)}
|
||||||
|
style={style}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
export default CardHeader;
|
20
website/src/components/Card/CardImage/index.js
Normal file
20
website/src/components/Card/CardImage/index.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import React, { CSSProperties } from 'react';
|
||||||
|
import clsx from 'clsx';
|
||||||
|
import useBaseUrl from '@docusaurus/useBaseUrl'; // Import the useBaseUrl function from Docusaurus
|
||||||
|
const CardImage = ({
|
||||||
|
className,
|
||||||
|
style,
|
||||||
|
cardImageUrl,
|
||||||
|
alt,
|
||||||
|
title,
|
||||||
|
}) => {
|
||||||
|
const generatedCardImageUrl = useBaseUrl(cardImageUrl);
|
||||||
|
return (
|
||||||
|
<img
|
||||||
|
className={clsx('card__image', className)}
|
||||||
|
style={style}
|
||||||
|
src={generatedCardImageUrl} alt={alt} title={title}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
export default CardImage;
|
16
website/src/components/Card/index.js
Normal file
16
website/src/components/Card/index.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import React, { CSSProperties } from 'react'; // CSSProperties allows inline styling with better type checking.
|
||||||
|
import clsx from 'clsx'; // clsx helps manage conditional className names in a clean and concise manner.
|
||||||
|
const Card = ({
|
||||||
|
className, // Custom classes for the container card
|
||||||
|
style, // Custom styles for the container card
|
||||||
|
children, // Content to be included within the card
|
||||||
|
shadow, // Used to add shadow under your card. Expected values are: low (lw), medium (md), tall (tl)
|
||||||
|
}) => {
|
||||||
|
const cardShadow = shadow ? `item shadow--${shadow}` : '';
|
||||||
|
return (
|
||||||
|
<div className={clsx('card', className, cardShadow)} style={style}>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export default Card;
|
17
website/src/components/Column/index.js
Normal file
17
website/src/components/Column/index.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import React from 'react';
|
||||||
|
// Import clsx library for conditional classes.
|
||||||
|
import clsx from 'clsx';
|
||||||
|
|
||||||
|
// Define the Column component as a function
|
||||||
|
// with children, className, style as properties
|
||||||
|
// Look https://infima.dev/docs/ for learn more
|
||||||
|
// Style only affects the element inside the column, but we could have also made the same distinction as for the classes.
|
||||||
|
export default function Column({ children , className, style }) {
|
||||||
|
return (
|
||||||
|
|
||||||
|
<div className={clsx('col' , className)} style={style}>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
17
website/src/components/Columns/index.js
Normal file
17
website/src/components/Columns/index.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import React from 'react';
|
||||||
|
// Import clsx library for conditional classes.
|
||||||
|
import clsx from 'clsx';
|
||||||
|
// Define the Columns component as a function
|
||||||
|
// with children, className, and style as properties
|
||||||
|
// className will allow you to pass either your custom classes or the native infima classes https://infima.dev/docs/layout/grid.
|
||||||
|
// Style" will allow you to either pass your custom styles directly, which can be an alternative to the "styles.module.css" file in certain cases.
|
||||||
|
export default function Columns({ children , className , style }) {
|
||||||
|
return (
|
||||||
|
// This section encompasses the columns that we will integrate with children from a dedicated component to allow the addition of columns as needed
|
||||||
|
<div className="container center">
|
||||||
|
<div className={clsx('row' , className)} style={style} >
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
21
website/src/theme/MDXComponents.js
Normal file
21
website/src/theme/MDXComponents.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import React from 'react';
|
||||||
|
// Importing the original mapper + our components according to the Docusaurus doc
|
||||||
|
import MDXComponents from '@theme-original/MDXComponents';
|
||||||
|
import Card from '@site/src/components/Card';
|
||||||
|
import CardBody from '@site/src/components/Card/CardBody';
|
||||||
|
import CardFooter from '@site/src/components/Card/CardFooter';
|
||||||
|
import CardHeader from '@site/src/components/Card/CardHeader';
|
||||||
|
import CardImage from '@site/src/components/Card/CardImage';
|
||||||
|
import Columns from '@site/src/components/Columns';
|
||||||
|
import Column from '@site/src/components/Column';
|
||||||
|
export default {
|
||||||
|
// Reusing the default mapping
|
||||||
|
...MDXComponents,
|
||||||
|
Card,
|
||||||
|
CardHeader,
|
||||||
|
CardBody,
|
||||||
|
CardFooter,
|
||||||
|
CardImage,
|
||||||
|
Columns,
|
||||||
|
Column,
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user