selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

openeclass logo

Self-host openeclass

Release_4.4.3

Open-source LMS for asynchronous e-learning

ReleaseOpen SourceGPL-2.0-or-later
Updated11 hours ago
LanguagePHP
Setup difficultyModerate
MobileNative app
Stars
170
Ports
80 (HTTP web server (nginx)), 9000 (PHP-FPM internal)
Requires
MySQL or MariaDB, PHP, Web server (Apache 2.x or Nginx)
Install with Docker
Open eClass platform home pageOpen eClass main dashboardOpen eClass course main page

What is openeclass?

Open eClass is a full-featured Course Management System for asynchronous e-learning, developed and maintained by the GUnet eLearning Group since 2003. It provides tools for creating and managing online courses: document and multimedia handling, learning paths with SCORM 1.2 export, H5P interactive content, varied exercise types (multiple choice, fill-in-the-blank, matching, drag-and-drop), assignments with grading, forums, chat, teleconferencing, wiki, glossary, e-books, announcements, calendar, messages, groups, learning analytics, gradebook, attendance tracking, and progress monitoring. The platform supports multiple course access types (open, registration-required, closed), course formats (simple, weekly, module-based), and user roles (teacher, student, administrator, teacher assistant, group tutor, guest, reviewer). It complies with LTI 1.1/1.3 for tool integration (e.g., Turnitin, Panopto), supports LDAP authentication, and meets WCAG 2.2 AA accessibility standards. The UI is responsive (Bootstrap 3) and native mobile apps exist for iOS and Android. Self-hosting options include Docker (official Dockerfile), traditional Apache/Nginx + PHP >= 8.2 with MySQL/MariaDB, and downloadable ZIP/TAR.GZ archives. Licensed under GNU GPL v2 or later.

Should you self-host openeclass?

openeclass scores 51/100 on selfhost.directory (how scoring works) and ranks #10 of 14 in Learning Management System. It has 170 GitHub stars.

It shipped 6 stable releases in the past year. The latest, Release_4.4.3, came out on 23 October 2026. New versions land roughly every 2 weeks.

Setup is moderate: expect some configuration beyond a single command. It is GPL-2.0-or-later-licensed and written mostly in PHP.

Its closest alternative on selfhost.directory is Moodle (71/100). It scores higher overall, so compare the two before you pick. See openeclass vs Moodle side by side.

Features

  • Assignments & Grading
  • Attendance & Progress Tracking
  • Course Management
  • Exercises & Quizzes
  • Forums & Communication
  • Glossary & E-books
  • H5P Interactive Content
  • LDAP Authentication
  • Learning Analytics
  • Learning Paths
  • LTI 1.1/1.3 Support
  • SCORM 1.2 ComplianceSCORM 2004 not supported
  • Wiki & Collaborative Authoring

openeclass README

How to install openeclass

Install openeclass with Docker

Docker Engine
Environment variables
TZ, MYSQL_LOCATION, MYSQL_ROOT_USER, MYSQL_ROOT_PASSWORD, MYSQL_DB, ADMIN_USERNAME, PHP_MAX_UPLOAD

Build from Dockerfile

FROM docker.io/composer:latest AS composer_stage WORKDIR /app COPY composer.json composer.lock ./ RUN composer install --no-dev --no-scripts --no-autoloader --ignore-platform-reqs RUN composer dump-autoload --optimize

FROM docker.io/oven/bun:latest AS bun_stage WORKDIR /app RUN apt-get update && apt-get install -y php-cli COPY --from=composer_stage /app/vendor ./vendor COPY --parents js/ include/ package.json modules/admin/tenant_functions.php . RUN bun install --frozen-lockfile

FROM alpine:3.23 RUN apk add --no-cache nginx php84 php84-fpm php84-mysqli php84-pdo_mysql php84-intl php84-zip php84-gd php84-ldap php84-soap php84-opcache php84-iconv php84-ctype php84-dom php84-session php84-xml php84-simplexml php84-mbstring php84-curl php84-fileinfo php84-json php84-xmlreader php84-xmlwriter php84-tokenizer php84-openssl php84-bz2 php84-pdo supervisor curl git tzdata sed RUN ln -sf /usr/bin/php84 /usr/bin/php WORKDIR /var/www/html COPY --exclude=.hg --exclude=config --exclude=courses --exclude=video --exclude=storage . . COPY --from=bun_stage --chown=nginx:nginx /app /var/www/html COPY docker/php/php.ini /etc/php84/conf.d/custom.ini COPY docker/nginx/default.conf /etc/nginx/http.d/default.conf COPY docker/supervisord.conf /etc/supervisord.conf COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh EXPOSE 80 ENV TZ=Europe/Athens MYSQL_LOCATION=db MYSQL_ROOT_USER=root MYSQL_ROOT_PASSWORD=secret MYSQL_DB=eclass ADMIN_USERNAME=admin PHP_MAX_UPLOAD=256M ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

Official multi-stage Dockerfile builds PHP dependencies with Composer, JS assets with Bun, and runs on Alpine with Nginx + PHP-FPM

How to configure openeclass

  • ADMIN_USERNAMEadminInitial admin username

    Initial admin username

  • default_charsetUTF-8Default charset

    Default charset

  • display_errorsOffDisplay PHP errors

    Display PHP errors

    values: On/Off

  • magic_quotes_gpcoffPHP magic quotes GPC

    PHP magic quotes GPC

    values: on/off

  • magic_quotes_runtimeoffPHP magic quotes runtime

    PHP magic quotes runtime

    values: on/off

  • max_execution_time100Maximum script execution time

    Maximum script execution time

  • memory_limit25MPHP memory limit

    PHP memory limit

  • MYSQL_DBeclassDatabase name

    Database name

  • MYSQL_LOCATIONdbDatabase host

    Database host

    values: Hostname or IP

  • MYSQL_ROOT_PASSWORDsecretDatabase root password

    Database root password

  • MYSQL_ROOT_USERrootDatabase root user

    Database root user

  • PHP_MAX_UPLOAD256MMaximum upload size

    Maximum upload size

  • post_max_size95MMaximum POST size

    Maximum POST size

  • sendmail_fromSender email address

    Sender email address

    values: Valid email address

  • session.save_pathSession save path (Windows)

    Session save path (Windows)

    values: Valid filesystem path

  • short_open_tagoffPHP short open tag setting

    PHP short open tag setting

    values: on/off

  • SMTPSMTP server for emails

    SMTP server for emails

    values: e.g. mail.gunet.gr

  • TZEurope/AthensTimezone

    Timezone

    values: Any valid timezone

  • upload_max_filesize80MMaximum file upload size

    Maximum file upload size

openeclass releases & version history

FAQ

I see a MySQL error about 'Column count of mysql.proc is wrong' after upgrading MySQL. How do I fix it?

This occurs when upgrading from MySQL 5.0 to 5.1 where the proc table structure changed. Run 'mysql_upgrade --force -u root -p [your mysql root password]' from the terminal to fix the table structure.

I performed a platform action and suddenly a blank page is displayed. What should I do?

A PHP error has been triggered. Check the system error log for 'Fatal error' messages. Most likely a required PHP module is missing or the PHP version is too old. Install or upgrade the missing PHP module.

More in Learning Management System

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…