Skip to content

Releases: juanfont/headscale

v0.23.0-alpha12

24 May 08:55
c8ebbed
Compare
Choose a tag to compare
v0.23.0-alpha12 Pre-release
Pre-release

Changes

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • Change the structure of database configuration, see config-example.yaml for the new structure. #1700
    • Old structure has been remove and the configuration must be converted.
    • Adds additional configuration for PostgreSQL for setting max open, idle connection and idle connection lifetime.
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.38
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611
  • Docker images are now built with goreleaser (ko) #1716 #1763
    • Entrypoint of container image has changed from shell to headscale, require change from headscale serve to serve
    • /var/lib/headscale and /var/run/headscale is no longer created automatically, see container docs
  • Prefixes are now defined per v4 and v6 range. #1756
    • ip_prefixes option is now prefixes.v4 and prefixes.v6
    • prefixes.allocation can be set to assign IPs at sequential or random. #1869

Changes

  • Use versioned migrations #1644
  • Make the OIDC callback page better #1484
  • SSH support #1487
  • State management has been improved #1492
  • Use error group handling to ensure tests actually pass #1535 based on #1460
  • Fix hang on SIGTERM #1492 taken from #1480
  • Send logs to stderr by default #1524
  • Fix TS-2023-006 security UPnP issue #1563
  • Turn off gRPC logging #1640 fixes #1259
  • Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565
  • Add support for deleting api keys #1702
  • Add command to backfill IP addresses for nodes missing IPs from configured prefixes. #1869
  • Log available update as warning #1877
  • Add autogroup:internet to Policy #1917
  • Restore foreign keys and add constraints #1562

Commits

v0.23.0-alpha11

02 May 11:49
a9c568c
Compare
Choose a tag to compare
v0.23.0-alpha11 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • Change the structure of database configuration, see config-example.yaml for the new structure. #1700
    • Old structure has been remove and the configuration must be converted.
    • Adds additional configuration for PostgreSQL for setting max open, idle conection and idle connection lifetime.
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.38
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611
  • Docker images are now built with goreleaser (ko) #1716 #1763
    • Entrypoint of container image has changed from shell to headscale, require change from headscale serve to serve
    • /var/lib/headscale and /var/run/headscale is no longer created automatically, see container docs
  • Prefixes are now defined per v4 and v6 range. #1756
    • ip_prefixes option is now prefixes.v4 and prefixes.v6
    • prefixes.allocation can be set to assign IPs at sequential or random. #1869

Changes

  • Use versioned migrations #1644
  • Make the OIDC callback page better #1484
  • SSH support #1487
  • State management has been improved #1492
  • Use error group handling to ensure tests actually pass #1535 based on #1460
  • Fix hang on SIGTERM #1492 taken from #1480
  • Send logs to stderr by default #1524
  • Fix TS-2023-006 security UPnP issue #1563
  • Turn off gRPC logging #1640 fixes #1259
  • Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565
  • Add support for deleting api keys #1702
  • Add command to backfill IP addresses for nodes missing IPs from configured prefixes. #1869
  • Log available update as warning #1877
  • Add autogroup:internet to Policy #1917

Commits

v0.23.0-alpha10

30 Apr 07:25
87e2ae4
Compare
Choose a tag to compare
v0.23.0-alpha10 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • Change the structure of database configuration, see config-example.yaml for the new structure. #1700
    • Old structure has been remove and the configuration must be converted.
    • Adds additional configuration for PostgreSQL for setting max open, idle conection and idle connection lifetime.
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.38
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611
  • Docker images are now built with goreleaser (ko) #1716 #1763
    • Entrypoint of container image has changed from shell to headscale, require change from headscale serve to serve
    • /var/lib/headscale and /var/run/headscale is no longer created automatically, see container docs
  • Prefixes are now defined per v4 and v6 range. #1756
    • ip_prefixes option is now prefixes.v4 and prefixes.v6
    • prefixes.allocation can be set to assign IPs at sequential or random. #1869

Changes

  • Use versioned migrations #1644
  • Make the OIDC callback page better #1484
  • SSH support #1487
  • State management has been improved #1492
  • Use error group handling to ensure tests actually pass #1535 based on #1460
  • Fix hang on SIGTERM #1492 taken from #1480
  • Send logs to stderr by default #1524
  • Fix TS-2023-006 security UPnP issue #1563
  • Turn off gRPC logging #1640 fixes #1259
  • Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565
  • Add support for deleting api keys #1702
  • Add command to backfill IP addresses for nodes missing IPs from configured prefixes. #1869
  • Log available update as warning #1877
  • Add autogroup:internet to Policy #1917

Commits

  • 10e37ec Add contributing document
  • ff427cc Apply suggestions from code review
  • 3927784 Apply suggestions from code review
  • aba4b36 Clarify relation with Tailscale (#1908)
  • fef8261 Do not access node ID when node is not found (#1912)
  • 50a7d15 Update CONTRIBUTING.md
  • d740ee4 Update CONTRIBUTING.md
  • 87e2ae4 add autogroup:internet, fix reduce filter rules (#1917)
  • cb0b495 batch updates in notifier (#1905)
  • 9229d17 remove examples/, and kustomize (#1906)
  • c62d557 remove multistep build, build go last, allowing cached build layers (#1903)
  • 318d5d2 replace issue templates with github issue forms

v0.23.0-alpha9

21 Apr 21:27
bd04792
Compare
Choose a tag to compare
v0.23.0-alpha9 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • Change the structure of database configuration, see config-example.yaml for the new structure. #1700
    • Old structure has been remove and the configuration must be converted.
    • Adds additional configuration for PostgreSQL for setting max open, idle conection and idle connection lifetime.
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.38
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611
  • Docker images are now built with goreleaser (ko) #1716 #1763
    • Entrypoint of container image has changed from shell to headscale, require change from headscale serve to serve
    • /var/lib/headscale and /var/run/headscale is no longer created automatically, see container docs
  • Prefixes are now defined per v4 and v6 range. #1756
    • ip_prefixes option is now prefixes.v4 and prefixes.v6
    • prefixes.allocation can be set to assign IPs at sequential or random. #1869

Changes

  • Use versioned migrations #1644
  • Make the OIDC callback page better #1484
  • SSH support #1487
  • State management has been improved #1492
  • Use error group handling to ensure tests actually pass #1535 based on #1460
  • Fix hang on SIGTERM #1492 taken from #1480
  • Send logs to stderr by default #1524
  • Fix TS-2023-006 security UPnP issue #1563
  • Turn off gRPC logging #1640 fixes #1259
  • Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565
  • Add support for deleting api keys #1702
  • Add command to backfill IP addresses for nodes missing IPs from configured prefixes. #1869

Commits

v0.23.0-alpha8

17 Apr 14:14
Compare
Choose a tag to compare
v0.23.0-alpha8 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • Change the structure of database configuration, see config-example.yaml for the new structure. #1700
    • Old structure has been remove and the configuration must be converted.
    • Adds additional configuration for PostgreSQL for setting max open, idle conection and idle connection lifetime.
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.38
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611
  • Docker images are now built with goreleaser (ko) #1716 #1763
    • Entrypoint of container image has changed from shell to headscale, require change from headscale serve to serve
    • /var/lib/headscale and /var/run/headscale is no longer created automatically, see container docs
  • Prefixes are now defined per v4 and v6 range. #1756
    • ip_prefixes option is now prefixes.v4 and prefixes.v6
    • prefixes.allocation can be set to assign IPs at sequential or random. #1869

Changes

  • Use versioned migrations #1644
  • Make the OIDC callback page better #1484
  • SSH support #1487
  • State management has been improved #1492
  • Use error group handling to ensure tests actually pass #1535 based on #1460
  • Fix hang on SIGTERM #1492 taken from #1480
  • Send logs to stderr by default #1524
  • Fix TS-2023-006 security UPnP issue #1563
  • Turn off gRPC logging #1640 fixes #1259
  • Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565
  • Add support for deleting api keys #1702
  • Add command to backfill IP addresses for nodes missing IPs from configured prefixes. #1869

Commits

v0.23.0-alpha7

17 Apr 10:47
Compare
Choose a tag to compare
v0.23.0-alpha7 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • Change the structure of database configuration, see config-example.yaml for the new structure. #1700
    • Old structure has been remove and the configuration must be converted.
    • Adds additional configuration for PostgreSQL for setting max open, idle conection and idle connection lifetime.
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.38
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611
  • Docker images are now built with goreleaser (ko) #1716 #1763
    • Entrypoint of container image has changed from shell to headscale, require change from headscale serve to serve
    • /var/lib/headscale and /var/run/headscale is no longer created automatically, see container docs
  • Prefixes are now defined per v4 and v6 range. #1756
    • ip_prefixes option is now prefixes.v4 and prefixes.v6
    • prefixes.allocation can be set to assign IPs at sequential or random. #1869

Changes

  • Use versioned migrations #1644
  • Make the OIDC callback page better #1484
  • SSH support #1487
  • State management has been improved #1492
  • Use error group handling to ensure tests actually pass #1535 based on #1460
  • Fix hang on SIGTERM #1492 taken from #1480
  • Send logs to stderr by default #1524
  • Fix TS-2023-006 security UPnP issue #1563
  • Turn off gRPC logging #1640 fixes #1259
  • Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565
  • Add support for deleting api keys #1702
  • Add command to backfill IP addresses for nodes missing IPs from configured prefixes. #1869

Commits

v0.23.0-alpha5

19 Feb 13:13
7a920ee
Compare
Choose a tag to compare
v0.23.0-alpha5 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • Change the structure of database configuration, see config-example.yaml for the new structure. #1700
    • Old structure has been remove and the configuration must be converted.
    • Adds additional configuration for PostgreSQL for setting max open, idle conection and idle connection lifetime.
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.38
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611
  • Docker images are now built with goreleaser (ko) #1716 #1763
    • Entrypoint of container image has changed from shell to headscale, require change from headscale serve to serve
    • /var/lib/headscale and /var/run/headscale is no longer created automatically, see container docs
  • Prefixes are now defined per v4 and v6 range. #1756
    • ip_prefixes option is now prefixes.v4 and prefixes.v6

Changes

  • Use versioned migrations #1644
  • Make the OIDC callback page better #1484
  • SSH support #1487
  • State management has been improved #1492
  • Use error group handling to ensure tests actually pass #1535 based on #1460
  • Fix hang on SIGTERM #1492 taken from #1480
  • Send logs to stderr by default #1524
  • Fix TS-2023-006 security UPnP issue #1563
  • Turn off gRPC logging #1640 fixes #1259
  • Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565
  • Add support for deleting api keys #1702

Commits

v0.23.0-alpha4

15 Feb 09:35
c42f25b
Compare
Choose a tag to compare
v0.23.0-alpha4 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.38
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611

Changes

  • Use versioned migrations #1644
  • Make the OIDC callback page better #1484
  • SSH support #1487
  • State management has been improved #1492
  • Use error group handling to ensure tests actually pass #1535 based on #1460
  • Fix hang on SIGTERM #1492 taken from #1480
  • Send logs to stderr by default #1524
  • Fix TS-2023-006 security UPnP issue #1563
  • Turn off gRPC logging #1640 fixes #1259
  • Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565
  • Change the structure of database configuration, see config-example.yaml for the new structure. #1700
    • Old structure is now considered deprecated and will be removed in the future.
    • Adds additional configuration for PostgreSQL for setting max open, idle conection and idle connection lifetime.
  • Add support for deleting api keys #1702

Commits

v0.23.0-alpha3

18 Jan 16:40
1e22f17
Compare
Choose a tag to compare
v0.23.0-alpha3 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.36
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611

Changes

Use versioned migrations #1644
Make the OIDC callback page better #1484
SSH support #1487
State management has been improved #1492
Use error group handling to ensure tests actually pass #1535 based on #1460
Fix hang on SIGTERM #1492 taken from #1480
Send logs to stderr by default #1524
Fix TS-2023-006 security UPnP issue #1563
Turn off gRPC logging #1640 fixes #1259
Added the possibility to manually create a DERP-map entry which can be customized, instead of automatically creating it. #1565

Commits

  • 7e8bf4b Add Customization Options to DERP Map entry of integrated DERP server (#1565)
  • 054b06d add 1.54 and 1.56 to integration tests (#1652)
  • 55ca078 embed (hidden) tailsql for debugging (#1663)
  • 65376e2 ensure renabled auto-approve routes works (#1670)
  • a592ae5 fix issue where advertise tags causes hang (#1669)
  • 3b10328 implement selfupdate and pass expiry (#1647)
  • 1e22f17 node selfupdate and fix subnet router when ACL is enabled (#1673)

v0.23.0-alpha2

10 Dec 14:53
6049ec7
Compare
Choose a tag to compare
v0.23.0-alpha2 Pre-release
Pre-release

Changelog

This release is mainly a code reorganisation and refactoring, significantly improving the maintainability of the codebase. This should allow us to improve further and make it easier for the maintainers to keep on top of the project.

Please remember to always back up your database between versions

Here is a short summary of the broad topics of changes:

Code has been organised into modules, reducing use of global variables/objects, isolating concerns and “putting the right things in the logical place”.

The new policy and mapper package, containing the ACL/Policy logic and the logic for creating the data served to clients (the network “map”) has been rewritten and improved. This change has allowed us to finish SSH support and add additional tests throughout the code to ensure correctness.

The “poller”, or streaming logic has been rewritten and instead of keeping track of the latest updates, checking at a fixed interval, it now uses go channels, implemented in our new notifier package and it allows us to send updates to connected clients immediately. This should both improve performance and potential latency before a client picks up an update.

Headscale now supports sending “delta” updates, thanks to the new mapper and poller logic, allowing us to only inform nodes about new nodes, changed nodes and removed nodes. Previously we sent the entire state of the network every time an update was due.

While we have a pretty good test harness for validating our changes, we have rewritten over 10000 lines of code and bugs are expected. We need help testing this release. In addition, while we think the performance should in general be better, there might be regressions in parts of the platform, particularly where we prioritised correctness over speed.

There are also several bugfixes that has been encountered and fixed as part of implementing these changes, particularly
after improving the test harness as part of adopting #1460.

BREAKING

  • Code reorganisation, a lot of code has moved, please review the following PRs accordingly #1473
  • API: Machine is now Node #1553
  • Remove support for older Tailscale clients #1611
    • The latest supported client is 1.32
  • Headscale checks that at least one DERP is defined at start #1564
    • If no DERP is configured, the server will fail to start, this can be because it cannot load the DERPMap from file or url.
  • Embedded DERP server requires a private key #1611

Changes

Use versioned migrations #1644
Make the OIDC callback page better #1484
SSH support #1487
State management has been improved #1492
Use error group handling to ensure tests actually pass #1535 based on #1460
Fix hang on SIGTERM #1492 taken from #1480
Send logs to stderr by default #1524
Fix TS-2023-006 security UPnP issue #1563
Turn off gRPC logging #1640 fixes #1259

Commits