Uncloud 0.9.0 Release Notes
This release includes critical Docker 28.2.0+ compatibility fixes, sets better defaults for container logging, and includes minor housekeeping improvements.
Upgrade to 0.9.0
Uncloud CLI locally
To upgrade the Uncloud CLI (uc) locally:
# Homebrew (macOS, Linux)
brew upgrade uncloud
# Install script (macOS, Linux)
curl -fsS https://get.uncloud.run/install.sh | shMachine daemon
To upgrade the Uncloud daemon on your machines, run the following commands on each machine:
# AMD64
curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.9.0/uncloudd_linux_amd64.tar.gz
# ARM64
# curl -fsSL -o uncloudd.tar.gz https://github.com/psviderski/uncloud/releases/download/v0.9.0/uncloudd_linux_arm64.tar.gz
tar -xf uncloudd.tar.gz
sudo install uncloudd /usr/local/bin/uncloudd
rm uncloudd uncloudd.tar.gz
sudo systemctl restart uncloudBug fixes
Docker 28.2.0+ compatibility
Fixed connectivity between containers across machines with Docker 28.2.0 and later versions. The fix only works for new clusters and new machines added to existing clusters.
Starting with Docker 28.2.0 (moby/moby#49832), Docker networks must explicitly specify from which host interfaces they allow direct routing to their containers. This is done by specifying the com.docker.network.bridge.trusted_host_interfaces option when creating the network. We now create the uncloud Docker network with com.docker.network.bridge.trusted_host_interfaces=uncloud option to allow the WireGuard mesh network (uncloud interface) to route traffic to uncloud-managed containers.
If you upgraded Docker to 28.2.0 or a later version on an existing machine, you need to manually recreate the uncloud Docker network with the com.docker.network.bridge.trusted_host_interfaces=uncloud option on it to fix cross-machine communication. We prepared the migration script that will do that for you.
⚠️ Note: the migration process may cause temporary service disruption. Download and run it on your machines:
curl -O https://raw.githubusercontent.com/psviderski/uncloud/refs/heads/main/scripts/migrate_docker_28.2.0.sh
chmod +x migrate_docker_28.2.0.sh
sudo ./migrate_docker_28.2.0.sh
rm migrate_docker_28.2.0.sh
New features
- The default log driver for all service containers is set to
local, which preserves 100MB of log messages per container and uses automatic compression to reduce the size on disk. There is no longer a need to manually specify the log driver limits to prevent logs from filling up the disk space. Contributed by @zasdaym. - Added unofficial Debian package repository maintained by @dariogriffo.
Improvements
- Uncloud-managed volumes are labeled with
uncloud.managedto make it easier to identify and manage them. - Anonymous volumes are now properly cleaned up when removing service containers.
Developer Experience
- Protobuf compiler and Go plugins are now managed through
mise, using consistent versions across all development environments. - Added CI checks for protobuf generation on multiple platforms.
- Added
.editorconfigfor consistent code formatting across different editors.
Contributors
Special thanks to our contributors for this release:
- @dariogriffo - Debian package repository
- @tonyo - Multiple improvements including
.editorconfigand build fixes - @krishna-santosh - Documentation fixes
- @zasdaym - Default log driver implementation
Changelog
- f75afa0 Merge branch 'pasha/machine-rm'
- 638f320 build: Install protobuf tools via mise (#77)
- 2f35ac6 chore: Add .editorconfig
- 8e0a24e chore: add donate button in README
- e3e39dd chore: create FUNDING.yml
- 0f38b12 chore: fail 'machine rm' as not fully implemented
- a73cbfd chore: hide incomplete machine rm command from help output
- 2b4da1e chore: remove anonymous volumes created by service containers when removing
them - 4c77fe2 chore: tidy up
- 5c8beb8 chore: tidy up go.mod, remove toolchain
- 44549c0 feat: Label new volumes as managed by uncloud (#79)
- 535b91f feat: add stub for Reset method in machine API
- 59b96cc feat: init 'machine rm' command that outputs service containers that will be
removed - be8b4f0 feat: remove containers on machine before removing it
- 1abadae feat: set default log driver for service containers to 'local' (#83)
- 3b1ce42 fix(docs): add missing word to complete the sentence (#82)
- 26f34df fix: Improve output for build operations
- 89fb9ef fix: Use GITHUB_TOKEN to increase the rate limit for mise action
- 55773e9 fix: allow direct routing from WireGuard mesh to containers for Docker
28.2.0+ - 3b89af4 fix: e2e compose build test on macOS with Docker Desktop