Chamilo is a learning management system focused on ease of use and accessibility
996
stars
53,138
commits
PHP
primary language
Sep 11, 2026
updated
Chamilo is an e-learning platform (also called "LMS" for Learning Management System) published under the GNU/GPLv3+ license. It has been used by more than 40M people worldwide since its start in 2010.
Chamilo offers a wide range of features, including:
Note: AI features (with support for OpenAI, Grok, Gemini, Claude and DeepSeek models) and other integrations may require active subscriptions to, or availability of, external services/applications.
You can try out Chamilo at https://campus.chamilo.net/ (use the "Teach courses" option to give yourself creation rights).
You will need:
Chamilo 3.0 has been tested on a 2 vCPUs, 2GB RAM virtual machine under Ubuntu 24.04 and has been shown to work, but to build the development environment, you will need at least 4GB RAM. At this stage, we haven't made any load testing to evaluate the number of users that could use the system simultaneously.
Any recent computer with a recent (no older than 5y) browser should do.
You should have:
You can install Chamilo using 3rd party installers like Softaculous, Installatron, DigitalOcean marketplace, etc. and skip the following steps.
These are instructions for a fictitious my.chamilo.net domain, with a
chamilo database, DB user and password, on your own self-managed server.
Please adapt the commands below accordingly.
These instructions are meant for a standalone public server, with no additional component needed. These do not include setting up SSL certificates. We leave the latter to you.
If using VMs, spawn an Ubuntu Server (24.04 LTS or later) VM.
Login through SSH with admin permissions through sudo. Otherwise, just use
the sudo command as needed on your own server.
Install the software stack and Chamilo using the commands below.
sudo apt update && sudo apt -y upgrade
sudo apt install -y apache2 libapache2-mod-php mariadb-client mariadb-server php-{apcu,bcmath,cli,curl,dev,gd,intl,ldap,mbstring,mysql,redis,soap,xml,zip} unzip curl
sudo mysql -e "CREATE USER chamilo@localhost IDENTIFIED BY 'chamilo';"
sudo mysql -e "GRANT ALL PRIVILEGES ON chamilo.* TO chamilo@localhost;"
cd /var/www
sudo wget https://github.com/chamilo/chamilo-lms/releases/download/v2.0.3/chamilo-2.0.3.tar.gz
sudo tar zxf chamilo-2.0.3.tar.gz
cd chamilo
sudo cp public/main/install/apache.dist.conf /etc/apache2/sites-available/my.chamilo.net.conf
# Edit /etc/apache2/sites-available/my.chamilo.net.conf to match your domain name
sudo a2ensite my.chamilo.net
sudo a2enmod rewrite ssl headers expires
sudo touch .env
sudo chown -R www-data: .env config/ var/
sudo systemctl restart apache2
# Open http://my.chamilo.net in your browser to go through the installation wizard
# Complete the installation information using DB credentials chamilo/chamilo/chamilo and the default host and port
# Done
Note: PHP's LDAP extension is only required if you need to connect to LDAP or a compatible system, or if you want to install Chamilo from sources (see CONTRIBUTING.md), but in principle it should not add any overhead to the system if you don't use it.
See CONTRIBUTING.md for details.
Once the above is ready, use your browser to load the URL you have defined for your host, e.g. https://my.chamilo.net
(this should redirect you to main/install/index.php) and follow the UI instructions (database, admin user settings, etc).
After the web install process, change the permissions back to a reasonably safe state:
chown -R root: .env config/
Your Chamilo is ready to use!
Most configuration changes are made through the administration page inside Chamilo's web interface, but the database connection
and other settings critical to the Symfony layer are located in the .env file at the root of Chamilo.
Other core, Symfony-related, settings for advanced administration are located in the config/packages/ folder (*.yaml files),
but remember that these files are updated with each new version of Chamilo. Instead of modifying those directly, it is
highly recommended to copy them into the config/packages/prod/ folder and modifying them there (for your production
environment). This will improve maintainability through different Chamilo upgrades in the future.
For more information on Chamilo, visit https://campus.chamilo.net/documentation/index.html For Chamilo usage documentation, most of the documentation at https://docs.chamilo.org/ is up to date.
This version of Chamilo allows you to use a JWT (token) to use the Chamilo API more securely. In order to use it, you will have to generate a JWT token as follows.
php bin/console lexik:jwt:generate-keypair
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
curl -k -X POST https://example.com/api/authentication_token \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}'
The response should return something like:
{"token":"MyTokenABC"}
Bearer MyTokenABCThen you can make queries using the JWT token.
If you want to submit new features or patches to Chamilo, please follow the Github contribution guide https://guides.github.com/activities/contributing-to-open-source/ and our CONTRIBUTING.md file.
In short, we ask you to send us Pull Requests based on a branch that you create
with this purpose into your own repository, forked from the original Chamilo repository (master branch).
(top 30 of 84)
PHP
68.8%
JavaScript
13.2%
Vue
7.3%
HTML
4.7%
Twig
2.0%
CSS
1.0%
Chamilo is a learning management system focused on ease of use and accessibility
996
stars
53,138
commits
PHP
primary language
Sep 11, 2026
updated
Chamilo is an e-learning platform (also called "LMS" for Learning Management System) published under the GNU/GPLv3+ license. It has been used by more than 40M people worldwide since its start in 2010.
Chamilo offers a wide range of features, including:
Note: AI features (with support for OpenAI, Grok, Gemini, Claude and DeepSeek models) and other integrations may require active subscriptions to, or availability of, external services/applications.
You can try out Chamilo at https://campus.chamilo.net/ (use the "Teach courses" option to give yourself creation rights).
You will need:
Chamilo 3.0 has been tested on a 2 vCPUs, 2GB RAM virtual machine under Ubuntu 24.04 and has been shown to work, but to build the development environment, you will need at least 4GB RAM. At this stage, we haven't made any load testing to evaluate the number of users that could use the system simultaneously.
Any recent computer with a recent (no older than 5y) browser should do.
You should have:
You can install Chamilo using 3rd party installers like Softaculous, Installatron, DigitalOcean marketplace, etc. and skip the following steps.
These are instructions for a fictitious my.chamilo.net domain, with a
chamilo database, DB user and password, on your own self-managed server.
Please adapt the commands below accordingly.
These instructions are meant for a standalone public server, with no additional component needed. These do not include setting up SSL certificates. We leave the latter to you.
If using VMs, spawn an Ubuntu Server (24.04 LTS or later) VM.
Login through SSH with admin permissions through sudo. Otherwise, just use
the sudo command as needed on your own server.
Install the software stack and Chamilo using the commands below.
sudo apt update && sudo apt -y upgrade
sudo apt install -y apache2 libapache2-mod-php mariadb-client mariadb-server php-{apcu,bcmath,cli,curl,dev,gd,intl,ldap,mbstring,mysql,redis,soap,xml,zip} unzip curl
sudo mysql -e "CREATE USER chamilo@localhost IDENTIFIED BY 'chamilo';"
sudo mysql -e "GRANT ALL PRIVILEGES ON chamilo.* TO chamilo@localhost;"
cd /var/www
sudo wget https://github.com/chamilo/chamilo-lms/releases/download/v2.0.3/chamilo-2.0.3.tar.gz
sudo tar zxf chamilo-2.0.3.tar.gz
cd chamilo
sudo cp public/main/install/apache.dist.conf /etc/apache2/sites-available/my.chamilo.net.conf
# Edit /etc/apache2/sites-available/my.chamilo.net.conf to match your domain name
sudo a2ensite my.chamilo.net
sudo a2enmod rewrite ssl headers expires
sudo touch .env
sudo chown -R www-data: .env config/ var/
sudo systemctl restart apache2
# Open http://my.chamilo.net in your browser to go through the installation wizard
# Complete the installation information using DB credentials chamilo/chamilo/chamilo and the default host and port
# Done
Note: PHP's LDAP extension is only required if you need to connect to LDAP or a compatible system, or if you want to install Chamilo from sources (see CONTRIBUTING.md), but in principle it should not add any overhead to the system if you don't use it.
See CONTRIBUTING.md for details.
Once the above is ready, use your browser to load the URL you have defined for your host, e.g. https://my.chamilo.net
(this should redirect you to main/install/index.php) and follow the UI instructions (database, admin user settings, etc).
After the web install process, change the permissions back to a reasonably safe state:
chown -R root: .env config/
Your Chamilo is ready to use!
Most configuration changes are made through the administration page inside Chamilo's web interface, but the database connection
and other settings critical to the Symfony layer are located in the .env file at the root of Chamilo.
Other core, Symfony-related, settings for advanced administration are located in the config/packages/ folder (*.yaml files),
but remember that these files are updated with each new version of Chamilo. Instead of modifying those directly, it is
highly recommended to copy them into the config/packages/prod/ folder and modifying them there (for your production
environment). This will improve maintainability through different Chamilo upgrades in the future.
For more information on Chamilo, visit https://campus.chamilo.net/documentation/index.html For Chamilo usage documentation, most of the documentation at https://docs.chamilo.org/ is up to date.
This version of Chamilo allows you to use a JWT (token) to use the Chamilo API more securely. In order to use it, you will have to generate a JWT token as follows.
php bin/console lexik:jwt:generate-keypair
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
curl -k -X POST https://example.com/api/authentication_token \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}'
The response should return something like:
{"token":"MyTokenABC"}
Bearer MyTokenABCThen you can make queries using the JWT token.
If you want to submit new features or patches to Chamilo, please follow the Github contribution guide https://guides.github.com/activities/contributing-to-open-source/ and our CONTRIBUTING.md file.
In short, we ask you to send us Pull Requests based on a branch that you create
with this purpose into your own repository, forked from the original Chamilo repository (master branch).
(top 30 of 84)
PHP
68.8%
JavaScript
13.2%
Vue
7.3%
HTML
4.7%
Twig
2.0%
CSS
1.0%