This is a beta release. Please make a hub backup before upgrading.
Version 0.12.0 adds the ability for agents to initiate an outgoing connection to the hub.
It also introduces universal tokens, which can be used to register systems without needing to add them manually in the hub. It also allows you to deploy multiple agents with the same configuration, which should make cluster deployments easier.
Please report issues or provide feedback in #951. Thanks!
Upgrading
Docker: Switch to the :edge tag.
Other: This is the first beta release so I'm not sure how the different package managers handle it. To run manually, download the new binary, replace the old one, then add the new env vars and restart the service. I'm working on updating the install scripts and will look further into the package manager situation tomorrow.
Details
The WebSocket connection works in tandem with the agent's existing SSH server. If the agent connects successfully via WebSocket it will stop the SSH server. Likewise, if the agent connects via SSH it will stop attempting to connect via WebSocket.
Note: Don't add the HUB_URL env var to an agent that connects to multiple hubs. This isn't supported yet with WebSocket. Otherwise everything should be fully backwards compatible.
The agent gets two new environment variables:
HUB_URL: The URL of the hub.
TOKEN: The token associated with the system, provided in the hub.
You can copy these values for existing systems in the hub at /settings/tokens.
WebSocket authentication
We use a mutual authentication handshake that ensures both parties are trusted before any data is exchanged. Let me know if you have ideas for improvement.
Initial connection and token verification: The agent initiates a WebSocket connection to the hub. It includes a unique registration token as an HTTP header during the upgrade request. The hub verifies that the token is associated with an existing system before upgrading the connection.
Hub challenge: To prove its identity to the agent, the hub signs the token using its private key and sends the signature back to the agent. The agent verifies the signature using its public key.
Fingerprint authentication: After verifying the hub, the agent responds by sending its fingerprint. This fingerprint is a secure hash of unique identifiers, locking the agent's registration to the machine it's running on. The hub verifies the received fingerprint against the one stored for the system. If they match, the connection is authorized.
If you are using Part-DB it would be helpful if you fill out this short survey on your usage of Part-DB (Google Forms): https://forms.gle/Q15twx3YYq3qCNfe8
Tip
There is a new experimental docker image, which is much faster. See this post for more info.
Tip
You can help to translate Part-DB to other languages. See this post for more info.
New features
Added option to disable image overlay on part detail pages (#960, thanks @d-buchmann)
Allow to use the percentage sign directly as unit in parameters, without needing to latex escape it
Pass supplier part number info to KiCad as custom field (#955, thanks @barisgit)
Add fields for KiCost KiCad plugin, so that you can easily create a BOM from the information (#910)
Bug fixes
Fixed typos in info provider description (#942, thanks @d-buchmann)
Link project root node to edit project page instead of listing all parts (#957, thanks @d-buchmann)
Fixed problems if parameter value was 0 (#959, thanks @d-buchmann)
Added support for LDAP login and enhanced parameter consistency for refresh/logout commands. Allowed overriding the mode in refresh and logout commands to be inline with login (#25132)
The login method now accepts a payload object instead of separate email and password parameters.
This enables support for both standard and LDAP authentication, but requires updates to code that previously called sdk.login(email, password).
The new usage is sdk.login({ email, password }) or sdk.login({ identifier, password }) for LDAP.
The refresh and logout command method parameters have been updated to be consistent across usage. The functions now accept an options object instead of their previous regular parameters.
For example the new usage for refresh is sdk.request(refresh({ mode: "json", refresh_token })) instead of sdk.request(refresh('json', refresh_token)).
@directus/api
Fixed manual flows to only trigger with appropriate permissions (#25354 by @br41nslug)
@directus/sdk
Added support for LDAP login and enhanced parameter consistency for refresh/logout commands. Allowed overriding the mode in refresh and logout commands to be inline with login (#25132 by @ComfortablyCoding)
Breaking change: Due to the security reason, the "Console" feature is now disabled by default. If you need this feature and understand the risk, you can enable it via the environment variable DOCKGE_ENABLE_CONSOLE=true.
Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has
s been included in one of the pull requests.
Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests.
Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests.
How to setup multiple instances
Assume that you have 4 Dockge instances currently.
Find one Dockge instance as your primary Dockge
Login to your primary Dockge
In the homepage, you can connect to other Dockge instances by clicking New Agent.
Now you should see all instances are online and all stacks across all Dockge instances are in the stack list.
How it works?
Your browser only need to connect to Dockge 1. Dockge 2/3/4 are connected from Dockge 1.
Dockge 1 works like a proxy, it will forward requests/responses from Dockge 2/3/4 to your browser.
Added a new language: Bahasa Indonesia (Thanks @NexiaMoe)
Please let me know if your username is missing, if your pull request has been merged in this version, or your commit has been included in one of the pull requests.
How to switch to the beta version?
Open dockge's compose.yaml and change the image tag from 1 to beta like: