diff --git a/404.html b/404.html index b8b8f5e18..c3ec8918f 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@ Page Not Found | Komodo - + diff --git a/CNAME b/CNAME deleted file mode 100644 index 87c35431d..000000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -komo.do \ No newline at end of file diff --git a/assets/js/0e384e19.08d6e95a.js b/assets/js/0e384e19.08d6e95a.js deleted file mode 100644 index 7c1f7f8cd..000000000 --- a/assets/js/0e384e19.08d6e95a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[976],{619:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>d});var s=n(4848),r=n(8453);const t={slug:"/intro"},i="What is Komodo?",a={id:"intro",title:"What is Komodo?",description:"Komodo is a web app to provide structure for managing your servers, builds, deployments, and automated procedures.",source:"@site/docs/intro.md",sourceDirName:".",slug:"/intro",permalink:"/docs/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/intro.md",tags:[],version:"current",frontMatter:{slug:"/intro"},sidebar:"docs",next:{title:"Resources",permalink:"/docs/resources"}},c={},d=[{value:"Docker",id:"docker",level:2},{value:"Architecture and Components",id:"architecture-and-components",level:2},{value:"Core",id:"core",level:3},{value:"Periphery",id:"periphery",level:3},{value:"Core API",id:"core-api",level:2},{value:"Permissioning",id:"permissioning",level:2}];function l(e){const o={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.header,{children:(0,s.jsx)(o.h1,{id:"what-is-komodo",children:"What is Komodo?"})}),"\n",(0,s.jsx)(o.p,{children:"Komodo is a web app to provide structure for managing your servers, builds, deployments, and automated procedures."}),"\n",(0,s.jsx)(o.p,{children:"With Komodo you can:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:"Connect all of your servers, and alert on CPU usage, memory usage, and disk usage."}),"\n",(0,s.jsx)(o.li,{children:"Create, start, stop, and restart Docker containers on the connected servers, and view their status and logs."}),"\n",(0,s.jsx)(o.li,{children:"Deploy docker compose stacks. The file can be defined in UI, or in a git repo, with auto deploy on git push."}),"\n",(0,s.jsx)(o.li,{children:"Build application source into auto-versioned Docker images, auto built on webhook. Deploy single-use AWS instances for infinite capacity."}),"\n",(0,s.jsx)(o.li,{children:"Manage repositories on connected servers, which can perform automation via scripting / webhooks."}),"\n",(0,s.jsx)(o.li,{children:"Manage all your configuration / environment variables, with shared global variable and secret interpolation."}),"\n",(0,s.jsx)(o.li,{children:"Keep a record of all the actions that are performed and by whom."}),"\n"]}),"\n",(0,s.jsx)(o.p,{children:'There is no limit to the number of servers you can connect, and there will never be. There is no limit to what API you can use for automation, and there never will be. No "business edition" here.'}),"\n",(0,s.jsx)(o.h2,{id:"docker",children:"Docker"}),"\n",(0,s.jsxs)(o.p,{children:["Komodo is opinionated by design, and uses ",(0,s.jsx)(o.a,{href:"https://docs.docker.com/",children:"docker"})," as the container engine for building and deploying."]}),"\n",(0,s.jsx)(o.admonition,{type:"info",children:(0,s.jsxs)(o.p,{children:["Komodo also supports ",(0,s.jsx)(o.a,{href:"https://podman.io/",children:(0,s.jsx)(o.strong,{children:"podman"})})," instead of docker by utilizing the ",(0,s.jsx)(o.code,{children:"podman"})," -> ",(0,s.jsx)(o.code,{children:"docker"})," alias.\nFor Stack / docker compose support with podman, check out ",(0,s.jsx)(o.a,{href:"https://github.com/containers/podman-compose",children:(0,s.jsx)(o.strong,{children:"podman-compose"})}),". Thanks to ",(0,s.jsx)(o.code,{children:"u/pup_kit"})," for checking this."]})}),"\n",(0,s.jsx)(o.h2,{id:"architecture-and-components",children:"Architecture and Components"}),"\n",(0,s.jsx)(o.p,{children:"Komodo is composed of a single core and any amount of connected servers running the periphery application."}),"\n",(0,s.jsx)(o.h3,{id:"core",children:"Core"}),"\n",(0,s.jsx)(o.p,{children:"Komodo Core is a web server hosting the Core API and browser UI. All user interaction with the connected servers flow through the Core. It is the stateful part of the system, with the application state stored on an instance of MongoDB."}),"\n",(0,s.jsx)(o.h3,{id:"periphery",children:"Periphery"}),"\n",(0,s.jsx)(o.p,{children:"Komodo Periphery is a small stateless web server that runs on all connected servers. It exposes an API called by Komodo Core to perform actions on the server, get system usage, and container status / logs. It is only intended to be reached from the core, and has an address whitelist to limit the IPs allowed to call this API."}),"\n",(0,s.jsx)(o.h2,{id:"core-api",children:"Core API"}),"\n",(0,s.jsxs)(o.p,{children:["Komodo exposes powerful functionality over the Core's REST and Websocket API, enabling infrastructure engineers to manage their infrastructure programmatically. There is a ",(0,s.jsx)(o.a,{href:"https://crates.io/crates/komodo_client",children:"rust crate"})," to simplify programmatic interaction with the API, but in general this can be accomplished using any programming language that can make REST requests."]}),"\n",(0,s.jsx)(o.h2,{id:"permissioning",children:"Permissioning"}),"\n",(0,s.jsxs)(o.p,{children:["Komodo is a system designed to be used by many users, whether they are developers, operations personnel, or administrators. The ability to affect an applications state is very powerful, so Komodo has a granular permissioning system to only provide this functionality to the intended users. The permissioning system is explained in detail in the ",(0,s.jsx)(o.a,{href:"/docs/permissioning",children:"permissioning"})," section."]}),"\n",(0,s.jsxs)(o.p,{children:["User sign-on is possible using username / password, or with Oauth (Github and Google). See ",(0,s.jsx)(o.a,{href:"/docs/setup/",children:"Core Setup"}),"."]})]})}function h(e={}){const{wrapper:o}={...(0,r.R)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},8453:(e,o,n)=>{n.d(o,{R:()=>i,x:()=>a});var s=n(6540);const r={},t=s.createContext(r);function i(e){const o=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(t.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0e384e19.3469ec61.js b/assets/js/0e384e19.3469ec61.js new file mode 100644 index 000000000..b53a0caf2 --- /dev/null +++ b/assets/js/0e384e19.3469ec61.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocsite=self.webpackChunkdocsite||[]).push([[976],{619:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>c,contentTitle:()=>t,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var r=n(4848),s=n(8453);const i={slug:"/intro"},t="What is Komodo?",a={id:"intro",title:"What is Komodo?",description:"Komodo is a web app to provide structure for managing your servers, builds, deployments, and automated procedures.",source:"@site/docs/intro.md",sourceDirName:".",slug:"/intro",permalink:"/docs/intro",draft:!1,unlisted:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/intro.md",tags:[],version:"current",frontMatter:{slug:"/intro"},sidebar:"docs",next:{title:"Resources",permalink:"/docs/resources"}},c={},d=[{value:"Docker",id:"docker",level:2},{value:"Architecture and Components",id:"architecture-and-components",level:2},{value:"Core",id:"core",level:3},{value:"Periphery",id:"periphery",level:3},{value:"Core API",id:"core-api",level:2},{value:"Permissioning",id:"permissioning",level:2}];function l(e){const o={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.header,{children:(0,r.jsx)(o.h1,{id:"what-is-komodo",children:"What is Komodo?"})}),"\n",(0,r.jsx)(o.p,{children:"Komodo is a web app to provide structure for managing your servers, builds, deployments, and automated procedures."}),"\n",(0,r.jsx)(o.p,{children:"With Komodo you can:"}),"\n",(0,r.jsxs)(o.ul,{children:["\n",(0,r.jsx)(o.li,{children:"Connect all of your servers, and alert on CPU usage, memory usage, and disk usage."}),"\n",(0,r.jsx)(o.li,{children:"Create, start, stop, and restart Docker containers on the connected servers, and view their status and logs."}),"\n",(0,r.jsx)(o.li,{children:"Deploy docker compose stacks. The file can be defined in UI, or in a git repo, with auto deploy on git push."}),"\n",(0,r.jsx)(o.li,{children:"Build application source into auto-versioned Docker images, auto built on webhook. Deploy single-use AWS instances for infinite capacity."}),"\n",(0,r.jsx)(o.li,{children:"Manage repositories on connected servers, which can perform automation via scripting / webhooks."}),"\n",(0,r.jsx)(o.li,{children:"Manage all your configuration / environment variables, with shared global variable and secret interpolation."}),"\n",(0,r.jsx)(o.li,{children:"Keep a record of all the actions that are performed and by whom."}),"\n"]}),"\n",(0,r.jsx)(o.p,{children:'There is no limit to the number of servers you can connect, and there will never be. There is no limit to what API you can use for automation, and there never will be. No "business edition" here.'}),"\n",(0,r.jsx)(o.h2,{id:"docker",children:"Docker"}),"\n",(0,r.jsxs)(o.p,{children:["Komodo is opinionated by design, and uses ",(0,r.jsx)(o.a,{href:"https://docs.docker.com/",children:"docker"})," as the container engine for building and deploying."]}),"\n",(0,r.jsx)(o.admonition,{type:"info",children:(0,r.jsxs)(o.p,{children:["Komodo also supports ",(0,r.jsx)(o.a,{href:"https://podman.io/",children:(0,r.jsx)(o.strong,{children:"podman"})})," instead of docker by utilizing the ",(0,r.jsx)(o.code,{children:"podman"})," -> ",(0,r.jsx)(o.code,{children:"docker"})," alias.\nFor Stack / docker compose support with podman, check out ",(0,r.jsx)(o.a,{href:"https://github.com/containers/podman-compose",children:(0,r.jsx)(o.strong,{children:"podman-compose"})}),". Thanks to ",(0,r.jsx)(o.code,{children:"u/pup_kit"})," for checking this."]})}),"\n",(0,r.jsx)(o.h2,{id:"architecture-and-components",children:"Architecture and Components"}),"\n",(0,r.jsx)(o.p,{children:"Komodo is composed of a single core and any amount of connected servers running the periphery application."}),"\n",(0,r.jsx)(o.h3,{id:"core",children:"Core"}),"\n",(0,r.jsx)(o.p,{children:"Komodo Core is a web server hosting the Core API and browser UI. All user interaction with the connected servers flow through the Core."}),"\n",(0,r.jsx)(o.h3,{id:"periphery",children:"Periphery"}),"\n",(0,r.jsx)(o.p,{children:"Komodo Periphery is a small stateless web server that runs on all connected servers. It exposes an API called by Komodo Core to perform actions on the server, get system usage, and container status / logs. It is only intended to be reached from the core, and has an address whitelist to limit the IPs allowed to call this API."}),"\n",(0,r.jsx)(o.h2,{id:"core-api",children:"Core API"}),"\n",(0,r.jsxs)(o.p,{children:["Komodo exposes powerful functionality over the Core's REST and Websocket API, enabling infrastructure engineers to manage their infrastructure programmatically. There is a ",(0,r.jsx)(o.a,{href:"https://crates.io/crates/komodo_client",children:"rust crate"})," to simplify programmatic interaction with the API, but in general this can be accomplished using any programming language that can make REST requests."]}),"\n",(0,r.jsx)(o.h2,{id:"permissioning",children:"Permissioning"}),"\n",(0,r.jsxs)(o.p,{children:["Komodo is a system designed to be used by many users, whether they are developers, operations personnel, or administrators. The ability to affect an applications state is very powerful, so Komodo has a granular permissioning system to only provide this functionality to the intended users. The permissioning system is explained in detail in the ",(0,r.jsx)(o.a,{href:"/docs/permissioning",children:"permissioning"})," section."]}),"\n",(0,r.jsxs)(o.p,{children:["User sign-on is possible using username / password, or with Oauth (Github and Google). See ",(0,r.jsx)(o.a,{href:"/docs/setup/",children:"Core Setup"}),"."]})]})}function h(e={}){const{wrapper:o}={...(0,s.R)(),...e.components};return o?(0,r.jsx)(o,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},8453:(e,o,n)=>{n.d(o,{R:()=>t,x:()=>a});var r=n(6540);const s={},i=r.createContext(s);function t(e){const o=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function a(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),r.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.760e340d.js b/assets/js/runtime~main.8e2398af.js similarity index 59% rename from assets/js/runtime~main.760e340d.js rename to assets/js/runtime~main.8e2398af.js index b142c00f3..4ac8da0d7 100644 --- a/assets/js/runtime~main.760e340d.js +++ b/assets/js/runtime~main.8e2398af.js @@ -1 +1 @@ -(()=>{"use strict";var e,a,t,r,c,o={},f={};function n(e){var a=f[e];if(void 0!==a)return a.exports;var t=f[e]={exports:{}};return o[e].call(t.exports,t,t.exports,n),t.exports}n.m=o,e=[],n.O=(a,t,r,c)=>{if(!t){var o=1/0;for(i=0;i=c)&&Object.keys(n.O).every((e=>n.O[e](t[b])))?t.splice(b--,1):(f=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[t,r,c]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var c=Object.create(null);n.r(c);var o={};a=a||[null,t({}),t([]),t(t)];for(var f=2&r&&e;"object"==typeof f&&!~a.indexOf(f);f=t(f))Object.getOwnPropertyNames(f).forEach((a=>o[a]=()=>e[a]));return o.default=()=>e,n.d(c,o),c},n.d=(e,a)=>{for(var t in a)n.o(a,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((a,t)=>(n.f[t](e,a),a)),[])),n.u=e=>"assets/js/"+({48:"a94703ab",51:"16c99604",92:"3734296e",98:"a7bd4aaa",100:"ef1bbce5",235:"a7456010",238:"f600b847",247:"f8238c17",401:"17896441",469:"1bd19f0c",531:"75245258",535:"5ea303bc",543:"c65a6c17",549:"a5a01e01",552:"669fcf45",583:"1df93b7f",624:"5fbc5cf1",636:"a5c9d4c4",647:"5e95c892",648:"a9cd8699",663:"6aab5236",742:"aba21aa0",782:"39c35b2c",842:"b19e82df",846:"c54f4afd",848:"8b13a4b4",849:"0058b4c6",864:"d92a3c43",943:"79c522c5",947:"ef9e0e28",976:"0e384e19",995:"ef526b88"}[e]||e)+"."+{48:"648183aa",51:"d9271b04",92:"e3f12420",98:"a66a8b25",100:"0f59f70c",235:"b82eb55b",237:"2f3e1c0f",238:"c4a2ec96",247:"a84ccbdf",394:"a2bd9e37",401:"31a9f0c1",469:"cd0efe90",531:"ed1cf839",535:"7d5e449f",543:"99e0a389",549:"4f19718f",552:"4aa106bf",583:"79ad5bd6",624:"72718d3b",636:"05855b87",647:"825bac72",648:"45e3483c",663:"69d378d2",742:"e2256b29",782:"4512e696",842:"3c973e8a",846:"cfa9c1e7",848:"aa112b01",849:"13d76d8b",864:"6cd11810",943:"b18e36e0",947:"830215a3",976:"08d6e95a",995:"68fd2e2b"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},c="docsite:",n.l=(e,a,t,o)=>{if(r[e])r[e].push(a);else{var f,b;if(void 0!==t)for(var d=document.getElementsByTagName("script"),i=0;i{f.onerror=f.onload=null,clearTimeout(s);var c=r[e];if(delete r[e],f.parentNode&&f.parentNode.removeChild(f),c&&c.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=l.bind(null,f.onerror),f.onload=l.bind(null,f.onload),b&&document.head.appendChild(f)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/",n.gca=function(e){return e={17896441:"401",75245258:"531",a94703ab:"48","16c99604":"51","3734296e":"92",a7bd4aaa:"98",ef1bbce5:"100",a7456010:"235",f600b847:"238",f8238c17:"247","1bd19f0c":"469","5ea303bc":"535",c65a6c17:"543",a5a01e01:"549","669fcf45":"552","1df93b7f":"583","5fbc5cf1":"624",a5c9d4c4:"636","5e95c892":"647",a9cd8699:"648","6aab5236":"663",aba21aa0:"742","39c35b2c":"782",b19e82df:"842",c54f4afd:"846","8b13a4b4":"848","0058b4c6":"849",d92a3c43:"864","79c522c5":"943",ef9e0e28:"947","0e384e19":"976",ef526b88:"995"}[e]||e,n.p+n.u(e)},(()=>{var e={354:0,869:0};n.f.j=(a,t)=>{var r=n.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(354|869)$/.test(a))e[a]=0;else{var c=new Promise(((t,c)=>r=e[a]=[t,c]));t.push(r[2]=c);var o=n.p+n.u(a),f=new Error;n.l(o,(t=>{if(n.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var c=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;f.message="Loading chunk "+a+" failed.\n("+c+": "+o+")",f.name="ChunkLoadError",f.type=c,f.request=o,r[1](f)}}),"chunk-"+a,a)}},n.O.j=a=>0===e[a];var a=(a,t)=>{var r,c,o=t[0],f=t[1],b=t[2],d=0;if(o.some((a=>0!==e[a]))){for(r in f)n.o(f,r)&&(n.m[r]=f[r]);if(b)var i=b(n)}for(a&&a(t);d{"use strict";var e,a,t,r,c,f={},o={};function n(e){var a=o[e];if(void 0!==a)return a.exports;var t=o[e]={exports:{}};return f[e].call(t.exports,t,t.exports,n),t.exports}n.m=f,e=[],n.O=(a,t,r,c)=>{if(!t){var f=1/0;for(i=0;i=c)&&Object.keys(n.O).every((e=>n.O[e](t[b])))?t.splice(b--,1):(o=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[t,r,c]},n.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return n.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var c=Object.create(null);n.r(c);var f={};a=a||[null,t({}),t([]),t(t)];for(var o=2&r&&e;"object"==typeof o&&!~a.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,n.d(c,f),c},n.d=(e,a)=>{for(var t in a)n.o(a,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((a,t)=>(n.f[t](e,a),a)),[])),n.u=e=>"assets/js/"+({48:"a94703ab",51:"16c99604",92:"3734296e",98:"a7bd4aaa",100:"ef1bbce5",235:"a7456010",238:"f600b847",247:"f8238c17",401:"17896441",469:"1bd19f0c",531:"75245258",535:"5ea303bc",543:"c65a6c17",549:"a5a01e01",552:"669fcf45",583:"1df93b7f",624:"5fbc5cf1",636:"a5c9d4c4",647:"5e95c892",648:"a9cd8699",663:"6aab5236",742:"aba21aa0",782:"39c35b2c",842:"b19e82df",846:"c54f4afd",848:"8b13a4b4",849:"0058b4c6",864:"d92a3c43",943:"79c522c5",947:"ef9e0e28",976:"0e384e19",995:"ef526b88"}[e]||e)+"."+{48:"648183aa",51:"d9271b04",92:"e3f12420",98:"a66a8b25",100:"0f59f70c",235:"b82eb55b",237:"2f3e1c0f",238:"c4a2ec96",247:"a84ccbdf",394:"a2bd9e37",401:"31a9f0c1",469:"cd0efe90",531:"ed1cf839",535:"7d5e449f",543:"99e0a389",549:"4f19718f",552:"4aa106bf",583:"79ad5bd6",624:"72718d3b",636:"05855b87",647:"825bac72",648:"45e3483c",663:"69d378d2",742:"e2256b29",782:"4512e696",842:"3c973e8a",846:"cfa9c1e7",848:"aa112b01",849:"13d76d8b",864:"6cd11810",943:"b18e36e0",947:"830215a3",976:"3469ec61",995:"68fd2e2b"}[e]+".js",n.miniCssF=e=>{},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},c="docsite:",n.l=(e,a,t,f)=>{if(r[e])r[e].push(a);else{var o,b;if(void 0!==t)for(var d=document.getElementsByTagName("script"),i=0;i{o.onerror=o.onload=null,clearTimeout(s);var c=r[e];if(delete r[e],o.parentNode&&o.parentNode.removeChild(o),c&&c.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),b&&document.head.appendChild(o)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.p="/",n.gca=function(e){return e={17896441:"401",75245258:"531",a94703ab:"48","16c99604":"51","3734296e":"92",a7bd4aaa:"98",ef1bbce5:"100",a7456010:"235",f600b847:"238",f8238c17:"247","1bd19f0c":"469","5ea303bc":"535",c65a6c17:"543",a5a01e01:"549","669fcf45":"552","1df93b7f":"583","5fbc5cf1":"624",a5c9d4c4:"636","5e95c892":"647",a9cd8699:"648","6aab5236":"663",aba21aa0:"742","39c35b2c":"782",b19e82df:"842",c54f4afd:"846","8b13a4b4":"848","0058b4c6":"849",d92a3c43:"864","79c522c5":"943",ef9e0e28:"947","0e384e19":"976",ef526b88:"995"}[e]||e,n.p+n.u(e)},(()=>{var e={354:0,869:0};n.f.j=(a,t)=>{var r=n.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(354|869)$/.test(a))e[a]=0;else{var c=new Promise(((t,c)=>r=e[a]=[t,c]));t.push(r[2]=c);var f=n.p+n.u(a),o=new Error;n.l(f,(t=>{if(n.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var c=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;o.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",o.name="ChunkLoadError",o.type=c,o.request=f,r[1](o)}}),"chunk-"+a,a)}},n.O.j=a=>0===e[a];var a=(a,t)=>{var r,c,f=t[0],o=t[1],b=t[2],d=0;if(f.some((a=>0!==e[a]))){for(r in o)n.o(o,r)&&(n.m[r]=o[r]);if(b)var i=b(n)}for(a&&a(t);d API | Komodo - + diff --git a/docs/build-images.html b/docs/build-images.html index e3f03de7a..12442628b 100644 --- a/docs/build-images.html +++ b/docs/build-images.html @@ -4,7 +4,7 @@ Building Images | Komodo - + diff --git a/docs/build-images/builders.html b/docs/build-images/builders.html index 4cf0daff7..beec05fb8 100644 --- a/docs/build-images/builders.html +++ b/docs/build-images/builders.html @@ -4,7 +4,7 @@ Builders | Komodo - + diff --git a/docs/build-images/configuration.html b/docs/build-images/configuration.html index d28c2816b..bf0073095 100644 --- a/docs/build-images/configuration.html +++ b/docs/build-images/configuration.html @@ -4,7 +4,7 @@ Configuration | Komodo - + diff --git a/docs/build-images/pre-build.html b/docs/build-images/pre-build.html index 86c215f4f..934c53227 100644 --- a/docs/build-images/pre-build.html +++ b/docs/build-images/pre-build.html @@ -4,7 +4,7 @@ Pre-build command | Komodo - + diff --git a/docs/build-images/versioning.html b/docs/build-images/versioning.html index 87e0cafa0..8a612ada2 100644 --- a/docs/build-images/versioning.html +++ b/docs/build-images/versioning.html @@ -4,7 +4,7 @@ Image Versioning | Komodo - + diff --git a/docs/deploy-containers.html b/docs/deploy-containers.html index e59106a50..2bc0b4275 100644 --- a/docs/deploy-containers.html +++ b/docs/deploy-containers.html @@ -4,7 +4,7 @@ Deploy Containers | Komodo - + diff --git a/docs/deploy-containers/configuration.html b/docs/deploy-containers/configuration.html index 102db3d07..4404e9912 100644 --- a/docs/deploy-containers/configuration.html +++ b/docs/deploy-containers/configuration.html @@ -4,7 +4,7 @@ Configuration | Komodo - + diff --git a/docs/deploy-containers/lifetime-management.html b/docs/deploy-containers/lifetime-management.html index 93db9628c..7178ccccc 100644 --- a/docs/deploy-containers/lifetime-management.html +++ b/docs/deploy-containers/lifetime-management.html @@ -4,7 +4,7 @@ Container Management | Komodo - + diff --git a/docs/docker-compose.html b/docs/docker-compose.html index e190ef0e6..1a10fd18f 100644 --- a/docs/docker-compose.html +++ b/docs/docker-compose.html @@ -4,7 +4,7 @@ Docker Compose | Komodo - + diff --git a/docs/file-paths.html b/docs/file-paths.html index 572035401..ea0fa90c9 100644 --- a/docs/file-paths.html +++ b/docs/file-paths.html @@ -4,7 +4,7 @@ File Paths | Komodo - + diff --git a/docs/intro.html b/docs/intro.html index 1b486bfb5..c277c5f18 100644 --- a/docs/intro.html +++ b/docs/intro.html @@ -4,7 +4,7 @@ What is Komodo? | Komodo - + @@ -28,7 +28,7 @@

DockerArchitecture and Components

Komodo is composed of a single core and any amount of connected servers running the periphery application.

Core

-

Komodo Core is a web server hosting the Core API and browser UI. All user interaction with the connected servers flow through the Core. It is the stateful part of the system, with the application state stored on an instance of MongoDB.

+

Komodo Core is a web server hosting the Core API and browser UI. All user interaction with the connected servers flow through the Core.

Periphery

Komodo Periphery is a small stateless web server that runs on all connected servers. It exposes an API called by Komodo Core to perform actions on the server, get system usage, and container status / logs. It is only intended to be reached from the core, and has an address whitelist to limit the IPs allowed to call this API.

Core API

diff --git a/docs/permissioning.html b/docs/permissioning.html index c96ee6183..789dab941 100644 --- a/docs/permissioning.html +++ b/docs/permissioning.html @@ -4,7 +4,7 @@ Permissioning Resources | Komodo - + diff --git a/docs/procedures.html b/docs/procedures.html index e11633995..c7cb781fd 100644 --- a/docs/procedures.html +++ b/docs/procedures.html @@ -4,7 +4,7 @@ procedures | Komodo - + diff --git a/docs/resources.html b/docs/resources.html index f09f0bfac..03e836f0f 100644 --- a/docs/resources.html +++ b/docs/resources.html @@ -4,7 +4,7 @@ Resources | Komodo - + diff --git a/docs/setup.html b/docs/setup.html index 86c7ace58..2017c4786 100644 --- a/docs/setup.html +++ b/docs/setup.html @@ -4,7 +4,7 @@ Setup Komodo | Komodo - + diff --git a/docs/setup/advanced.html b/docs/setup/advanced.html index 46c81642d..1b9e8073a 100644 --- a/docs/setup/advanced.html +++ b/docs/setup/advanced.html @@ -4,7 +4,7 @@ Advanced Configuration | Komodo - + diff --git a/docs/setup/connect-servers.html b/docs/setup/connect-servers.html index a71170926..06771e0c5 100644 --- a/docs/setup/connect-servers.html +++ b/docs/setup/connect-servers.html @@ -4,7 +4,7 @@ Connect More Servers | Komodo - + diff --git a/docs/setup/mongo.html b/docs/setup/mongo.html index d4236927e..7651f75c3 100644 --- a/docs/setup/mongo.html +++ b/docs/setup/mongo.html @@ -4,7 +4,7 @@ MongoDB | Komodo - + diff --git a/docs/setup/postgres.html b/docs/setup/postgres.html index 3890be4e9..36f2750e4 100644 --- a/docs/setup/postgres.html +++ b/docs/setup/postgres.html @@ -4,7 +4,7 @@ Postgres | Komodo - + diff --git a/docs/setup/sqlite.html b/docs/setup/sqlite.html index 7aafeddc0..5bb77bbe7 100644 --- a/docs/setup/sqlite.html +++ b/docs/setup/sqlite.html @@ -4,7 +4,7 @@ Sqlite | Komodo - + diff --git a/docs/sync-resources.html b/docs/sync-resources.html index aede3bd11..c462bcdb5 100644 --- a/docs/sync-resources.html +++ b/docs/sync-resources.html @@ -4,7 +4,7 @@ Sync Resources | Komodo - + diff --git a/docs/version-upgrades.html b/docs/version-upgrades.html index 494f6bd91..95b25174a 100644 --- a/docs/version-upgrades.html +++ b/docs/version-upgrades.html @@ -4,7 +4,7 @@ Version Upgrades | Komodo - + diff --git a/docs/webhooks.html b/docs/webhooks.html index 85daf8113..3ecbdd533 100644 --- a/docs/webhooks.html +++ b/docs/webhooks.html @@ -4,7 +4,7 @@ Configuring Webhooks | Komodo - + diff --git a/index.html b/index.html index 677a67e13..b45a1bd4c 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ Home | Komodo - +