mirror of
https://github.com/moghtech/komodo.git
synced 2025-12-05 19:17:36 -06:00
[PR #889] 2.0.0 #808
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/moghtech/komodo/pull/889
Author: @mbecker20
Created: 9/28/2025
Status: 🔄 Open
Base:
main← Head:2.0.0📝 Commits (10+)
37ac0dcupdate deploy7422c07deploy 2.0.0-dev-19e2680d0fix deploy4feecb4write key pem files by default when not otherwise provided.f228cd3deploy 2.0.0-dev-20c9c4ac4fix clippy7fb902bdeploy 2.0.0-dev-2121ea469add login message 2 sec timeout859bfe6Improve Core side connection handling and fix Periphery -> Core error report9eb32f9store attempted public keys📊 Changes
408 files changed (+26170 additions, -14284 deletions)
View changed files
📝
.vscode/resolver.code-snippets(+5 -5)📝
Cargo.lock(+873 -811)📝
Cargo.toml(+44 -34)➕
action/build.ts(+2 -0)➕
action/deno.json(+5 -0)➕
action/deploy-fe.ts(+4 -0)➕
action/deploy.ts(+2 -0)➕
action/run.ts(+52 -0)📝
bin/binaries.Dockerfile(+3 -3)📝
bin/chef.binaries.Dockerfile(+3 -3)📝
bin/cli/Cargo.toml(+3 -0)📝
bin/cli/aio.Dockerfile(+3 -3)📝
bin/cli/multi-arch.Dockerfile(+2 -2)📝
bin/cli/single-arch.Dockerfile(+2 -2)📝
bin/cli/src/command/container.rs(+4 -2)📝
bin/cli/src/command/database.rs(+46 -0)📝
bin/cli/src/command/execute.rs(+14 -0)📝
bin/cli/src/command/list.rs(+52 -6)📝
bin/cli/src/command/mod.rs(+1 -0)➕
bin/cli/src/command/terminal.rs(+334 -0)...and 80 more files
📄 Description
komodo.execute_terminal/komodo.execute_container_execchanges -- see Terminals section below.Changelog
I'm very excited to bring you Komodo v2. The major improvements are:
Periphery → Core Connection 🦎
One of the major limitations in Komodo v1 was that Core always had to establish the connection to Periphery. In many setups, this was not the optimal connection strategy, and would often require the usage of a VPN to establish the connection securely.
Now with v2, Periphery can be configured to establish an outbound connection to Core, and communication with Core will be multiplexed over this connection. #281
Existing Core → Periphery connections also continue working, and no configuration changes are required to update from Komodo v1.
Ideally Komodo Core should be served over HTTPS with certificates recognized by Periphery, however it also works for Periphery to connect to Core over
ws://..., as well as insecure TLS (untrusted certificates) if you setPERIPHERY_CORE_TLS_INSECURE_SKIP_VERIFY=true.It is usually both easier and more secure to use this Periphery → Core connection method, and there isn't much other difference or downside. The default compose configuration has changed to this method, and I recommend most users migrate their setups when convenient.
periphery.config.toml
If using a reverse proxy with Komodo Core, you can limit the IPs which can connect to the Periphery endpoint. For example with Caddy:
Private / Public Key Authentication 🦎
The other limitation was the usage of a
passkeyfor Core to authenticate to Periphery. This was not a secure usage pattern for 2 reasons:While this
passkeypattern remains supported for backward compatibility (only Core -> Periphery direction), users looking to move to Periphery -> Core (or increase Core -> Periphery security) can now replace their passkeys with paired private / public keys.If you point to key files that don't exist yet, they will be generated. While the keys are
opensslcompatible, there is no need to manually generate keys.core.config.toml
periphery.config.toml
The authentication is accomplished using a Noise XX handshake via the snow library.
Automatic Key Rotation 🦎
Storing the private keys in dedicated files allows for easy automatic rotation of key pairs. To rotate a Server's key, Core sends the
RotatePrivateKeyrequest to Periphery, which then generates a new key pair, and returns the public key back to Core to update the allowed public key in the Database. The new private key stays local to each Periphery agent and is never exposed to the network. Note that it only works for Servers that are currently connected, if a Server cannot be reached, the rotation will be skipped for that Server.Similar to the "Backup Core Database" and "Global Auto Update" default system Procedures, one for key rotation will now be generated during first database initialization. Here is the TOML:
Server Onboarding 🦎
You can now make Onboarding Keys in Settings / Onboarding page. Giving one of these to Periphery allows itself to "onboard" as a new Server in Komodo. These keys are only used for this purpose, and cannot be used as the Periphery private key itself. They aren't needed if the Server already exists.
If you would like, you can make multiple onboarding keys, and depending on the key used to onboard, the created Server will inherit the configured Tags, as well as the configuration from the optional template Server.
periphery.config.toml
Terminals
In v1, the Terminal feature set grew slowly over the releases, and the implementations needed refinement. For example, Servers could create multiple Terminal tabs, but the Container was limited to a single Terminal. Additionally, access to Terminals was hidden behind multiple clicks -- first navigate to Server / Container, then Terminal tab, etc.
The issue stemmed from the implementation placing "Container" type Terminals as a subset of "Server" type Terminals. This is now refactored to "flatten" the implementation -- There is now a single "Terminal" type, with possible sub-types being "Server" or "Container". In other words, the different Terminal types move from a "Parent - Child" relationship to a "Sibling" relationship, making the implementations between Server and Container sub-types more straightforward and consistent.
The first thing to notice is the new dedicated "Terminals" page. This provides a birds-eye view of active Terminal sessions for easier management. This page includes all the expected "Create", "Connect", "Delete" functionality, enabling usage of this feature entirely from this page.
docker attach ...is now supported.sshanalog --km ssh <SERVER>.🚨Breaking Action change
Instead of
komodo.execute_terminalandkomodo.execute_container_exec, use the updated methods🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.