diff --git a/404.html b/404.html index 3c99db9b3..94dd1e485 100644 --- a/404.html +++ b/404.html @@ -4,7 +4,7 @@
komodo.execute_terminal in Actions",id:"3-fix-any-komodoexecute_terminal-in-actions",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"v200",children:"v2.0.0"})}),"\n",(0,r.jsx)(n.p,{children:"Komodo v2 is a major release with significant architectural changes and new features."}),"\n",(0,r.jsx)(n.h2,{id:"changelog",children:"Changelog"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Docker Swarm support"}),": Manage swarm clusters, nodes, services, stacks, configs, and secrets."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Outbound periphery"}),": Periphery can now initiate the connection to Komodo Core."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"PKI authentication"}),": Core and Periphery now authenticate with auto-generated key pairs and automatic rotation. Passkeys are deprecated."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Onboarding keys"}),": streamlined server onboarding with reusable keys."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Improved terminals"}),": Terminals dashboard, ",(0,r.jsx)(n.code,{children:"km ssh"}),", and improved Action scripting."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Improved auto updates"}),": Uses a better system to handle auto updates based on image digest."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"New UI"}),": Improved look with higher contrast and better UI primitives."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Passkey / TOTP 2FA"}),": Built in two factor authentication for username / password login."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Multi-login Linking"}),": Users can now link multiple login providers (Local, OIDC, Github, etc) to their account."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Full OpenAPI documentation"}),": Interactive API docs ",(0,r.jsx)(n.a,{href:"https://demo.komo.do/docs",children:"now available"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"upgrading-to-komodo-v2",children:"Upgrading to Komodo v2"}),"\n",(0,r.jsxs)(n.p,{children:["Komodo v2 introduces a new connection and authentication method between Komodo Core and the Periphery agents running on your Servers. Find more information on ",(0,r.jsx)(n.a,{href:"../releases/v2.0.0",children:"Komodo v2 here"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"It is largely backward compatible with Komodo v1 configuration, and users can upgrade from v1 in place by following the steps below."}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Starting with v2, Komodo will not publish images with the ",(0,r.jsx)(n.code,{children:"latest"})," tag in favor of Semver (",(0,r.jsx)(n.code,{children:"2"}),", ",(0,r.jsx)(n.code,{children:"2.0"}),", ",(0,r.jsx)(n.code,{children:"2.0.0"}),").\nThis prevents unintented major version upgrades when using auto updaters. Use ",(0,r.jsx)(n.code,{children:":2"})," to stay up to date\nwith all future Komodo v2 releases."]})}),"\n",(0,r.jsx)(n.h3,{id:"1-upgrade-core-and-periphery-to-v2",children:"1. Upgrade Core and Periphery to v2"}),"\n",(0,r.jsxs)(n.p,{children:["The first step is to upgrade ",(0,r.jsx)(n.strong,{children:"both Core and Periphery"})," to v2 versions, along with ",(0,r.jsx)(n.strong,{children:"some small configuration changes"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"upgrade-core",children:"Upgrade Core"}),"\n",(0,r.jsxs)(n.p,{children:["In the Komodo Core compose service, ",(0,r.jsxs)(n.strong,{children:["update the image to ",(0,r.jsx)(n.code,{children:":2"})," tag"]}),", and ",(0,r.jsxs)(n.strong,{children:["add a new mount to ",(0,r.jsx)(n.code,{children:"/config/keys"})]}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"services:\n core:\n image: ghcr.io/moghtech/komodo-core:2\n init: true # This should be added regardless of version\n volumes:\n - keys:/config/keys\n - (...unchanged)\n (...unchanged)\n\nvolumes:\n keys:\n (...unchanged)\n"})}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsxs)(n.p,{children:["Ensure the Komodo Core service includes ",(0,r.jsx)(n.code,{children:"init: true"}),", as shown above.\nFailing to do so may cause a build up of zombie processes, and it wasn't\nincluded in earlier releases example compose file."]})}),"\n",(0,r.jsx)(n.h4,{id:"upgrade-periphery",children:"Upgrade Periphery"}),"\n",(0,r.jsxs)(n.p,{children:["If you are running Komodo Periphery in a container, you also need the ",(0,r.jsx)(n.code,{children:":2"})," tag for the image, and the ",(0,r.jsxs)(n.strong,{children:["keys will default to being stored in ",(0,r.jsx)(n.code,{children:"$PERIPHERY_ROOT_DIRECTORY/keys"})," which should already be mounted"]}),".\nStill, if running Periphery in container, ",(0,r.jsx)(n.strong,{children:"ensure you see the private / public keys in the key directory"}),", you may need to add a mount if you customized mount directories."]}),"\n",(0,r.jsxs)(n.p,{children:["Systemd Periphery users just need to update their Periphery binary version. The keys will be stored in your ",(0,r.jsx)(n.code,{children:"root_directory"})," (default: ",(0,r.jsx)(n.code,{children:"/etc/komodo/keys"}),")."]}),"\n",(0,r.jsx)(n.p,{children:"After getting both Core and Periphery running, everything should already work correctly at this point."}),"\n",(0,r.jsx)(n.h3,{id:"2a-move-to-public-key-authentication",children:"2a. Move to public key authentication"}),"\n",(0,r.jsxs)(n.p,{children:["If you want to ",(0,r.jsxs)(n.strong,{children:["reverse the agent connection, ",(0,r.jsx)(n.a,{href:"#2b-reversing-the-agent-connection",children:"skip this step and go to 2b"})]}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["If you want to keep the Core to Periphery connection direction, you can increase the security by\n",(0,r.jsx)(n.strong,{children:"moving from passkey authentication to public key authentication"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Navigate to the ",(0,r.jsx)(n.code,{children:"Settings"})," page, at the top you will find the Core Public Key (starting with ",(0,r.jsx)(n.code,{children:"MCow..."}),").\nCopy this key and and ",(0,r.jsx)(n.strong,{children:"redeploy Periphery agents with updated configuration"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'## Accepted public keys to allow Core(s) to connect.\n## Periphery gains knowledge of the Core public key through the noise handshake.\n## If neither these nor passkeys provided, inbound connections will not be authenticated.\n## Accepts Spki base64 DER directly and PEM file. Use `file:/path/to/core.pub` to load from file.\n## Env: PERIPHERY_CORE_PUBLIC_KEYS\n## Optional, no default.\ncore_public_keys = "komodo.execute_terminal in Actions",id:"3-fix-any-komodoexecute_terminal-in-actions",level:3}];function l(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.header,{children:(0,r.jsx)(n.h1,{id:"v200",children:"v2.0.0"})}),"\n",(0,r.jsx)(n.p,{children:"Komodo v2 is a major release with significant architectural changes and new features."}),"\n",(0,r.jsx)(n.h2,{id:"changelog",children:"Changelog"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Docker Swarm support"}),": Manage swarm clusters, nodes, services, stacks, configs, and secrets."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Outbound periphery"}),": Periphery can now initiate the connection to Komodo Core."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"PKI authentication"}),": Core and Periphery now authenticate with auto-generated key pairs and automatic rotation. Passkeys are deprecated."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Onboarding keys"}),": streamlined server onboarding with reusable keys."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Improved terminals"}),": Terminals dashboard, ",(0,r.jsx)(n.code,{children:"km ssh"}),", and improved Action scripting."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Improved auto updates"}),": Uses a better system to handle auto updates based on image digest."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"New UI"}),": Improved look with higher contrast and better UI primitives."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Passkey / TOTP 2FA"}),": Built in two factor authentication for username / password login."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Multi-login Linking"}),": Users can now link multiple login providers (Local, OIDC, Github, etc) to their account."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Full OpenAPI documentation"}),": Interactive API docs ",(0,r.jsx)(n.a,{href:"https://demo.komo.do/docs",children:"now available"}),"."]}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"upgrading-to-komodo-v2",children:"Upgrading to Komodo v2"}),"\n",(0,r.jsxs)(n.p,{children:["Komodo v2 introduces a new connection and authentication method between Komodo Core and the Periphery agents running on your Servers. Find more information on ",(0,r.jsx)(n.a,{href:"../releases/v2.0.0",children:"Komodo v2 here"}),"."]}),"\n",(0,r.jsx)(n.p,{children:"It is largely backward compatible with Komodo v1 configuration, and users can upgrade from v1 in place by following the steps below."}),"\n",(0,r.jsx)(n.admonition,{type:"note",children:(0,r.jsxs)(n.p,{children:["Starting with v2, Komodo will not publish images with the ",(0,r.jsx)(n.code,{children:"latest"})," tag in favor of Semver (",(0,r.jsx)(n.code,{children:"2"}),", ",(0,r.jsx)(n.code,{children:"2.0"}),", ",(0,r.jsx)(n.code,{children:"2.0.0"}),").\nThis prevents unintented major version upgrades when using auto updaters."]})}),"\n",(0,r.jsx)(n.h3,{id:"1-upgrade-core-and-periphery-to-v2",children:"1. Upgrade Core and Periphery to v2"}),"\n",(0,r.jsxs)(n.p,{children:["The first step is to upgrade ",(0,r.jsx)(n.strong,{children:"both Core and Periphery"})," to v2 versions, along with ",(0,r.jsx)(n.strong,{children:"some small configuration changes"}),"."]}),"\n",(0,r.jsx)(n.h4,{id:"upgrade-core",children:"Upgrade Core"}),"\n",(0,r.jsxs)(n.p,{children:["In the Komodo Core compose service, ",(0,r.jsxs)(n.strong,{children:["update the image to ",(0,r.jsx)(n.code,{children:":2"})," tag"]}),", and ",(0,r.jsxs)(n.strong,{children:["add a new mount to ",(0,r.jsx)(n.code,{children:"/config/keys"})]}),"."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-yaml",children:"services:\n core:\n image: ghcr.io/moghtech/komodo-core:2\n init: true # This should be added regardless of version\n volumes:\n - keys:/config/keys\n - (...unchanged)\n (...unchanged)\n\nvolumes:\n keys:\n (...unchanged)\n"})}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsxs)(n.p,{children:["Ensure the Komodo Core service includes ",(0,r.jsx)(n.code,{children:"init: true"}),", as shown above.\nFailing to do so may cause a build up of zombie processes, and it wasn't\nincluded in earlier releases example compose file."]})}),"\n",(0,r.jsx)(n.h4,{id:"upgrade-periphery",children:"Upgrade Periphery"}),"\n",(0,r.jsxs)(n.p,{children:["If you are running Komodo Periphery in a container, you also need the ",(0,r.jsx)(n.code,{children:":2"})," tag for the image, and the ",(0,r.jsxs)(n.strong,{children:["keys will default to being stored in ",(0,r.jsx)(n.code,{children:"$PERIPHERY_ROOT_DIRECTORY/keys"})," which should already be mounted"]}),".\nStill, if running Periphery in container, ",(0,r.jsx)(n.strong,{children:"ensure you see the private / public keys in the key directory"}),", you may need to add a mount if you customized mount directories."]}),"\n",(0,r.jsxs)(n.p,{children:["Systemd Periphery users just need to update their Periphery binary version. The keys will be stored in your ",(0,r.jsx)(n.code,{children:"root_directory"})," (default: ",(0,r.jsx)(n.code,{children:"/etc/komodo/keys"}),")."]}),"\n",(0,r.jsx)(n.p,{children:"After getting both Core and Periphery running, everything should already work correctly at this point."}),"\n",(0,r.jsx)(n.h3,{id:"2a-move-to-public-key-authentication",children:"2a. Move to public key authentication"}),"\n",(0,r.jsxs)(n.p,{children:["If you want to ",(0,r.jsxs)(n.strong,{children:["reverse the agent connection, ",(0,r.jsx)(n.a,{href:"#2b-reversing-the-agent-connection",children:"skip this step and go to 2b"})]}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["If you want to keep the Core to Periphery connection direction, you can increase the security by\n",(0,r.jsx)(n.strong,{children:"moving from passkey authentication to public key authentication"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Navigate to the ",(0,r.jsx)(n.code,{children:"Settings"})," page, at the top you will find the Core Public Key (starting with ",(0,r.jsx)(n.code,{children:"MCow..."}),").\nCopy this key and and ",(0,r.jsx)(n.strong,{children:"redeploy Periphery agents with updated configuration"}),":"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-toml",children:'## Accepted public keys to allow Core(s) to connect.\n## Periphery gains knowledge of the Core public key through the noise handshake.\n## If neither these nor passkeys provided, inbound connections will not be authenticated.\n## Accepts Spki base64 DER directly and PEM file. Use `file:/path/to/core.pub` to load from file.\n## Env: PERIPHERY_CORE_PUBLIC_KEYS\n## Optional, no default.\ncore_public_keys = "Komodo v2 introduces a new connection and authentication method between Komodo Core and the Periphery agents running on your Servers. Find more information on Komodo v2 here.
It is largely backward compatible with Komodo v1 configuration, and users can upgrade from v1 in place by following the steps below.
Starting with v2, Komodo will not publish images with the latest tag in favor of Semver (2, 2.0, 2.0.0).
-This prevents unintented major version upgrades when using auto updaters.
:2 to stay up to date
+with all future Komodo v2 releases.
The first step is to upgrade both Core and Periphery to v2 versions, along with some small configuration changes.