mirror of
https://github.com/moghtech/komodo.git
synced 2026-05-07 02:16:06 -05:00
[PR #889] [MERGED] 2.0.0 #8022
Reference in New Issue
Block a user
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: ✅ Merged
Merged: 3/24/2026
Merged by: @mbecker20
Base:
main← Head:2.0.0📝 Commits (10+)
5895fb8modularize openapi structs36ee7edmost of execute openapi24ed3cfserver / stack exec openapid893ae9most of write openapi93430f6more write openapi9a48edcadd the write openapi definitions5da48ecfmt and bump mogh auth8758c9fgen types18ffe63remove user api, mogh auth handles api keys4e3ecf7clean up📊 Changes
1078 files changed (+99299 additions, -62559 deletions)
View changed files
📝
.devcontainer/dev.compose.yaml(+9 -3)📝
.devcontainer/devcontainer.json(+9 -3)📝
.devcontainer/postCreate.sh(+7 -1)➕
.github/workflows/ci.yml(+56 -0)📝
.gitignore(+0 -4)📝
.vscode/resolver.code-snippets(+5 -5)📝
.vscode/tasks.json(+14 -14)📝
Cargo.lock(+2234 -1435)📝
Cargo.toml(+68 -69)➕
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(+4 -4)📝
bin/chef.binaries.Dockerfile(+4 -4)📝
bin/cli/Cargo.toml(+9 -4)📝
bin/cli/aio.Dockerfile(+3 -3)📝
bin/cli/multi-arch.Dockerfile(+3 -3)📝
bin/cli/single-arch.Dockerfile(+3 -3)...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:
Docker SwarmintegrationPeriphery → 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:
Note. Your reverse proxy should set
X-FORWARDED-HOSTheader to your Komodo Core domain, which caddy does by default.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
Also add mount
- keys:/config/keysto persist the generated keys files.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.