DirectorySecurity AdvisoriesPricing
Sign in
Directory
moodle logoHELM

moodle

Helm chart
iamguarded
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart versions
Default values
Chart metadata
Images

Overview based on moodle-iamguarded

Chainguard Container for moodle-iamguarded

Minimalist Wolfi-based Moodle IAMGuarded image for online learning management.

Chainguard Containers are regularly-updated, secure-by-default container images.

Download this Container Image

For those with access, this container image is available on cgr.dev:

docker pull cgr.dev/ORGANIZATION/moodle-iamguarded:latest

Be sure to replace the ORGANIZATION placeholder with the name used for your organization's private repository within the Chainguard Registry.

Compatibility Notes

Moodle is an Apache and PHP application backed by a MariaDB (or PostgreSQL) database, deployed through its companion IAMGuarded Helm chart, which bundles a MariaDB subchart by default.

This image keeps the upstream IAMGuarded entrypoint and command (/opt/iamguarded/scripts/moodle/entrypoint.sh and run.sh) and the same /opt/iamguarded layout, so it is a drop-in replacement when deployed through that chart. There are three deliberate differences from the upstream image:

  • It runs as uid 1001 / gid 0 rather than root, matching the containerSecurityContext the chart applies (runAsUser: 1001, runAsGroup: 0, runAsNonRoot: true). Anything that assumed a writable root filesystem at runtime needs a mounted volume instead.
  • The Moodle application tree at /usr/share/webapps/moodle is group writable, so first boot can write config.php and administrators can install plugins into the tree.
  • The Apache helper utilities are not included. htpasswd and the other apache2-utils tools are absent, so a vhost configuration that maintains its own basic-auth password file needs them added via Custom Assembly.

PHP 8.4 is used, matching upstream's Moodle 5.2 line. Note that upstream does not currently publish a public image for that line, so there is no public counterpart to compare this image against directly.

Prerequisites

  • Kubernetes 1.24+
  • Helm 3.8+
  • Access to Chainguard's private registry (cgr.dev)

Getting Started

This section outlines the required configuration, optional features, and verification steps when deploying this image via the Helm chart. The chart provides security-minded defaults that are sensible but may not be production-ready for all use cases. Review the chart's values.yaml (run helm show values) for the full range of configuration options.

Registry Authentication

Access to the moodle-iamguarded image requires authentication to Chainguard’s private registry (cgr.dev). Ensure your cluster has appropriate image pull credentials configured before installing the chart.

For detailed instructions on configuring authentication and pull credentials, see:

How to Use Chainguard Helm Charts

Required Configuration

When deploying this image via the Helm chart, the global.org value is required and specifies your Chainguard organization namespace in the registry:

global:
  org: ORGANIZATION

This value determines which private repository the moodle-iamguarded image is pulled from.

Image Configuration

By default, the Helm chart pulls the moodle-iamguarded image from cgr.dev using your configured organization. You may optionally override the image repository or pin to a specific digest.

Pinning to a digest is strongly recommended to prevent unexpected image updates:

image:
  registry: cgr.dev
  repository: ORGANIZATION/moodle-iamguarded
  digest: sha256:...

Optional Features

When deployed via the Helm chart, this image can be configured with several optional components and customizations.

Custom Registry Mirror

To use an internal registry mirror:

global:
  imageRegistry: <your-registry-mirror>
  org: ORGANIZATION
Enabling Prometheus Metrics

The Helm chart can deploy a Prometheus apache_exporter alongside this image to expose web server metrics:

metrics:
  enabled: true
  image:
    registry: cgr.dev
    repository: ORGANIZATION/apache-exporter-iamguarded

Metrics are exposed on port 9117.

Enabling Volume Permissions Init Container

If your storage backend requires explicit permission adjustments, enable the volume permissions init container:

volumePermissions:
  enabled: true
  image:
    registry: cgr.dev
    repository: ORGANIZATION/os-shell-iamguarded
Moodle Administrator Credentials

The Helm chart provisions the initial Moodle site and administrator account. You may provide credentials directly or reference an existing Kubernetes secret:

moodleUsername: user
moodlePassword: "strong-admin-password"
moodleEmail: <admin-email>

For production deployments, consider sourcing credentials from an existing secret:

existingSecret: my-moodle-secret
Database Configuration

By default the chart deploys a bundled MariaDB subchart. To use an external database instead, disable the subchart and configure the external connection:

mariadb:
  enabled: false
externalDatabase:
  host: <your-database-host>
  port: 3306
  user: bn_moodle
  database: iamguarded_moodle
  password: "strong-db-password"

Verifying and Connecting

After installation via the Helm chart, confirm the Moodle pod is running:

kubectl get pods -l app.kubernetes.io/name=moodle

Retrieve the administrator password from the generated Kubernetes secret:

ADMIN_PASSWORD=$(kubectl get secret moodle -o jsonpath='{.data.moodle-password}' | base64 -d)

Port-forward the service and confirm the login page responds:

kubectl port-forward svc/moodle 8080:80
curl -sSL http://localhost:8080/login/index.php | grep -F "Moodle"

If metrics are enabled, verify Prometheus exposure:

kubectl port-forward svc/moodle-metrics 9117:9117
curl http://localhost:9117/metrics | grep apache_up

Documentation and Resources

What are Chainguard Containers?

Chainguard's free tier of Starter container images are built with Wolfi, our minimal Linux undistro.

All other Chainguard Containers are built with Chainguard OS, Chainguard's minimal Linux operating system designed to produce container images that meet the requirements of a more secure software supply chain.

The main features of Chainguard Containers include:

For cases where you need container images with shells and package managers to build or debug, most Chainguard Containers come paired with a development, or -dev, variant.

In all other cases, including Chainguard Containers tagged as :latest or with a specific version number, the container images include only an open-source application and its runtime dependencies. These minimal container images typically do not contain a shell or package manager.

Although the -dev container image variants have similar security features as their more minimal versions, they include additional software that is typically not necessary in production environments. We recommend using multi-stage builds to copy artifacts from the -dev variant into a more minimal production image.

Need additional packages?

To improve security, Chainguard Containers include only essential dependencies. Need more packages? Chainguard customers can use Custom Assembly to add packages, either through the Console, chainctl, or API.

To use Custom Assembly in the Chainguard Console: navigate to the image you'd like to customize in your Organization's list of images, and click on the Customize image button at the top of the page.

Learn More

Refer to our Chainguard Containers documentation on Chainguard Academy. Chainguard also offers VMs and Librariescontact us for access.

Trademarks

This software listing is packaged by Chainguard. The trademarks set forth in this offering are owned by their respective companies, and use of them does not imply any affiliation, sponsorship, or endorsement by such companies.

Chart versions
  • 28.0.2

    Latest
  • 28.0

  • 28

View all chart versions

Images

Helm charts contain references to Chainguard Container images. The following images are referenced in the chart:

moodle-iamguarded logo

moodle-iamguarded


The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.