• Added authorization tokens module to allow
    • Having more than one device controlling the server
    • Refreshing the current token
    • Obtaining a recovery token

API changes

  • /auth/tokens added
  • /auth/new_device added
  • Public endpoint /auth/new_device/authorize added.
  • /auth/recovery_token added
  • Public endpoint /auth/recovery_token/use added.

New migrations

  • [[migrations#Create tokens JSON file|Migrate to new tokens storage]]


Released on 26 Jan 2022

  • Added [[migrations|migration module]] which handles one-shot actions which cannot be done by nixos-configuration.
  • Added [[migrations#Fix NixOS configuration branch|migration]] which changes rolling-testing branch to master, bug introduced in 0.4.0 version of the app.


Released on 9 Dec 2021

  • Added system configuration endpoints.
  • SSH management.
  • Backups controller.
  • Systemd is now used for system rebuilds.
  • WriteUserData and ReadUserData utils added to reduce boilerplate of file locking.
  • Unit tests are now a thing.

API changes

  • /system/upgrade is now /system/configuration/upgrade.
  • /api/version added.
  • /services/ssh added.
  • /services/ssh/<username> added.
  • /configuration/timezone added.
  • /configuration/autoUpgrade added.
  • /restic/backblaze/config added.
  • /system/configuration/pull added.
  • /services/restic/backup/reload added.

Pre-1.1.0 changes

This is an API refactoring stage. There was no endpoint to retrieve API version, but these all were referenced as 1.1.0 version in code.

Input sanitization, added swagger

Released on 17 Nov 2021

  • Addressed [[vulnerabilities#SPCVE-0001|SPCVE-0001]].
  • Added Swagger documentation.

Add basic API auth

Released on 16 Nov 2021

  • Added basic token auth.

Move to JSON controlled server settings

Released on 16 Nov 2021

  • Assumes server already moved to JSON-controlled Nix config.
  • System is now configured by usage of userdata.json.
  • File locking is used now.


Released on 12 Nov 2021

API changes

  • /systemVersion is now /system/version.
  • /getDKIM is now /services/mailserver/dkim.
  • /pythonVersion is now /system/version/pythonVersion.
  • /users/create is now POST on /users.
  • /users/deleteUser is now DELETE on /users.
  • /services/SERVICE_NAME/enable and /services/SERVICE_NAME/disable now also return message in their responses.
  • /services/ssh/key/send: response field result renamed to status.

Other changes

  • Moved to Python 3.9.
  • Moved to flask_restful's Resource objects.
  • distutils is deprecated, moved to setuptools.

Code formatting

Black is used for code formatting.

No linting rules applied yet.