From 294cf59dd0dacaa06cd1e35395d7a0fd40dbab09 Mon Sep 17 00:00:00 2001 From: Paul Payne Date: Fri, 19 Jun 2026 21:32:58 +0000 Subject: [PATCH] Adds chamilo app. --- chamilo/app.yaml | 5 ++ chamilo/versions/1/README.md | 39 ++++++++++++++ chamilo/versions/1/db-init-job.yaml | 64 ++++++++++++++++++++++ chamilo/versions/1/deployment.yaml | 76 +++++++++++++++++++++++++++ chamilo/versions/1/ingress.yaml | 26 +++++++++ chamilo/versions/1/kustomization.yaml | 16 ++++++ chamilo/versions/1/manifest.yaml | 29 ++++++++++ chamilo/versions/1/namespace.yaml | 4 ++ chamilo/versions/1/pvc.yaml | 11 ++++ chamilo/versions/1/service.yaml | 13 +++++ 10 files changed, 283 insertions(+) create mode 100644 chamilo/app.yaml create mode 100644 chamilo/versions/1/README.md create mode 100644 chamilo/versions/1/db-init-job.yaml create mode 100644 chamilo/versions/1/deployment.yaml create mode 100644 chamilo/versions/1/ingress.yaml create mode 100644 chamilo/versions/1/kustomization.yaml create mode 100644 chamilo/versions/1/manifest.yaml create mode 100644 chamilo/versions/1/namespace.yaml create mode 100644 chamilo/versions/1/pvc.yaml create mode 100644 chamilo/versions/1/service.yaml diff --git a/chamilo/app.yaml b/chamilo/app.yaml new file mode 100644 index 0000000..07d4333 --- /dev/null +++ b/chamilo/app.yaml @@ -0,0 +1,5 @@ +name: chamilo +is: chamilo +description: Chamilo is a free and open-source e-learning platform (LMS) for course management, assessments, and online education. +icon: https://raw.githubusercontent.com/chamilo/chamilo-lms/master/public/img/logo.png +latest: "1" diff --git a/chamilo/versions/1/README.md b/chamilo/versions/1/README.md new file mode 100644 index 0000000..68d78e8 --- /dev/null +++ b/chamilo/versions/1/README.md @@ -0,0 +1,39 @@ +# Chamilo + +Chamilo is an open-source Learning Management System (LMS) for creating and delivering online courses. + +## Dependencies + +- **MySQL** - Database for storing courses, users, and activity +- **SMTP** - For account verification and course notifications + +## Configuration + +Key settings in `config.yaml`: + +- **domain** - Where Chamilo will be accessible +- **storage** - Persistent volume size (default: `2Gi`) +- **siteName** - Display name for the LMS (default: `Chamilo LMS`) +- **adminUser** - Admin account username (default: `admin`) +- **adminEmail** - Admin account email (defaults to your operator email) +- **smtp** - Email settings inherited from your Wild Cloud SMTP service + +## First-Time Setup + +1. Add and deploy the app: + ```bash + wild app add chamilo + wild app deploy chamilo + ``` + +2. Log in with: + - **Username**: value of `adminUser` in your config (default: `admin`) + - **Password**: value of `adminPassword` in your `secrets.yaml` + +3. From the admin panel, create courses, enroll learners, and configure the LMS settings. + +## Notes + +- The admin panel is accessible via **Administration** in the top navigation after logging in +- Courses can be assigned to categories, and users can self-enroll or be enrolled by teachers +- SMTP is needed for sending course completion certificates and user notifications diff --git a/chamilo/versions/1/db-init-job.yaml b/chamilo/versions/1/db-init-job.yaml new file mode 100644 index 0000000..0a5b101 --- /dev/null +++ b/chamilo/versions/1/db-init-job.yaml @@ -0,0 +1,64 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: chamilo-db-init + labels: + component: db-init +spec: + template: + metadata: + labels: + component: db-init + spec: + restartPolicy: OnFailure + securityContext: + runAsNonRoot: true + runAsUser: 999 + runAsGroup: 999 + seccompProfile: + type: RuntimeDefault + containers: + - name: mysql-init + image: mysql:9.1.0 + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + readOnlyRootFilesystem: false + env: + - name: MYSQL_ROOT_PASSWORD + valueFrom: + secretKeyRef: + name: chamilo-secrets + key: mysql.rootPassword + - name: DB_HOSTNAME + value: {{ .db.host }} + - name: DB_PORT + value: "{{ .db.port }}" + - name: DB_DATABASE_NAME + value: {{ .db.name }} + - name: DB_USERNAME + value: {{ .db.user }} + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: chamilo-secrets + key: dbPassword + command: + - /bin/bash + - -c + - | + set -e + until mysql -h ${DB_HOSTNAME} -P ${DB_PORT} -u root -p${MYSQL_ROOT_PASSWORD} -e "SELECT 1" 2>/dev/null; do + echo "Waiting for MySQL..." + sleep 2 + done + mysql -h ${DB_HOSTNAME} -P ${DB_PORT} -u root -p${MYSQL_ROOT_PASSWORD} <