Use
Modules
Building blocks for every app – choose them when you create a guest or add them any time, in containers and VMs alike.
Modules add building blocks to an app that many apps can use. Every module can be chosen for
every app, as long as it supports the platform. Active modules run with every update and stay
up to date.
All modules
Each module has its own page with the commands to add and remove it and notes on its use:
unattended-upgrades
Automatic update (nightly)auto-update
Backup (restic)backup
CrowdSeccrowdsec
Desktop (XFCE, RDP)desktop
Elasticsearchelasticsearch
fail2banfail2ban
MariaDBmariadb
PostgreSQLpostgresql
Prometheus node exporternode-exporter
Valkey (Redis)valkeyA module listed under Requires on an app’s page is needed by the app itself (e.g. NetBox needs its database). It is always active there and cannot be removed.
Choose when creating
| Where | How |
|---|---|
| Dialog | choose “advanced”, then tick the modules – the app’s preselection is already set |
| Generator on the app page | tick the modules, the command then contains var_modules |
| Without a dialog | var_modules=node-exporter,unattended-upgrades (var_modules='' = none) |
var_modules replaces the preselection – auto-update then has to be in the list as well.
Add later
In the guest as root – the same in containers and VMs:
update -lm # available for this guest, numbered, [x] = active
update -am node-exporter # add
update -am 1,3 # add modules 1 and 3 from the list
The list looks like this:
1. [x] auto-update
Automatic update (nightly) – …
2. [ ] backup
Backup (restic) – …
3. [ ] fail2ban
…
You can give modules by name or by their number from update -lm everywhere, also mixed
(update -am 2,fail2ban). The long forms --list-modules, --add-modules and
--remove-modules work as well.
update -am runs a normal update and installs the new modules on the way. A module that does
not exist on this platform (e.g. desktop in a container) is rejected before anything changes.
Without logging in, straight from the Proxmox host:
pct exec 105 -- update --add-modules node-exporter # container 105
ssh [email protected] update --add-modules node-exporter # VM
Remove
update -rm desktop # remove single modules (also by number: update -rm 2)
update --modules '' # remove all optional modules
update --modules node-exporter # set the selection completely
A removed module takes its packages, services, firewall rules and configuration with it. Data stays – a PostgreSQL database, for example, is only stopped, not deleted.
Your own modules
A module is an Ansible role in iac-core plus an entry in the catalog modules.json. How that
works is described in the app reference.

