Changelog
- df25b0d add --mode flag to run command
- 2a898b3 add -v|--volume to bind mount host path into a service container
- 5cb765d add Docker gRPC service to create and start a Docker container on machine
- b236994 add EmptyResponse common message
- 708e14a add Exec and ExecMulti methods to corrosion API client
- 6d39174 add Healthy method to Container that derives it from status string
- 16120b8 add ListContainers and RemoveContainer methods to Docker service
- 1fb8a3d add ListServices method and ls CLI command
- 5621a84 add Mode to Service entity
- 43ddb5c add PullImage method to gRPC Docker service
- 4de7ecd add String() method for PortSpec to convert to publish format
- 2134f3c add a stub for Caddyfile controller
- 6d1c3aa add basic client TCPConnector to directly connect to a gRPC endpoint
- 349dd0d add basic e2e cluster lifecycle test
- bfbcec3 add caddy/v2 dependency to generate a config
- c635847 add comments
- c2b466b add common Metadata message to be injected in reply messages by gRPC proxy
- 73d41c7 add compose-like progress for running service
- f7c4490 add diagram for landing page with drawio source
- 5504951 add e2e test for global service creation and removal
- e123f72 add exponential backoff for network errors in corrosion client
- c29fa57 add favicons
- 34316c7 add helper Empty message
- 8e53fd4 add how it works section with diagram
- 6e0df53 add in docker service runner for corrosion
- e73e389 add index on containers.machine_id
- 4ec87db add init machine to store when initialising a cluster
- bda1123 add install_cli.sh script to be donwloaded at get.uncloud.run
- 5061097 add landing section to follow the journey and subscribe via email
- bb96746 add logging for starting/restarting corrosion service
- fa54584 add logo and project name
- 085ee28 add make targets to build and push corrosion image
- 24a824b add make targets to build and push ucind image
- 3c1d220 add methods to create, update, list, delete containers in store
- 336bdf9 add minor log
- e5bda92 add opptimistic sleep on corrosion service start to wait for schema initialisation
- daada3b add service inspect command, introduce squirrel for sql query building
- f85b5dd add service rm CLI command
- 8db7ac8 add subprocess corrosion service runner
- 3d5fe0a add support for tcp cluster connections in uncloud config
- 2819ba6 add sync_status field to containers table
- b016252 add terminal demo to hero section
- d7bad5e add todo
- 40f9298 add updated_at field to containers table
- 848abbd add validation for PortSpec
- cbe7c56 add value proposition section: Cloud-like experience you control
- 9755a69 allow one2many for ListContainers
- 5c74b09 allow running a service on a specified machine
- 94186b2 allow to subscribe to machine changes in the cluster store
- 1bcb883 auto resubscribe a corrosion subscription if an error occurs
- ee580df automatically rotate WG peer endpoints if can't establish a connection
- 8bfb3b8 basic validation for hostname in port publishing
- e9d0768 build corrosion image based on wolfi]
- 7b98ed3 calculate WG peer connection status
- b25938a clean up corrosion systemd service
- e82b78d comment DB schema
- 911522c comment out alpinejs
- 69c9167 configure corrosion bootstrap peers when initialising a machine
- 741378d create containers table in Corrosion store
- 9fcc319 create corrosion config
- 0effba0 create corrosion store when initialising machine
- 4479490 create custom NewSlogTextHandler log handler to override the json one patched by caddy pkg
- 26df674 define PortSpec type for publishing ports
- c3ba43a delete old non-distributed cluster state, fix storing endpoints in store
- e851f25 delete removed Docker containers from store, sync only uncloud labeled
- 3ee7cb6 describe features on landing
- 9dbcf1e do not build and deploy uncloud binary to dev machines
- aa236aa do not init corrosion data dir in install.sh
- 2f6c988 do not rotate endpoints on daemon restart, handle endpoint changes on established reverse peer connections
- f2e7307 enable Kit email subscription form
- 0652123 encode and decode published ports using container labels
- 5fe77c6 exclude Docker bridge br-[0-9a-f]{12} interfaces from machine routable IPs
- a4be451 find first available machine for running a service
- 3f7726e fix SlogTextHandler to respect minimum log level
- bee101a fix asset template in .goreleaser config
- 386e4e2 fix context in PullImage
- 6f9fc69 fix corrosion data dir, add reload to systemd unit
- c0dff56 fix filter unmarshalling for list containers
- c275273 fix install.sh to start uncloud.service after installing all systemd units
- 092fe25 fix navbar on mobile
- 0b5dd2f fix network peer configuration when just joining the cluster before store is synced
- e6df331 fix options for machine list command
- 2c0cf28 fix peer status persistence, update status every second
- 042b44c fix port binding for host ports
- 1316dd3 fix proxy Director usage and close on shutdown
- 3ce9c8b fix run command, support 1 replica and global mode
- 190d0de fix warnings on landing
- 2fd1ee2 fix: access to /run/uncloud.sock for a non-root user when initialising a fresh machine
- 2eff7d1 format
- bb77ff9 format
- 8a3f003 format machine command flags
- 11612a8 forward NotFound errors from StartContainer and RemoveContainer
- 5c96f75 generate a name for the service
- 7556f8c generate basic caddy.json with empty http and https servers
- 2b3f325 generate caddy config with routes from published http(s) ports
- 035601d generate container name and assign service labels to container
- 6951221 github and get started links in navbar
- cedafd0 implement ClusterMembershipStates for corrosion admin client
- 9cb4b35 implement PortSpec parsing
- 6d4698f implement Query in corrosion API client
- 88ce2d5 implement RunService for replicated mode with only 1 replica
- 2727c3c implement RunService in global mode and RemoveService
- 93dfa5c implement admin client for Corrosion admin API
- 99c9aab implement more consistent InspectService that broadcasts Docker requests to all machines
- b73577e implement subscription in corrosion client
- 5094149 improve error message for adding machine that already exists in the cluster
- 22bca16 include alpha-numeric random string generation in secret package
- 95175d1 init Dockerfile to run machine in container
- 6eb373e init InspectService method
- 667ecad init cluster store backed by corrosion
- c80de16 init corrosion API client
- bd0e7f4 init corrosion admin client in machine
- 18ec186 init landing page template
- 7378500 init ucind (Uncloud in Docker) provisioner
- 7aa7a9f init ucind CLI commands
- c80c75e install.sh: download corrosion binary from github release
- 498d35e install.sh: install corrosion systemd service
- cf5818d merge ucind cluster configuration to the user’s uncloud config
- 7d47d27 minor
- bf10b21 minor comment
- 2835eda minor landing wording update
- 21d55dc minor refactor e2e cluster test
- 9c9e143 minor rename
- deedbcb minor validation for port
- 19d53c4 move Docker management from network controller to standalone DockerManager
- 24371eb move Docker manager to docker package
- 5e79697 move RunService from CLI to the client, print output in the command
- 3ac166e move common api types to api package
- 17b96a8 move default uncloud socket to /run/uncloud/uncloud.sock
- a6ccd60 move fs and file ownership related funcs to fs package
- 5c1a3dd move generic docker types to top level docker package
- e8908ce parse --publish ports into spec
- 4088fdf print image pull progress when running a service
- bdd034d proper terminate all background processes in ucind containers
- 871fd8c proxy uncloud.sock socket to tcp port when running machine in container
- ca607ee pull corrosion image if doesn't exist
- a40fd61 refactor RemoveService using InspectService
- 035f448 refactor cluster network related constants
- 81cf5f5 refactor corrosion admin client to establish a connection on every command
- 06a4001 refactor corrosion client to accept custom http client, fix backoff for every request
- 2f7463e refactor corrosion into interface service
- 68845e7 refactor corrosion service init for machine
- a4247b0 refactor grpc proxy backends to use machine management IP in metadata, including local responses
- 00dbbec refactor grpc-proxy backends to enhance responses from local backends with metadata in one2many mode
- 6736839 refactor machine ls command: move formatter logic to the command
- 2c62e1f refactor machine name generation using secrets package
- d922f7b reformat index.html
- 8fbf406 relax relationship between corrosion service, init cluster with new store
- 417427b remove duplicate ErrNotFound in client
- be2a26e remove example from run command
- 1ec3376 remove indentations from corrosion config
- b688742 remove the concept of cluster user (at least the current implementation)
- 8eea34d remove wrong TODO
- b310248 rename site -> website
- d36429e replace API server with transparent gRPC proxy that routes requests to local machine API
- c3d3a42 run corrosion in Docker as uncloud user, bind mount data dir
- 01a71b4 run each container in global service in parallel
- d315958 run service container in uncloud Docker network
- 5bf3cba sketch run command
- 840943b split corrosion client subscription in a separate file
- 518eae9 split corrosion queries in a separate file, make subscription more consistent with queries
- 3287691 start corrosion service even when machine is not initialised to be able to init cluster
- 77890b8 strip one proto layer in ListMachines method
- 54a8b09 subscribe to Docker container events with backoff
- 6b80ef9 subscribe to container changes in Caddyfile controller
- 4493bb3 support gRPC proxy to remote backends
- 5da1fc5 support providing TEST_CLUSTER_NAME for e2e tests
- b4c2ec3 sync new and updated containers to cluster store, no deletion yet
- d5f0bca ucind: call cleanup on exit as well, e.g. main process crash
- cd60d51 ucind: create machines in containers with published API ports
- 4876712 ucind: init cluster with created machines
- faf3378 ucind: wait for machine to become ready through polling API
- 913fb2d update ListMachines to include machine state from Corrosion membership
- d02fc4d update Makefile to remove built binary
- 91f8709 update README with basic Quick start
- 6daa129 update TODO
- 410f744 update dind machine image to run dockerd in background
- 6a4a7f2 update e2e lifecycle test to test store reconciliation on every node
- f06dd86 update existing WG peers instead of replacing to not interrupt and lose track of handshakes
- 6c19708 update hero
- ba67b96 update install.sh to download uncloudd binary from the latest GitHub release
- 2e00632 update landing CSS
- fd3ad91 update network controller to reconfigure network peers on machine changes
- 5377899 update publish flag description with lb and host formats
- 21e70dd update quick start links on landing
- a54666a update run command to run a stub service container on the connected node
- 3e9718f update store schema when configuring corrosion, create machines table
- 411c339 upgrade to Go 1.23
- 61dc972 use ls command instead of list by default
- c70c8a6 validate machine info before returning in ListMachine
- 8bddbec wait for test cluster to be ready (all machines up)
- 3a64477 watch for peer endpoint changes and preserve in machine state
- 1c8e60a workaround cgroup race in dind