mirror of
https://github.com/kerberos-io/documentation.git
synced 2026-10-20 17:38:31 +00:00
add docker info
This commit is contained in:
@@ -2,11 +2,12 @@
|
||||
const preferDefault = m => m && m.default || m
|
||||
|
||||
exports.components = {
|
||||
"component---cache-dev-404-page-js": () => import("./dev-404-page.js" /* webpackChunkName: "component---cache-dev-404-page-js" */),
|
||||
"component---src-architectures-mdx": () => import("./../../src/architectures.mdx" /* webpackChunkName: "component---src-architectures-mdx" */),
|
||||
"component---src-index-mdx": () => import("./../../src/index.mdx" /* webpackChunkName: "component---src-index-mdx" */),
|
||||
"component---src-enterprise-get-started-mdx": () => import("./../../src/enterprise/get-started.mdx" /* webpackChunkName: "component---src-enterprise-get-started-mdx" */),
|
||||
"component---src-enterprise-installation-mdx": () => import("./../../src/enterprise/installation.mdx" /* webpackChunkName: "component---src-enterprise-installation-mdx" */),
|
||||
"component---src-enterprise-index-mdx": () => import("./../../src/enterprise/index.mdx" /* webpackChunkName: "component---src-enterprise-index-mdx" */),
|
||||
"component---src-enterprise-installation-mdx": () => import("./../../src/enterprise/installation.mdx" /* webpackChunkName: "component---src-enterprise-installation-mdx" */),
|
||||
"component---src-enterprise-releases-mdx": () => import("./../../src/enterprise/releases.mdx" /* webpackChunkName: "component---src-enterprise-releases-mdx" */),
|
||||
"component---src-open-source-get-started-mdx": () => import("./../../src/open-source/get-started.mdx" /* webpackChunkName: "component---src-open-source-get-started-mdx" */),
|
||||
"component---src-open-source-index-mdx": () => import("./../../src/open-source/index.mdx" /* webpackChunkName: "component---src-open-source-index-mdx" */),
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
{
|
||||
"name": "/Users/i353408/Vagrant/www/repos/documentation/node_modules/@emotion/babel-preset-css-prop/dist/babel-preset-css-prop.cjs.js",
|
||||
"options": {
|
||||
"sourceMap": false,
|
||||
"autoLabel": false,
|
||||
"sourceMap": true,
|
||||
"autoLabel": true,
|
||||
"plugins": []
|
||||
}
|
||||
}
|
||||
@@ -45,8 +45,8 @@
|
||||
{
|
||||
"name": "/Users/i353408/Vagrant/www/repos/documentation/node_modules/@emotion/babel-preset-css-prop/dist/babel-preset-css-prop.cjs.js",
|
||||
"options": {
|
||||
"sourceMap": false,
|
||||
"autoLabel": false,
|
||||
"sourceMap": true,
|
||||
"autoLabel": true,
|
||||
"plugins": []
|
||||
}
|
||||
}
|
||||
@@ -73,8 +73,8 @@
|
||||
{
|
||||
"name": "/Users/i353408/Vagrant/www/repos/documentation/node_modules/@emotion/babel-preset-css-prop/dist/babel-preset-css-prop.cjs.js",
|
||||
"options": {
|
||||
"sourceMap": false,
|
||||
"autoLabel": false,
|
||||
"sourceMap": true,
|
||||
"autoLabel": true,
|
||||
"plugins": []
|
||||
}
|
||||
}
|
||||
@@ -101,8 +101,8 @@
|
||||
{
|
||||
"name": "/Users/i353408/Vagrant/www/repos/documentation/node_modules/@emotion/babel-preset-css-prop/dist/babel-preset-css-prop.cjs.js",
|
||||
"options": {
|
||||
"sourceMap": false,
|
||||
"autoLabel": false,
|
||||
"sourceMap": true,
|
||||
"autoLabel": true,
|
||||
"plugins": []
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Executable
+145
@@ -0,0 +1,145 @@
|
||||
import React from "react"
|
||||
import PropTypes from "prop-types"
|
||||
import { graphql, Link } from "gatsby"
|
||||
|
||||
class Dev404Page extends React.Component {
|
||||
static propTypes = {
|
||||
data: PropTypes.object,
|
||||
custom404: PropTypes.element,
|
||||
location: PropTypes.object,
|
||||
}
|
||||
|
||||
constructor(props) {
|
||||
super(props)
|
||||
const { data } = this.props
|
||||
const pagePaths = data.allSitePage.nodes.map(node => node.path)
|
||||
this.state = {
|
||||
showCustom404: false,
|
||||
initPagePaths: pagePaths,
|
||||
pagePaths: pagePaths,
|
||||
pagePathSearchTerms: ``,
|
||||
}
|
||||
this.showCustom404 = this.showCustom404.bind(this)
|
||||
this.handlePagePathSearch = this.handlePagePathSearch.bind(this)
|
||||
this.handleSearchTermChange = this.handleSearchTermChange.bind(this)
|
||||
}
|
||||
|
||||
showCustom404() {
|
||||
this.setState({ showCustom404: true })
|
||||
}
|
||||
|
||||
handleSearchTermChange(event) {
|
||||
this.setState({
|
||||
pagePathSearchTerms: event.target.value,
|
||||
})
|
||||
}
|
||||
|
||||
handlePagePathSearch(event) {
|
||||
event.preventDefault()
|
||||
const tempPagePaths = [...this.state.initPagePaths]
|
||||
const searchTerm = new RegExp(`${this.state.pagePathSearchTerms}`)
|
||||
this.setState({
|
||||
pagePaths: tempPagePaths.filter(pagePath => searchTerm.test(pagePath)),
|
||||
})
|
||||
}
|
||||
|
||||
render() {
|
||||
const { pathname } = this.props.location
|
||||
let newFilePath
|
||||
if (pathname === `/`) {
|
||||
newFilePath = `src/pages/index.js`
|
||||
} else if (pathname.slice(-1) === `/`) {
|
||||
newFilePath = `src/pages${pathname.slice(0, -1)}.js`
|
||||
} else {
|
||||
newFilePath = `src/pages${pathname}.js`
|
||||
}
|
||||
|
||||
return this.state.showCustom404 ? (
|
||||
this.props.custom404
|
||||
) : (
|
||||
<div>
|
||||
<h1>Gatsby.js development 404 page</h1>
|
||||
<p>
|
||||
{`There's not a page yet at `}
|
||||
<code>{pathname}</code>
|
||||
</p>
|
||||
{this.props.custom404 ? (
|
||||
<p>
|
||||
<button onClick={this.showCustom404}>
|
||||
Preview custom 404 page
|
||||
</button>
|
||||
</p>
|
||||
) : (
|
||||
<p>
|
||||
{`A custom 404 page wasn't detected - if you would like to add one, create a component in your site directory at `}
|
||||
<code>src/pages/404.js</code>.
|
||||
</p>
|
||||
)}
|
||||
<p>
|
||||
Create a React.js component in your site directory at
|
||||
{` `}
|
||||
<code>{newFilePath}</code>
|
||||
{` `}
|
||||
and this page will automatically refresh to show the new page
|
||||
component you created.
|
||||
</p>
|
||||
{this.state.initPagePaths.length > 0 && (
|
||||
<div>
|
||||
<p>
|
||||
If you were trying to reach another page, perhaps you can find it
|
||||
below.
|
||||
</p>
|
||||
<h2>
|
||||
Pages (
|
||||
{this.state.pagePaths.length != this.state.initPagePaths.length
|
||||
? `${this.state.pagePaths.length}/${this.state.initPagePaths.length}`
|
||||
: this.state.initPagePaths.length}
|
||||
)
|
||||
</h2>
|
||||
|
||||
<form onSubmit={this.handlePagePathSearch}>
|
||||
<label>
|
||||
Search:
|
||||
<input
|
||||
type="text"
|
||||
id="search"
|
||||
placeholder="Search pages..."
|
||||
value={this.state.pagePathSearchTerms}
|
||||
onChange={this.handleSearchTermChange}
|
||||
/>
|
||||
</label>
|
||||
<input type="submit" value="Submit" />
|
||||
</form>
|
||||
<ul>
|
||||
{this.state.pagePaths.map(
|
||||
(pagePath, index) =>
|
||||
index < 100 && (
|
||||
<li key={pagePath}>
|
||||
<Link to={pagePath}>{pagePath}</Link>
|
||||
</li>
|
||||
)
|
||||
)}
|
||||
{this.state.pagePaths.length > 100 && (
|
||||
<p style={{ fontWeight: `bold` }}>
|
||||
... and {this.state.pagePaths.length - 100} more.
|
||||
</p>
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export default Dev404Page
|
||||
|
||||
export const pagesQuery = graphql`
|
||||
query PagesQuery {
|
||||
allSitePage(filter: { path: { ne: "/dev-404-page/" } }) {
|
||||
nodes {
|
||||
path
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
Binary file not shown.
Binary file not shown.
@@ -5,11 +5,12 @@ const preferDefault = m => m && m.default || m
|
||||
|
||||
|
||||
exports.components = {
|
||||
"component---cache-dev-404-page-js": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/.docz/.cache/dev-404-page.js"))),
|
||||
"component---src-architectures-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/architectures.mdx"))),
|
||||
"component---src-index-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/index.mdx"))),
|
||||
"component---src-enterprise-get-started-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/enterprise/get-started.mdx"))),
|
||||
"component---src-enterprise-installation-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/enterprise/installation.mdx"))),
|
||||
"component---src-enterprise-index-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/enterprise/index.mdx"))),
|
||||
"component---src-enterprise-installation-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/enterprise/installation.mdx"))),
|
||||
"component---src-enterprise-releases-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/enterprise/releases.mdx"))),
|
||||
"component---src-open-source-get-started-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/open-source/get-started.mdx"))),
|
||||
"component---src-open-source-index-mdx": hot(preferDefault(require("/Users/i353408/Vagrant/www/repos/documentation/src/open-source/index.mdx"))),
|
||||
|
||||
+52
-27
@@ -702,6 +702,21 @@
|
||||
"depth": 1,
|
||||
"value": "Installation"
|
||||
},
|
||||
{
|
||||
"slug": "plug-and-play",
|
||||
"depth": 3,
|
||||
"value": "Plug and play"
|
||||
},
|
||||
{
|
||||
"slug": "advanced",
|
||||
"depth": 3,
|
||||
"value": "Advanced"
|
||||
},
|
||||
{
|
||||
"slug": "plug-and-play-1",
|
||||
"depth": 1,
|
||||
"value": "Plug and play"
|
||||
},
|
||||
{
|
||||
"slug": "kios",
|
||||
"depth": 2,
|
||||
@@ -713,9 +728,9 @@
|
||||
"value": "Github"
|
||||
},
|
||||
{
|
||||
"slug": "kerberos-installer",
|
||||
"slug": "kerberos-open-source-installer",
|
||||
"depth": 3,
|
||||
"value": "Kerberos installer"
|
||||
"value": "Kerberos Open Source installer"
|
||||
},
|
||||
{
|
||||
"slug": "etcher",
|
||||
@@ -742,31 +757,6 @@
|
||||
"depth": 3,
|
||||
"value": "Access the Raspberry Pi"
|
||||
},
|
||||
{
|
||||
"slug": "raspbian",
|
||||
"depth": 2,
|
||||
"value": "Raspbian"
|
||||
},
|
||||
{
|
||||
"slug": "update-os",
|
||||
"depth": 3,
|
||||
"value": "Update OS"
|
||||
},
|
||||
{
|
||||
"slug": "machinery",
|
||||
"depth": 3,
|
||||
"value": "Machinery"
|
||||
},
|
||||
{
|
||||
"slug": "web",
|
||||
"depth": 3,
|
||||
"value": "Web"
|
||||
},
|
||||
{
|
||||
"slug": "auto-removal",
|
||||
"depth": 3,
|
||||
"value": "Auto removal"
|
||||
},
|
||||
{
|
||||
"slug": "docker",
|
||||
"depth": 2,
|
||||
@@ -792,6 +782,41 @@
|
||||
"depth": 3,
|
||||
"value": "Volumes"
|
||||
},
|
||||
{
|
||||
"slug": "balena",
|
||||
"depth": 2,
|
||||
"value": "Balena"
|
||||
},
|
||||
{
|
||||
"slug": "advanced-1",
|
||||
"depth": 1,
|
||||
"value": "Advanced"
|
||||
},
|
||||
{
|
||||
"slug": "raspbian",
|
||||
"depth": 2,
|
||||
"value": "Raspbian"
|
||||
},
|
||||
{
|
||||
"slug": "update-os",
|
||||
"depth": 3,
|
||||
"value": "Update OS"
|
||||
},
|
||||
{
|
||||
"slug": "machinery",
|
||||
"depth": 3,
|
||||
"value": "Machinery"
|
||||
},
|
||||
{
|
||||
"slug": "web",
|
||||
"depth": 3,
|
||||
"value": "Web"
|
||||
},
|
||||
{
|
||||
"slug": "auto-removal",
|
||||
"depth": 3,
|
||||
"value": "Auto removal"
|
||||
},
|
||||
{
|
||||
"slug": "generic",
|
||||
"depth": 2,
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
const { get } = require('docz-utils')
|
||||
|
||||
const NO_OP = () => {}
|
||||
|
||||
const DEFAULT_RESOLVABLE_EXTENSIONS = () => [`.js`, `.jsx`]
|
||||
|
||||
let gatsbyNodeCustom = {}
|
||||
try {
|
||||
gatsbyNodeCustom = require('./gatsby-node.custom')
|
||||
} catch (err) {}
|
||||
|
||||
// https://www.gatsbyjs.org/docs/node-apis/
|
||||
|
||||
exports.createPages = args => {
|
||||
const createPages = get(gatsbyNodeCustom, 'createPages', NO_OP)
|
||||
return createPages(args)
|
||||
}
|
||||
|
||||
exports.createPagesStatefully = args => {
|
||||
const createPagesStatefully = get(
|
||||
gatsbyNodeCustom,
|
||||
'createPagesStatefully',
|
||||
NO_OP,
|
||||
)
|
||||
return createPagesStatefully(args)
|
||||
}
|
||||
|
||||
exports.createResolvers = args => {
|
||||
const createResolvers = get(gatsbyNodeCustom, 'createResolvers', NO_OP)
|
||||
return createResolvers(args)
|
||||
}
|
||||
|
||||
exports.createSchemaCustomization = args => {
|
||||
const createSchemaCustomization = get(
|
||||
gatsbyNodeCustom,
|
||||
'createSchemaCustomization',
|
||||
NO_OP,
|
||||
)
|
||||
return createSchemaCustomization(args)
|
||||
}
|
||||
|
||||
exports.generateSideEffects = args => {
|
||||
const generateSideEffects = get(
|
||||
gatsbyNodeCustom,
|
||||
'generateSideEffects',
|
||||
NO_OP,
|
||||
)
|
||||
return generateSideEffects(args)
|
||||
}
|
||||
|
||||
exports.onCreateBabelConfig = args => {
|
||||
const onCreateBabelConfig = get(
|
||||
gatsbyNodeCustom,
|
||||
'onCreateBabelConfig',
|
||||
NO_OP,
|
||||
)
|
||||
return onCreateBabelConfig(args)
|
||||
}
|
||||
|
||||
exports.onCreateDevServer = args => {
|
||||
const onCreateDevServer = get(gatsbyNodeCustom, 'onCreateDevServer', NO_OP)
|
||||
return onCreateDevServer(args)
|
||||
}
|
||||
|
||||
exports.onCreateNode = args => {
|
||||
const onCreateNode = get(gatsbyNodeCustom, 'onCreateNode', NO_OP)
|
||||
return onCreateNode(args)
|
||||
}
|
||||
|
||||
exports.onCreatePage = args => {
|
||||
const onCreatePage = get(gatsbyNodeCustom, 'onCreatePage', NO_OP)
|
||||
return onCreatePage(args)
|
||||
}
|
||||
|
||||
exports.onCreateWebpackConfig = args => {
|
||||
const onCreateWebpackConfig = get(
|
||||
gatsbyNodeCustom,
|
||||
'onCreateWebpackConfig',
|
||||
NO_OP,
|
||||
)
|
||||
return onCreateWebpackConfig(args)
|
||||
}
|
||||
|
||||
exports.onPostBootstrap = args => {
|
||||
const onPostBootstrap = get(gatsbyNodeCustom, 'onPostBootstrap', NO_OP)
|
||||
return onPostBootstrap(args)
|
||||
}
|
||||
|
||||
exports.onPostBuild = args => {
|
||||
const onPostBuild = get(gatsbyNodeCustom, 'onPostBuild', NO_OP)
|
||||
return onPostBuild(args)
|
||||
}
|
||||
|
||||
exports.onPreBootstrap = args => {
|
||||
const onPreBootstrap = get(gatsbyNodeCustom, 'onPreBootstrap', NO_OP)
|
||||
return onPreBootstrap(args)
|
||||
}
|
||||
|
||||
exports.onPreBuild = args => {
|
||||
const onPreBuild = get(gatsbyNodeCustom, 'onPreBuild', NO_OP)
|
||||
return onPreBuild(args)
|
||||
}
|
||||
|
||||
exports.onPreExtractQueries = args => {
|
||||
const onPreExtractQueries = get(
|
||||
gatsbyNodeCustom,
|
||||
'onPreExtractQueries',
|
||||
NO_OP,
|
||||
)
|
||||
return onPreExtractQueries(args)
|
||||
}
|
||||
|
||||
exports.onPreInit = args => {
|
||||
const onPreInit = get(gatsbyNodeCustom, 'onPreInit', NO_OP)
|
||||
return onPreInit(args)
|
||||
}
|
||||
|
||||
exports.preprocessSource = args => {
|
||||
const preprocessSource = get(gatsbyNodeCustom, 'preprocessSource', NO_OP)
|
||||
return preprocessSource(args)
|
||||
}
|
||||
|
||||
exports.resolvableExtensions = args => {
|
||||
const resolvableExtensions = get(
|
||||
gatsbyNodeCustom,
|
||||
'resolvableExtensions',
|
||||
DEFAULT_RESOLVABLE_EXTENSIONS,
|
||||
)
|
||||
return resolvableExtensions(args)
|
||||
}
|
||||
|
||||
exports.setFieldsOnGraphQLNodeType = args => {
|
||||
const setFieldsOnGraphQLNodeType = get(
|
||||
gatsbyNodeCustom,
|
||||
'setFieldsOnGraphQLNodeType',
|
||||
() => ({}),
|
||||
)
|
||||
return setFieldsOnGraphQLNodeType(args)
|
||||
}
|
||||
|
||||
exports.sourceNodes = args => {
|
||||
const sourceNodes = get(gatsbyNodeCustom, 'sourceNodes', NO_OP)
|
||||
return sourceNodes(args)
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
{"componentChunkName":"component---src-open-source-installation-mdx","path":"/opensource/installation","result":{"pageContext":{"frontmatter":{"name":"Installation","menu":"Open Source","route":"/opensource/installation"},"entry":{"id":"9e9908538be367cca76a80425244646f","filepath":"src/open-source/installation.mdx","fullpath":"/Users/i353408/Vagrant/www/repos/documentation/src/open-source/installation.mdx","route":"/opensource/installation","slug":"src-open-source-installation","name":"Installation","menu":"Open Source","headings":[{"slug":"installation","depth":1,"value":"Installation"},{"slug":"kios","depth":2,"value":"KiOS"},{"slug":"github","depth":3,"value":"Github"},{"slug":"kerberos-installer","depth":3,"value":"Kerberos installer"},{"slug":"etcher","depth":3,"value":"Etcher"},{"slug":"connecting-to-wifi","depth":4,"value":"Connecting to WiFi"},{"slug":"setup-a-static-ip-address","depth":4,"value":"Setup a static IP-address"},{"slug":"power-on-the-raspberry-pi","depth":3,"value":"Power on the Raspberry Pi"},{"slug":"access-the-raspberry-pi","depth":3,"value":"Access the Raspberry Pi"},{"slug":"raspbian","depth":2,"value":"Raspbian"},{"slug":"update-os","depth":3,"value":"Update OS"},{"slug":"machinery","depth":3,"value":"Machinery"},{"slug":"web","depth":3,"value":"Web"},{"slug":"auto-removal","depth":3,"value":"Auto removal"},{"slug":"docker","depth":2,"value":"Docker"},{"slug":"prerequisites","depth":3,"value":"Prerequisites"},{"slug":"github-1","depth":3,"value":"Github"},{"slug":"download-docker-image","depth":3,"value":"Download docker image"},{"slug":"volumes","depth":3,"value":"Volumes"},{"slug":"generic","depth":2,"value":"Generic"},{"slug":"machinery-1","depth":3,"value":"Machinery"},{"slug":"web-1","depth":3,"value":"Web"},{"slug":"auto-removal-1","depth":3,"value":"Auto removal"}]}}}}
|
||||
{"componentChunkName":"component---src-open-source-installation-mdx","path":"/opensource/installation","result":{"pageContext":{"frontmatter":{"name":"Installation","menu":"Open Source","route":"/opensource/installation"},"entry":{"id":"9e9908538be367cca76a80425244646f","filepath":"src/open-source/installation.mdx","fullpath":"/Users/i353408/Vagrant/www/repos/documentation/src/open-source/installation.mdx","route":"/opensource/installation","slug":"src-open-source-installation","name":"Installation","menu":"Open Source","headings":[{"slug":"installation","depth":1,"value":"Installation"},{"slug":"plug-and-play","depth":3,"value":"Plug and play"},{"slug":"advanced","depth":3,"value":"Advanced"},{"slug":"plug-and-play-1","depth":1,"value":"Plug and play"},{"slug":"kios","depth":2,"value":"KiOS"},{"slug":"github","depth":3,"value":"Github"},{"slug":"kerberos-open-source-installer","depth":3,"value":"Kerberos Open Source installer"},{"slug":"etcher","depth":3,"value":"Etcher"},{"slug":"connecting-to-wifi","depth":4,"value":"Connecting to WiFi"},{"slug":"setup-a-static-ip-address","depth":4,"value":"Setup a static IP-address"},{"slug":"power-on-the-raspberry-pi","depth":3,"value":"Power on the Raspberry Pi"},{"slug":"access-the-raspberry-pi","depth":3,"value":"Access the Raspberry Pi"},{"slug":"docker","depth":2,"value":"Docker"},{"slug":"prerequisites","depth":3,"value":"Prerequisites"},{"slug":"github-1","depth":3,"value":"Github"},{"slug":"download-docker-image","depth":3,"value":"Download docker image"},{"slug":"volumes","depth":3,"value":"Volumes"},{"slug":"balena","depth":2,"value":"Balena"},{"slug":"advanced-1","depth":1,"value":"Advanced"},{"slug":"raspbian","depth":2,"value":"Raspbian"},{"slug":"update-os","depth":3,"value":"Update OS"},{"slug":"machinery","depth":3,"value":"Machinery"},{"slug":"web","depth":3,"value":"Web"},{"slug":"auto-removal","depth":3,"value":"Auto removal"},{"slug":"generic","depth":2,"value":"Generic"},{"slug":"machinery-1","depth":3,"value":"Machinery"},{"slug":"web-1","depth":3,"value":"Web"},{"slug":"auto-removal-1","depth":3,"value":"Auto removal"}]}}}}
|
||||
File diff suppressed because one or more lines are too long
@@ -10,10 +10,20 @@ import ReplaceVersion from "../components/ReplaceVersion";
|
||||
|
||||
Kerberos Open Source comes with different installation flavours. So you might think, why? The reason is simple, depending on the use case one option is better than another. A short list of recommendations:
|
||||
|
||||
### Plug and play
|
||||
1. [KiOS](/opensource/installation#kios): You have a Raspberry Pi, and you only want to run a Kerberos agent on it.
|
||||
2. [Raspbian](/opensource/installation#raspbian): You have a Raspberry Pi, but you want other services running next to the Kerberos agent.
|
||||
3. [Docker](/opensource/installation#docker): You have a lot of IP cameras, and/or don't want to mess with dependencies.
|
||||
4. [Generic](/opensource/installation#generic): You want to develop/extend Kerberos with your own features, or you want to run a Kerberos agent on a not supported OS/architecure.
|
||||
2. [Docker](/opensource/installation#docker): You have a lot of IP cameras, and/or don't want to mess with dependencies.
|
||||
3. [Balena](/opensource/installation#balena): Runnning the Kerberos Docker container on top of Balena.
|
||||
|
||||
### Advanced
|
||||
4. [Raspbian](/opensource/installation#raspbian): You have a Raspberry Pi, but you want other services running next to the Kerberos agent.
|
||||
5. [Generic](/opensource/installation#generic): You want to develop/extend Kerberos with your own features, or you want to run a Kerberos agent on a not supported OS/architecure.
|
||||
|
||||
---
|
||||
|
||||
# Plug and play
|
||||
|
||||
Following installation methods aim for the simplicity of installing Kerberos Open Source. With almost no efforts you can have Kerberos Open Source running.
|
||||
|
||||
## KiOS
|
||||
|
||||
@@ -25,7 +35,7 @@ It can be installed using our own installer, which comes with a nice interface t
|
||||
|
||||
KiOS is compiled using Buildroot, the project can be found on [following Github repo](https://github.com/kerberos-io/kios).
|
||||
|
||||
### Kerberos installer
|
||||
### Kerberos Open Source installer
|
||||
|
||||
Installing the Kerberos agent to your Raspberry Pi, has never been so easy. By using our cross-platform installer, you can run a fully configured video surveillance system within 3 minutes. Indeed, we also think that's awesome!
|
||||
|
||||
@@ -88,7 +98,7 @@ Once you've finished the installation using either the KiOS installer or Etcher,
|
||||
You can access the KiOS system with attaching your Raspberry Pi to a HDMI monitor or by using `ssh`.
|
||||
|
||||
```ts
|
||||
Cedrics-Mac-mini:build cedricverst$ ssh root@192.168.0.12
|
||||
$ ssh root@192.168.0.12
|
||||
Welcome to kios-79e30bbb!
|
||||
[root@kios-79e30bbb ~]#
|
||||
```
|
||||
@@ -100,6 +110,82 @@ Note that by default no root password is set, you can define a password in the `
|
||||
[root@kios-79e30bbb ~]# reboot
|
||||
```
|
||||
|
||||
## Docker
|
||||
|
||||
A Docker image (amd64, armv7, arm64) is available on [the Docker hub](https://hub.docker.com/u/kerberos), which contains all the necessary software to setup the Kerberos agent in a matter of seconds. Before you can run this image, make sure you have Docker installed. Afterwards you can use Docker, to get the Kerberos agent up and running. All Docker images can be found on [the Docker hub](https://hub.docker.com/u/kerberos).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
> Docker or Docker Desktop (Linux, OS or Windows)
|
||||
|
||||
### Github
|
||||
|
||||
All technical information, such as Dockerfile, can be found on [following Github repo](https://github.com/kerberos-io/docker).
|
||||
|
||||
### Download docker image
|
||||
|
||||
Before you are able to run the Kerberos agent inside a container, you will need to pull the docker image from the Docker hub.
|
||||
|
||||
```ts
|
||||
docker pull kerberos/kerberos
|
||||
```
|
||||
|
||||
When you pulled succesfully you can run your first Kerberos container as following. This will run Kerberos agent and expose the web interface on port 80, and the livestream on port 8889.
|
||||
|
||||
```ts
|
||||
docker run --name camera1 -p 80:80 -p 8889:8889 -d kerberos/kerberos
|
||||
```
|
||||
|
||||
To add more containers, you can change the name parameter and assign another port to expose the web interface and livestream (ports are unique on a OS).
|
||||
|
||||
```ts
|
||||
docker run --name camera2 -p 81:80 -p 8890:8889 -d kerberos/kerberos
|
||||
docker run --name camera3 -p 82:80 -p 8891:8889 -d kerberos/kerberos
|
||||
```
|
||||
|
||||
When the containers are created, you can open your browser and browse to your different containers.
|
||||
```ts
|
||||
http://localhost:80
|
||||
http://localhost:81
|
||||
http://localhost:82
|
||||
```
|
||||
|
||||
### Volumes
|
||||
|
||||
Instead of just running the Kerberos container, you can also persist your configuration by assigning volumes. An example of mounting volumes looks like this; an overview of [the different volumes can be found here](https://github.com/kerberos-io/docker/blob/master/Dockerfile#L171-L177).
|
||||
|
||||
- preload configuration,
|
||||
- or centralise the images/videos on your working station.
|
||||
|
||||
```ts
|
||||
docker run --name kerberos-camera1 \
|
||||
-p 80:80 -p 8889:8889 \
|
||||
-v ~/config:/etc/opt/kerberosio/config \
|
||||
-v ~/capture:/etc/opt/kerberosio/capture \
|
||||
-v ~/logs:/etc/opt/kerberosio/logs \
|
||||
-v ~/webconfig:/var/www/web/config \
|
||||
-d kerberos/kerberos
|
||||
```
|
||||
|
||||
If you want to learn more about Kerberos.io on Docker, have a look at these tutorials.
|
||||
- [Kerberos.io — the road to Docker](https://medium.com/@cedricverst/kerberos-io-the-road-to-docker-8e048a480241)
|
||||
- [Kerberos.io on Docker](https://medium.com/@cedricverst/kerberos-io-on-docker-19b25fa7efd1)
|
||||
|
||||
|
||||
## Balena
|
||||
|
||||
Running Kerberos inside a Docker container is great, it makes it possible to run Kerberos everywhere, basically on any Linux OS. These days we have a lot of IoT boards, however by default we only support the Raspberry Pi versions. The reason is simple, it's not our major concern to support any kind of board.
|
||||
|
||||
To fill the gap, regarding the latter, we can rely on another solution called [Balena.io](https://balena.io). Balena supports a huge range of IoT boards, the only thing it requires is a Docker image build for the require architecture. As the Docker image for Kerberos Open Source is a multi-architecture image, we can run our Kerberos Docker image on the Balena OS (more info follows).
|
||||
|
||||
On top of supporting a lot of boars,
|
||||
|
||||
---
|
||||
|
||||
# Advanced
|
||||
|
||||
Following installation methods are only for advanced users, who need to have more control over the Kerberos Open Source environment.
|
||||
|
||||
## Raspbian
|
||||
|
||||
If you have already an OS (e.g. Raspbian Buster) flashed to your Raspberry Pi, then it makes sense to install the Kerberos agent on top of your existing OS. There are two ways to achieve this:
|
||||
@@ -268,52 +354,6 @@ Append following line, to execute the autoremoval.sh script every 5min.
|
||||
*/5 * * * * /bin/bash /home/pi/autoremoval.sh
|
||||
```
|
||||
|
||||
## Docker
|
||||
|
||||
A Docker image (x86, ARMv7, ARMv8) is available on the Docker Hub, which contains all the necessary software to setup the Kerberos agent in a matter of seconds. Before you can run this image, make sure you have Docker installed. Afterwards you can use docker, to get the Kerberos agent up and running. All docker images can be found on [the Docker hub](https://hub.docker.com/u/kerberos).
|
||||
|
||||
### Prerequisites
|
||||
|
||||
> Docker or Docker Desktop (Linux, OS or Windows)
|
||||
|
||||
### Github
|
||||
|
||||
All technical information, such as Dockerfile, can be found on [following Github repo](https://github.com/kerberos-io/docker).
|
||||
|
||||
### Download docker image
|
||||
|
||||
Before you are able to run the Kerberos agent inside a container, you will need to pull the docker image from the Docker hub.
|
||||
|
||||
```ts
|
||||
docker pull kerberos/kerberos
|
||||
```
|
||||
|
||||
When you pulled succesfully you can run your first Kerberos container as following. This will run Kerberos agent and expose the web interface on port 80, and the livestream on port 8889.
|
||||
|
||||
```ts
|
||||
docker run --name camera1 -p 80:80 -p 8889:8889 -d kerberos/kerberos
|
||||
```
|
||||
|
||||
To add more containers, you can change the name parameter and assign another port to expose the web interface and livestream (ports are unique on a OS).
|
||||
|
||||
```ts
|
||||
docker run --name camera2 -p 81:80 -p 8890:8889 -d kerberos/kerberos
|
||||
docker run --name camera3 -p 82:80 -p 8891:8889 -d kerberos/kerberos
|
||||
```
|
||||
|
||||
When the containers are created, you can open your browser and browse to your different containers.
|
||||
```ts
|
||||
http://localhost:80
|
||||
http://localhost:81
|
||||
http://localhost:82
|
||||
```
|
||||
|
||||
### Volumes
|
||||
|
||||
You can assign volumes to the Kerberos container to for example
|
||||
- preload configuration,
|
||||
- or centralise the images/videos on your working station.
|
||||
|
||||
## Generic
|
||||
|
||||
If you want to install the Kerberos agent from source on your working station or server, either for development or running the software, this is the preferred installation procedure. We are assuming that you use a Linux OS, when using Mac OSX the installation is slightly different.
|
||||
|
||||
Reference in New Issue
Block a user