All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
⚠️ BREAKING CHANGE⚠️ AutoKuma now requires persistent storage:
AutoKuma previously relied on using an Uptime Kuma label on monitors to store internal data, allowing it to operate statelessly without requiring storage.
However, this approach had significant drawbacks: it always added a label to monitors managed by AutoKuma and only worked for monitors, not for other entities like notification providers, docker hosts, labels, etc.
Starting with this version, AutoKuma will instead track its monitors using a database that needs to be stored in a persistent location.
For a Docker Compose setup, you can use a named volume. Please refer to the example docker-compose.yml for guidance.To prevent data loss, AutoKuma will refuse to run if it detects any old monitors with an AutoKuma label. After adding a persistent storage location, AutoKuma will need to be started once with the environment variable
AUTOKUMA__MIGRATE=true
set to take over any existing monitors. This environment variable can be removed afterward. -
Access to environment variables in templates restricted to variables starting with
AUTOKUMA__ENV__
, see #97 -
Changed Monitor::proxy_id to Option, parsing now supports both numbers and strings, see #95
- All CLI commands now support reading multiple files/ids/slugs at once, as well as parsing arrays of objects where applicable, #74
- Access to
system_info
in templates, see [#2] - Ability to generate TOTP tokens from a TOTP secret
- Support for creating Tags from Labels, see #40
- File source now supports multiple entities per file, the ids will be named
<file_stem>[<index>]
accordingly, see #86 - Kubernetes integration, see #58
- File source now skips unsupported files rather then interrupting the whole sync, see #89
- File source now supports nested folders, the ids will be in the format
<folder>/<filename>
without the file extension, see #28 - Add missing retry_interval alias, see #96
- Support for multiple docker hosts, see #62
- Ability to specify custom tls cert when connecting to Uptime Kuma over HTTPS, see #66
- Ability to ignore invalid tls certs when connecting to Uptime Kuma over HTTPS, see #66
- Fix control sequences not being expanded in snippets, see #60
- Add missing
description
property, see #61 - Fix wrong name for
query
property of database monitors, see #65 - Add missing
upside_down
property alias, see #71 - Fix possible memory leak, see #41
- Add workaround for ntfy, see #72
- Enable SSL for docker connections (using DOCKER_HOST, DOCKER_CERT_PATH, DOCKER_TLS_VERIFY env vars), see #50
- Create monitors from docker swarm services, see #54
create_paused
property to create new monitors in paused state, see #53
- Add missing
query
property forsqlserver
,postgres
andmysql
, see #36 - Fix parsing of recurring maintenance with no effective date range, see #43
- Filter cyclic parent_name reference, see #56
- Transparently flatten arrays in static monitor definitions, see #51
- !! WARNING POTENTIAL BREAKING CHANGE !!: switch from custom templating to Tera
This change might break your current configuration if one of the following applies:- Your labels contain
{{
,}}
,{%
,%}
,{#
or#}
:
Wrap your labels in{% raw %}{% endraw %}
to ensure Tera does not try to parse them, e.g.:
kuma.mygroup.group.name: "This is a {{ Group }}"
->kuma.mygroup.group.name: "{% raw %}This is a {{ Group }}{% endraw %}"
- You are using Snippets with arguments:
The syntax for snippet arguments changed from{{@0}}
,{{@1}}
,{{@2}}
etc. to{{args[0]}}
,{{args[1]}}
,{{args[2]}}
etc.
- Your labels contain
- Static Monitors will be be postprocessed in the same way as monitors defined by container labels, see #33
- autokuma: connections not being closed when an error occurs during setup, see #11
- kuma-cli: docker-host management
- kuma-cli: colored output in pretty print mode
- autokuma: add on_delete config option, see #29
- kuma-cli: toml output format as it's not compatible with all data
- lenient vector parsing for
accepted_statuscodes
, see #23 - support for
push_token
, see #21 - Snippets for reduced boilerplate
- Release pipeline
- Ability to replace template values in tag names (as long as the tags start with the defined prefix), see #14
- Ability to load user-wide AutoKuma config
log_dir
config for storing logs as files
- Fixed parsing of
max_retries
andmax_redirects
, see #12
- Remove leading slash from container names in template values, see #14
- Added fallback for
static_monitors
- Fall back to
DOCKER_HOST
env variable when no socket_path is specified in AutoKuma docker config - add docker image for kuma-cli, see #5
- exclude parent_name when sending monitor data to server, see #8
- Make parsing of ports more lenient, see #9
- Memory leak in kuma-client #1
- Fix documentation for maintenance cli subcommand #4
- Allow deserialization of maintenance timerange without seconds #4
- new CLI client for Uptime Kuma
kuma-cli
- split package into
kuma-client
andautokuma
- renamed env var
AUTOKUMA__KUMA__TAG_NAME
toAUTOKUMA__TAG_NAME
due to package splitting - renamed env var
AUTOKUMA__KUMA__TAG_COLOR
toAUTOKUMA__TAG_COLOR
due to package splitting - renamed env var
AUTOKUMA__KUMA__DEFAULT_SETTINGS
toAUTOKUMA__DEFAULT_SETTINGS
due to package splitting - automatically append
/socket.io/
toKUMA__URL
- Make Connection timeout configurable [
AUTOKUMA__KUMA__CONNECT_TIMEOUT
] - Make Call timeout configurable [
AUTOKUMA__KUMA__CALL_TIMEOUT
] - Allow defining default settings [
AUTOKUMA__KUMA__DEFAULT_SETTINGS
] - Add templates for setting values
- Ability to load "static" monitors from a directory [
AUTOKUMA__STATIC_MONITORS
] - Ability to disable docker intergration [
AUTOKUMA__DOCKER__ENABLED
] (useful in combination withAUTOKUMA__STATIC_MONITORS
)
- Increase default timeout for calls and connecting to 30s
- Support for authentication using credentials
- Fix typo in env variable: AUTOKUMA__DOCKER__LABEL_PREFOX -> AUTOKUMA__DOCKER__LABEL_PREFIX
- Websocket connections were not being closed correctly so they would just accumulate over time
- Ability to parse nested structs from container labels (required for notification_id_list)
- Improve error handling
- First release