heyer.systems

Use

Update

One command for Debian, app, modules and configuration – and a controlled move to a new Debian release.

update

In the guest as root:

update

Step by step:

  1. Update the Debian packages (full-upgrade, your changed configuration files are kept).
  2. Fetch the current version of iac-core and the app.
  3. Establish the target state: app version, modules, configuration, firewall. Services only restart when something changed for them.
  4. Check that the services run and the app answers.

Before that, etckeeper records the state of /etc – every change can be traced with git -C /etc log. If a reboot is needed (e.g. a new kernel), update says so at the end. It never reboots by itself.

App versions

  • Apps from Debian get their updates with the Debian packages.
  • Apps from GitHub or other sources jump to the latest version on update. Apps with a major lock (e.g. Traefik) stay within their major version. A new major version is only reported – the app’s migration guide describes the move.
  • If an app update goes wrong, apps like Traefik return to the old version by themselves.

Options

CommandEffect
updatenormal update
update -lm, --list-modulesmodules for this guest, numbered, active ones with [x]
update -am a,b, --add-modulesadd modules, by name or number (update -am 1,3, modules)
update -rm a,b, --remove-modulesremove modules, data stays
update --modules a,bset the module selection ('' = none)
update --release-upgrademove to the next Debian release
update -yno questions
update -h, --helphelp with all options, examples and important files

New Debian release

Debian releases never change automatically. Once the next release is stable:

update --release-upgrade

It first checks that the new release is already stable and that there is enough free space, then establishes the target state like every update. Take a backup or a Proxmox snapshot first.

Docker

For the Docker variant, in the directory of the docker-compose.yml:

docker compose pull && docker compose up -d