Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

Each revision is versioned by the date of the revision.

2026-10-19

Changed

  • Moved the documentation tooling to the centrally managed platform-engineering-documentation-files Copier template and added a scheduled workflow that keeps it in sync. There is no change to the charms.

2026-10-14

Changed

  • Migrated the content-cache and content-cache-backends-config Terraform modules to the CC008 Charm Terraform Module standard: renamed versions.tf to terraform.tf and added required_version, split the combined endpoints output into provides/requires maps, and changed the application output to the full juju_application object. Breaking default changes: expose is now an object (cidrs/endpoints/spaces) defaulting to {} (exposed with no restrictions) instead of a bool defaulting to false (not exposed); base and constraints now default to null (the charm’s and Juju’s own defaults) instead of ubuntu@24.04 and arch=amd64 respectively. Added a terraform_modules_compliance CI workflow, a terraform_modules_release workflow tagging the shared tf-X.Y.Z module version, and a generate_terraform_docs workflow. Moved the Terraform modules to the standard repository layout: content-cache/terraform is now terraform/charm/content_cache, content-cache-backends-config/terraform is now terraform/charm/content_cache_backends_config. Removed the example composition Terraform module from terraform/. A content-cache application can attach to any number of content-cache-backends-config applications, so compose the two charm modules directly instead.

2026-10-07

Added

  • Each backend’s nginx server block now also listens on the IPv6 wildcard address ([::]:<port>), in addition to the existing IPv4 listener, so backends reachable only over IPv6 (e.g. Snap Store, Ubuntu Archive) can be proxied (#167).

Fixed

  • The COS Grafana dashboard’s “site” variable, and the per-backend access/cache/error log files it’s derived from, are now keyed by <port>-<hostname> when a backend hostname is configured (falling back to just the port otherwise), so operators can filter logs/dashboards by the actual website being cached while filenames stay unique even if multiple backends share a hostname. The hostname portion is truncated as needed to stay within filesystem filename limits. (Fixes #163)

2026-09-23

Added

  • Added the client-ip-hash-salt configuration option to the content-cache charm. When set to a user-owned Juju secret containing a salt key, client IP addresses are replaced with a salted SHA-256 hash in the access and cache logs, helping protect user privacy. See How to hash client IP addresses in logs for setup instructions.

2026-09-16

Added

  • Added an advanced tutorial walking through deploying content-cache behind ingress-configurator and haproxy, covering hostname-based routing, TLS termination, and other ingress features.

Fixed

  • Removed HTML comment blocks from the charm README that were rendering as literal text on the Charmhub landing page.

Changed

  • Updated the how-to guides, reference, and explanation pages to reflect the current ingress-configurator-based backend configuration flow, while retaining content-cache-backends-config as a supported alternative. Corrected the documented TLS certificate file path (/etc/nginx/certs/content-cache-charm.pem) and cache directory path (/data/nginx/cache/<port>/) to match the current charm implementation.

2026-08-21

Removed

  • Ejected the outdated “Deploy content-cache” tutorial from the documentation. The tutorial no longer reflects a possible deployment schema for the charms, and work is planned to replace the tutorial with an accurate setup.

2026-08-18

Added

  • The content-cache charm now verifies backend TLS certificates when HTTPS backend URLs are configured. Integrate a CA certificate provider via the new receive-ca-cert relation (interface: certificate_transfer) to supply the CA bundle. nginx is configured with proxy_ssl_verify on, proxy_ssl_trusted_certificate, and proxy_ssl_name pointing to the backend hostname. If HTTPS backends are configured but no CA certificate has been provided, the charm enters WaitingStatus until the relation is established. Multiple providers are supported; all CA certificates are merged into a single bundle at /etc/nginx/certs/ca-bundle.pem.

2026-07-16

Changed

  • The backends configuration option on content-cache-backends-config now accepts URLs in the form <http|https>://<ip>:<port> instead of bare IP addresses with a separate protocol option. The protocol option has been removed.

Added

  • The content-cache charm now publishes a cache-backend field to the cache-config relation data after nginx becomes active. The field contains a URL representing the address and port at which this unit is listening, so ingress components can discover it automatically.

2026-06-18

  • Migrated the RTD documentation URL under the Canonical domain.

2025-05-06

Changed

2025-01-13

Added

  • Support for healthcheck-valid-status configuration.

  • Support for healthcheck-ssl-verify configuration.

2024-12-18

Added

  • Add grafana dashboard for the displaying metrics from COS integration.

2024-12-16

Added

  • Support for active health checks using LUA scripts. Configured through healthcheck-interval and healthcheck-path.

2024-12-11

Fixed

  • A issue where content-cache charm integrated with multiple content-cache-backends-config charms causing some configuration to not work correctly.

2024-12-05

Added

  • Support for COS integration. Integrating with charms that provides cos-agent will cause the charm to forward logs to COS.

2024-11-28

Added

  • Support for TLS certificate integration. Integrating with charms that provides tls-certificates will enable HTTPS for the content cache.

2024-10-17

Added

  • Support for fail-timeout, backends-path, proxy-cache-valid configuration options from integration with Content Cache Backends Config charm.

2024-10-07

Added

  • Changelog for tracking user-relevant changes.

  • Basic content cache functionality with nginx.

  • Support for hostname, path, backends, protocol configuration options from integration with Content Cache Backends Config charm.