github basnijholt/compose-farm v1.24.0

latest release: v1.24.1
one hour ago

Features

  • after_changes plugin hook: runs once after a cf up/update, cf down (including --orphaned), or cf apply that started, moved, or stopped stacks, and receives the list of changed stacks. It is meant for plugins that act on the whole deployment, such as DNS records or uptime monitors, instead of once per stack. Failures are warnings.
  • commands plugin: new after_changes steps that run locally, with {stacks} and {compose_dir} placeholders. For example, sync Uptime Kuma once per command: after_changes: [{local: "cd {compose_dir} && ./scripts/kuma-sync.py sync --apply"}].
  • New example plugins in examples/plugins/:
    • pin keeps stacks on the host they must run on (static IPs, USB devices, GPUs). Starting one elsewhere fails with the reason, and cf check flags a pin that no longer matches stacks:.
    • traefik-dns keeps DNS records in sync with Traefik Host() names. It writes Headscale extra_records or hosts lines into a managed block and restarts the reading stack only when the records changed.
    • traefik-policy enforces Traefik label conventions before a stack starts, for example that a router on a public entrypoint is also on websecure.
  • agenix example plugin: new mode: symlink links the decrypted env file as the stack's .env on the target host, so compose files that use env_file: .env get the secrets without changes. The README now explains which setups keep secrets off disk.

Documentation

  • Recipes for the commands plugin: remounting NFS after a NAS reboot, creating the shared Docker network, and syncing Uptime Kuma once per command.
  • Added Komodo to the comparison with alternatives.

Testing

  • The VM end-to-end tests now also cover after_changes, pin, traefik-policy, traefik-dns, and agenix symlink mode (8 scenarios).

Full changelog: v1.23.0...v1.24.0

Don't miss a new compose-farm release

NewReleases is sending notifications on new releases.