Release 0.0.4 (Alpha)
⚠️ ALPHA RELEASE ⚠️ All 0.0.x releases are considered alpha. Future 0.0.x releases will likely contain backwards incompatible changes which may require resetting your network. Expect bugs and missing features.
It's the moment we've all been waiting for: Windows support is finally here! While Isle is still unlikely to attract a large number of Windows users due to its lack of GUI, at least it has full feature-parity on all supported operating systems and a solid foundation to build on.
This release is backwards compatible with 0.0.3; you can safely upgrade without any migration steps or downtime.
Downloads
Windows
Linux (Debian)
Linux (Pacman)
Linux (Other)
Miscellaneous
These links provide files which aren't necessary for installation, but which some may find useful.
Checksums for all files in this release
GPG signature of the checksum file
Release Notes
All documentation related to the following changes has been updated accordingly in the Isle repo.
Windows Support
Yes, finally, it's here! Windows support has been the #1 todo item for years now, but the barrier has finally been broken. For a long time the primary blocker was lack of support in garage, which doesn't explicitly support Windows. I had tried multiple times to wrangle a fork of garage together which would work on the operating system, but it was only in the last few months that my efforts succeeded. Once that was done there were still a number of other incompatibilities which needed to be addressed: process management, implementing a new DNS server to replace dnsmasq, and of course developing a Windows installation binary.
The result of these efforts is 100% support on Windows, with no known feature-gaps or inconsistencies. The installation binary will automatically set up a Windows service which runs the Isle daemon, and the Isle command-line tool communicates with the daemon over a unix socket, just like on Linux. This same unix socket will eventually be used by the GUI to communicate with the daemon, but in the meantime a Windows user can do everything a Linux user can using the command-line.
Garage Layout Management
While Windows support is the big ticket item for this release, another notable change is related to how garage's cluster layout is managed. In previous releases the logic around removing a garage node (i.e. a storage allocation) from the cluster was a bit sketchy: because removing a storage allocation from a host resulted in garage being shut down, it wasn't possible for that host to remove itself from the cluster layout, and so it fell on other hosts to perform that task. This ended up causing race-conditions when adding storage allocations to the cluster, resulting in the new allocations being wrongly removed by other hosts.
The layout management logic has been completely reworked. Now the host which is having its storage allocation removed will not immediately shut down its corresponding garage instance, but will instead wait until that instance has been properly drained (something which also wasn't previously taking place) and then remove the instance from the cluster prior to shutting down the garage process. The logic for this is a bit more complex than the previous logic, but the result is more correct and much safer than before.
Other Minor Improvements
- The daemon has two new command-line options, `--log-file-path` and `--log-file-level`, which can be used to write logs to a file in addition to the console. The log file can have a different log level than the console, and the file will automatically rotate itself.
- `local-fs.target` has been added to the distributed Linux systemd service file under `After`.
- Isle is now using garage 1.0.1, to fix some bugs which we were encountering when adding a storage allocation.
- Isle is now using nebula 1.9.5, to fix a bug related to refreshing of DNS for lighthouse hosts.
- Default to using SQLite as the garage metadata db engine. The previous default, LMDB, has issues on machines with small amounts of RAM (like Raspberry Pis).
- Include `internal_inbound` and `internal_outbound` in `vpn firewall show` output, to help clarify which rules are automatically generated (e.g. due to storage allocations).
- Garage no longer gets restarted when there is a change to its configuration file, as there is no need for it.
- Nebula is no longer restarted when there is a change to its configuration file, instead it is signaled to do a hot reload. This is not supported on Windows, where the process will continue to be restarted on configuration change.
- dnsmasq has been replaced as Isle's DNS server of choice, as it does not support Windows. Isle now embeds its own custom DNS server, implemented using the excellent `github.com/miekg/dns` package.
- Configuration validation related to which ports and directories are being used is much more thorough.
- Bootstrap files are a bit smaller now, leaving out any information which is definitely not necessary to join a network.
- Daemon startup/shutdown has been sped up and made more resilient.
- The generation of releases has been further automated, including the generation of this very page you are reading (hello!)
- Many test improvements, as always.
Bug Fixes
- Fix default garage ports not being used in 'storage add'
- Fix sub-commands using passthrough args not splitting on '--'
- Fix issues with creating new storage allocations by improving logic around waiting for garage to be considered ready.
- Canceling configuration changes (e.g. adding/removing storage allocations, firewall rules, VPN public addresses, etc...) before they have completed will now correctly roll-back whatever partial changes were made during the operation.
- Performing configuration changes from two command-line calls simultaneously will now cause one of the calls to explicitly error, rather than silently dropping one of the changesets.
- Fix the server-side of the RPC logic not properly handling the 0 error code.