# Deploy Moodle for a course program

Confirm template availability and upstream sizing, mail, storage, and backup requirements. Check the named site's prerequisites, task result, backup scope and recovery handoff with xCloud.

Canonical: https://xcloud.host/use-cases/workflows/deploy-moodle-for-a-course-program/
Published: 2026-09-30 · Updated: 2026-09-30 · Technical review: 2026-09-30
Evidence: Source reviewed; no production deployment test claimed
Editorial owner: xCloud editorial

Intent: Confirm template availability and upstream sizing, mail, storage, and backup requirements.
For: site-owner, administrator

## Requirements and responsibilities

- Name the team, server, hostname, owner and affected users for the Moodle application. Record the current version and the actual business flow that must survive the change. Confirm the current dashboard form, plan eligibility, and server capacity before committing a resource change. A one-click catalog listing is discovery, not permission or proof that the connected MCP profile can install it. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)
- Prepare a non-sensitive test input and an acceptance record. Keep access to the app administrator and an independent observer where possible; omit secrets from AI prompts and client reports. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)
- For a Docker app, identify persistent volumes, bind mounts, external databases and app-level export requirements. A Docker backup briefly stops the app, and an in-place restore replaces current state. Agree a maintenance window and owner before any action that interrupts the service or overwrites data. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)

## Illustrative situation

A training provider is launching a Moodle course program with assignments and completion records. It needs a full site data plan before enrolling paying learners.

## Choose the approach

- Course backups are useful for copying content but do not replace database, moodledata and configuration recovery. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)
- Teacher, learner and administrator permissions should be tested with separate accounts. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)

## Dashboard and application procedure

### 1. Set course program boundaries

**Where:** Training plan and Moodle admin

**Permissions:** Authorized xCloud read access to the named team and site; the relevant app or provider owner supplies records outside xCloud.

**Inputs:** Course count, users, grading, retention

**Action:** Choose one pilot course with a sample assignment, enrolment route and completion criterion. Decide who administers learner records.

**Expected result:** A clear course acceptance test.

**Verify:** Confirm teacher and learner expectations in writing.

**If it fails:** If no one owns enrolment and grading, postpone real signups.

Capability: Confirm requirements and inspect resources
Sources: [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy)

### 2. Check Moodle prerequisites

**Where:** xCloud template, Moodle docs, server

**Permissions:** Authorized xCloud read access to the named team and site; the relevant app or provider owner supplies records outside xCloud.

**Inputs:** Database, moodledata, cron, mail, server capacity

**Action:** Confirm current Moodle template and persistent data paths. Check background job/cron and email provider requirements before deployment.

**Expected result:** A compatible hosting plan.

**Verify:** Inspect server headroom and template settings.

**If it fails:** If cron cannot run, do not promise timely notifications or completion tasks.

Capability: Confirm requirements and inspect resources
Sources: [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [xCloud WordPress site email configuration](https://xcloud.host/docs/setting-up-site-emails-for-wordpress-on-xcloud/)

### 3. Deploy the Moodle host

**Where:** xCloud dashboard → One-Click Apps

**Permissions:** Authorized xCloud site owner with dashboard rights for the exact setting, backup, staging or restore action and a reviewed target.

**Inputs:** Approved xCloud site, hostname and protected first-run administrator handoff

**Action:** Install Moodle through the supported dashboard path and record its first-run URL. Leave course and role setup to the Moodle administrator.

**Expected result:** A reachable Moodle host ready for protected application setup.

**Verify:** Confirm the xCloud site and hostname match the approved deployment, then verify that the expected protected first-run page is reachable.

**If it fails:** If the hostname, certificate or first-run page is wrong, stop application setup and resolve the hosting or access issue before entering credentials.

Capability: Install a selected one-click app in xCloud dashboard
Sources: [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/); [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md)

### 4. Exercise course lifecycle

**Where:** Moodle course and gradebook

**Permissions:** Authorized Moodle application administrator or delegated role with rights for this task; hosting access alone is insufficient.

**Inputs:** Lesson, assignment, learner submission

**Action:** Complete Moodle administrator setup, configure a pilot course and assign teacher and learner roles. Enrol a test learner, complete a lesson, submit an assignment and review it as teacher.

**Expected result:** A traceable learner-to-teacher result.

**Verify:** Match submission time and grade/completion record. Sign in separately as teacher and learner and confirm the learner cannot edit course settings.

**If it fails:** If learner rights exceed the approved role, correct them before enrolment. If jobs stall, inspect Moodle cron and mail before adding users.

Capability: Configure and test Moodle in its application UI
Sources: [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI)

### 5. Rehearse data recovery

**Where:** Moodle backup tools and xCloud Docker Backup

**Permissions:** Authorized xCloud team/site operator with the discovered write scope for this exact operation and owner approval for its target and interruption.

**Inputs:** Database, moodledata, config, course backup

**Action:** Create a course backup for portability and verify a Completed whole-app backup separately. Restore a pilot copy where safe and inspect learner progress.

**Expected result:** A recovery plan covering site and course state.

**Verify:** Compare sample submission and file after restore.

**If it fails:** If only the course backup exists, do not call the full Moodle service recoverable.

Capability: Create and inspect Docker backups
Sources: [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy)

## Maintenance

- Review this task after app or template updates and at the cadence agreed with the owner. Record failures as dated observations rather than assuming host health proves service health. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)
- Watch access changes, backup completion, free storage and external providers. Recheck integrations after credential, DNS, mail or source-data changes. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)

## Recovery decisions

- Before data recovery, identify incident time, completed backup, target and records created after the snapshot. Preserve current evidence and live data before replacement. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)
- Use the documented dashboard or application recovery procedure with the authorized owner. Repeat the task-specific limited-user check; reconcile newer records before reopening writes. Sources: [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md); [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy); [Moodle teacher role](https://docs.moodle.org/500/en/Teacher); [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment); [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity); [Moodle cron CLI](https://docs.moodle.org/500/en/CLI); [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/); [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md); [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/)

## AI handoff

Connect an authorized xCloud MCP profile and discover its exact tools and team scope. The packaged REST wrapper is GET-only; use dashboard or app controls for undocumented writes.

### Supported scope

- **Confirm requirements and inspect resources** (mcp; read): Discover the connected profile and operation schema first; only teams granted to the connection are visible. Checkpoint: Confirm exact team, server and site identity. Use dashboard\_url returned by the resource; do not invent a dashboard link. Operation identifiers to discover: teams.index, servers.show, sites.show. Scopes: read:servers, read:sites. Sources: [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs); [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md)

### Copyable agent brief

```text
Read current Moodle template, authorized server and backup state. Return database, moodledata, cron and mail requirements. Do not claim MCP creates courses or enrols learners; app admin verifies a test submission and full-site recovery.
```

### Manual checkpoints

- Approve exact site, target, cost and any write or maintenance window after inspecting the proposed plan.
- An authorized Moodle administrator must configure and test app users, content, integrations and business rules in the app.
- Native WordPress staging, backup schedule/settings, push/pull and all restores are dashboard-only; Docker restore is dashboard-only and replaces state.
- Reconcile data created after the chosen recovery point before any destructive restore.

## Feature coverage

- **course decision, evidence and task action** (covered): The procedure identifies the authorized task boundary and observable result. Steps: step-1, step-2, step-3, step-4
- **backup, ongoing operation and recovery** (covered): Recovery and maintenance are checked in the task procedure. Steps: step-4, step-5

## Sources

- [xCloud agent capability boundaries](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/reference/capability-map.md) — reviewed 2026-09-30; v4.4.2 package; xCloud v2.8.8 capability review
- [xCloud MCP documentation and connection profiles](https://app.xcloud.host/mcp/docs) — reviewed 2026-09-30
- [Moodle course copy and backup scope](https://docs.moodle.org/500/en/backup/copy) — reviewed 2026-09-30
- [Moodle teacher role](https://docs.moodle.org/500/en/Teacher) — reviewed 2026-09-30
- [Moodle enrolment](https://docs.moodle.org/500/en/Enrolment) — reviewed 2026-09-30
- [Moodle assignment activity](https://docs.moodle.org/500/en/Assignment_activity) — reviewed 2026-09-30
- [Moodle cron CLI](https://docs.moodle.org/500/en/CLI) — reviewed 2026-09-30
- [Back up and restore Docker apps](https://xcloud.host/docs/backup-and-restore-docker-apps/) — reviewed 2026-09-30
- [Docker backup operations and storage constraints](https://github.com/xCloudDev/xcloud-agent-skills/blob/main/plugins/xcloud/skills/sites/reference/docker-backups.md) — reviewed 2026-09-30; v4.4.2
- [xCloud One Click Apps catalog](https://xcloud.host/one-click-apps/) — reviewed 2026-09-30
- [xCloud WordPress site email configuration](https://xcloud.host/docs/setting-up-site-emails-for-wordpress-on-xcloud/) — reviewed 2026-09-30

## Continue

[Explore all use cases](https://xcloud.host/use-cases/)

- [Back up and recover a Docker application](https://xcloud.host/use-cases/operations/docker-backup-and-recovery/)
