The docker-based Open edX distribution designed for peace of mind

Overview

Tutor: the docker-based Open edX distribution designed for peace of mind


Tutor logo


Release build status Documentation GitHub issues GitHub closed issues AGPL License

Tutor is a docker-based Open edX distribution, both for production and local development. The goal of Tutor is to make it easy to deploy, customize, upgrade and scale Open edX. Tutor is reliable, fast, extensible, and it is already used by dozens of Open edX platforms around the world.

Do you need professional assistance setting up or managing your Open edX platform? Overhang.IO provides online support as part of its Long Term Support (LTS) offering.

Features

Tutor local quickstart

Quickstart

  1. Install the latest stable release of Tutor
  2. Run tutor local quickstart
  3. You're done!

Documentation

Extensive documentation is available online: https://docs.tutor.overhang.io/

Support

To get community support, go to the official discussion forums: https://discuss.overhang.io. For official support, please subscribe to a Long Term Support (LTS) license at https://overhang.io/tutor/pricing.

Contributing

We welcome contributions to Tutor! To learn how you can contribute, please check the relevant section of the Tutor docs: https://docs.tutor.overhang.io/tutor.html#contributing.

Comments
  • Links within LMS not responding

    Links within LMS not responding

    I'm not sure what is going on at all. Earlier in the day, one of my students reported that they could not get any of the links within the content pages to respond. I thought it was an issue like #136, and did a git pull, and make all and everything was back running just fine. I thought it was fixed, so I proceeded to test the download grades as detailed in #143, and moved the new edited lms.env.json file into the three locations, and stopped and started the daemon again with make stop and make daemonize. So later today, I notice the same problem the student reported earlier. I can't load anything past the outline in the lms. It works fine in the CMS where I was adding new content. I don't see anything myself in the logs. Here is what the LMS log does when I try and load something that doesn't work.

    lms_1              | 2019-02-04 03:29:54,505 INFO 10 [tracking] logger.py:50 - {"username": "", "event_type": "/courses/course-v1:wallawalla+ENGR356+2018/instructor", "ip": "172.18.0.1", "agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36", "host": "edx.fweb.wallawalla.edu", "referer": "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486", "accept_language": "en-US,en;q=0.9", "event": "{\"POST\": {}, \"GET\": {}}", "event_source": "server", "context": {"course_user_tags": {}, "user_id": null, "org_id": "wallawalla", "course_id": "course-v1:wallawalla+ENGR356+2018", "path": "/courses/course-v1:wallawalla+ENGR356+2018/instructor"}, "time": "2019-02-04T03:29:54.505757+00:00", "page": null}
    nginx_1            | 172.18.0.1 - - [04/Feb/2019:03:29:54 +0000] "GET /courses/course-v1:wallawalla+ENGR356+2018/instructor HTTP/1.1" 404 8820 "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36" "174.127.180.10"
    lms_1              | 2019-02-04 03:29:54,573 INFO 10 [tracking] logger.py:42 - {"username": "", "event_source": "browser", "name": "edx.ui.lms.link_clicked", "accept_language": "en-US,en;q=0.9", "time": "2019-02-04T03:29:54.573829+00:00", "agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36", "page": "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486", "host": "edx.fweb.wallawalla.edu", "session": "", "referer": "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486", "context": {"user_id": null, "org_id": "wallawalla", "course_id": "course-v1:wallawalla+ENGR356+2018", "path": "/event"}, "ip": "172.18.0.1", "event": "{\"target_url\": \"https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/instructor\", \"current_url\": \"https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486\"}", "event_type": "edx.ui.lms.link_clicked"}
    nginx_1            | 172.18.0.1 - - [04/Feb/2019:03:29:54 +0000] "POST /event HTTP/1.1" 200 7 "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36" "174.127.180.10"
    lms_1              | 2019-02-04 03:29:54,665 INFO 10 [tracking] logger.py:42 - {"username": "", "event_source": "browser", "name": "page_close", "accept_language": "en-US,en;q=0.9", "time": "2019-02-04T03:29:54.664885+00:00", "agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36", "page": "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486", "host": "edx.fweb.wallawalla.edu", "session": "", "referer": "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486", "context": {"user_id": null, "org_id": "wallawalla", "course_id": "course-v1:wallawalla+ENGR356+2018", "path": "/event"}, "ip": "172.18.0.1", "event": "{}", "event_type": "page_close"}
    nginx_1            | 172.18.0.1 - - [04/Feb/2019:03:29:54 +0000] "GET /event?event_type=page_close&event=&page=https%3A%2F%2Fedx.fweb.wallawalla.edu%2Fcourses%2Fcourse-v1%3Awallawalla%2BENGR356%2B2018%2Fcourseware%2Faa8ac082a122464697d345b8afc57217%2F9563436353554579a98219b1557e9d97%2F1%3Factivate_block_id%3Dblock-v1%253Awallawalla%252BENGR356%252B2018%252Btype%2540vertical%252Bblock%25400244afa0caa743d4b2a45581e8e0f486 HTTP/1.1" 200 7 "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/courseware/aa8ac082a122464697d345b8afc57217/9563436353554579a98219b1557e9d97/1?activate_block_id=block-v1%3Awallawalla%2BENGR356%2B2018%2Btype%40vertical%2Bblock%400244afa0caa743d4b2a45581e8e0f486" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36" "174.127.180.10"
    nginx_1            | 172.18.0.1 - - [04/Feb/2019:03:29:54 +0000] "GET /static/bundles/commons.d3a94a87e2e57a61d594.7ce261227eb4.js HTTP/1.1" 404 564 "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/instructor" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36" "174.127.180.10"
    nginx_1            | 172.18.0.1 - - [04/Feb/2019:03:29:55 +0000] "GET /static/bundles/commons.d3a94a87e2e57a61d594.7ce261227eb4.js HTTP/1.1" 404 564 "https://edx.fweb.wallawalla.edu/courses/course-v1:wallawalla+ENGR356+2018/instructor" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36" "174.127.180.10"
    

    Any suggestions? I really need to get this rolling again for the students, or my name is mud.

    Thanks, Rob (maybe Mud)

    opened by frohro 51
  • Project has become cumbersome

    Project has become cumbersome

    With all the recent changes, this project has become cumbersome and difficult to work with. I feel as though it has lost its way or purpose.

    I really like this project and I have contributed to it as often as I am able. But I think it may be reaching too far too quickly. I believe it needs to roll-back or redefine some recent changes.

    Steps to reproduce

    Try to do things step by step according to the documentation.

    Unexpected behavior

    When following the quickstart guide the site will come up, anything more than that requires more intimate knowledge of openedx, docker, and tutor than should be required. I find myself constantly turn to to grep to search for the correct Makefile to invoke for a command --and even if I find it I don't always know if it is the correct command to run.

    It is no longer apparent where the configuration is located or what config files I should be editing.

    Additional info (IMPORTANT)

    Include the output of the make info command.

    07:42 $ make info
    make: *** No rule to make target `info'.  Stop.
    

    The make info command doesn't work in the root of the project.

    image

    enhancement 
    opened by frob 26
  • Support for ARM64

    Support for ARM64

    Is your feature request related to a problem? Please describe. When I tried to install tutor on an Apple M1 Mac, I got the following error:

    "no matching manifest for linux/arm64/v8 in the manifest list entries"
    

    Which I assume just means there's no preconfigured docker containers which run on ARM64.

    Describe the solution you'd like

    Support for ARM64 macOS native or Linux VM installs.

    Describe alternatives you've considered

    Only run tutor on x86 systems.

    Additional context Logs:

    tutor local quickstart
    ==================================================
            Interactive platform configuration
    ==================================================
    Are you configuring a production platform? Type 'n' if you are just testing Tutor on your local computer [Y/n] n
    As you are not running this platform in production, we automatically set the following configuration values:
        LMS_HOST = local.overhang.io
        CMS_HOST = studio.local.overhang.io
        ENABLE_HTTPS = False
    Your platform name/title [My Open edX] TestSetup
    Your public contact email address [[email protected]] [email protected]
    The default language code for the platform [en] 
    Configuration saved to /Users/ta/Library/Application Support/tutor/config.yml
    Environment generated in /Users/ta/Library/Application Support/tutor/env
    ==============================================
            Stopping any existing platform
    ==============================================
    docker-compose -f /Users/ta/Library/Application Support/tutor/env/local/docker-compose.yml -f /Users/ta/Library/Application Support/tutor/env/local/docker-compose.prod.yml --project-name tutor_local stop
    ======================================================
            Starting the platform in detached mode
    ======================================================
    docker-compose -f /Users/ta/Library/Application Support/tutor/env/local/docker-compose.yml -f /Users/ta/Library/Application Support/tutor/env/local/docker-compose.prod.yml --project-name tutor_local build
    docker-compose -f /Users/ta/Library/Application Support/tutor/env/local/docker-compose.yml -f /Users/ta/Library/Application Support/tutor/env/local/docker-compose.prod.yml --project-name tutor_local up --remove-orphans -d
    [+] Running 0/12
     ⠹ cms Pulling                                                                                                                                                                            1.2s
     ⠹ smtp Pulling                                                                                                                                                                           1.2s
     ⠹ lms-worker Pulling                                                                                                                                                                     1.2s
    [+] Running 0/38                                                                                                                                                                          1.2s
     ⠸ cms Pulling                                                                                                                                                                            1.3s
     ⠸ smtp Pulling                                                                                                                                                                           1.3s
     ⠸ lms-worker Pulling                                                                                                                                                                     1.3s
    [+] Running 0/38                                                                                                                                                                          1.3s
     ⠼ cms Pulling                                                                                                                                                                            1.4s
     ⠼ smtp Pulling                                                                                                                                                                           1.4s
     ⠼ lms-worker Pulling                                                                                                                                                                     1.4s
    [+] Running 0/38                                                                                                                                                                          1.4s
     ⠴ cms Pulling                                                                                                                                                                            1.5s
     ⠴ smtp Pulling                                                                                                                                                                           1.5s
     ⠴ lms-worker Pulling                                                                                                                                                                     1.5s
    [+] Running 0/38                                                                                                                                                                          1.5s
     ⠦ cms Pulling                                                                                                                                                                            1.6s
     ⠦ smtp Pulling                                                                                                                                                                           1.6s
     ⠦ lms-worker Pulling                                                                                                                                                                     1.6s
    [+] Running 0/38                                                                                                                                                                          1.6s
     ⠧ cms Pulling                                                                                                                                                                            1.7s
     ⠧ smtp Pulling                                                                                                                                                                           1.7s
     ⠧ lms-worker Pulling                                                                                                                                                                     1.7s
    [+] Running 0/38                                                                                                                                                                          1.7s
     ⠇ cms Pulling                                                                                                                                                                            1.8s
     ⠇ smtp Pulling                                                                                                                                                                           1.8s
     ⠇ lms-worker Pulling                                                                                                                                                                     1.8s
    [+] Running 0/38                                                                                                                                                                          1.8s
     ⠏ cms Pulling                                                                                                                                                                            1.9s
     ⠏ smtp Pulling                                                                                                                                                                           1.9s
     ⠏ lms-worker Pulling                                                                                                                                                                     1.9s
    [+] Running 0/38                                                                                                                                                                          1.9s
     ⠋ cms Pulling                                                                                                                                                                            2.0s
     ⠋ smtp Pulling                                                                                                                                                                           2.0s
     ⠋ lms-worker Pulling                                                                                                                                                                     2.0s
    [+] Running 0/38d Downloading [========================>                          ]  14.14MB/28.57MB                                                                                      0.8s
     ⠙ cms Pulling                                                                                                                                                                            2.1s
     ⠙ smtp Pulling                                                                                                                                                                           2.1s
     ⠙ lms-worker Pulling                                                                                                                                                                     2.1s
    [+] Running 0/38d Downloading [=============================>                     ]  16.79MB/28.57MB                                                                                      0.9s
     ⠹ cms Pulling                                                                                                                                                                            2.2s
     ⠹ smtp Pulling                                                                                                                                                                           2.2s
     ⠹ lms-worker Pulling                                                                                                                                                                     2.2s
    [+] Running 0/38d Downloading [==================================>                ]  19.43MB/28.57MB                                                                                      1.0s
     ⠸ cms Pulling                                                                                                                                                                            2.3s
     ⠸ smtp Pulling                                                                                                                                                                           2.3s
     ⠸ lms-worker Pulling                                                                                                                                                                     2.3s
    [+] Running 0/38d Downloading [=======================================>           ]  22.37MB/28.57MB                                                                                      1.1s
     ⠿ cms Error                                                                                                                                                                              2.3s
     ⠼ smtp Pulling                                                                                                                                                                           2.3s
       ⠋ 376057ac6fa1 Waiting                                                                                                                                                                 0.0s
       ⠋ 4f41e210c366 Waiting                                                                                                                                                                 0.0s
       ⠋ c6481c5521ee Waiting                                                                                                                                                                 0.0s
       ⠋ be585e548f6c Waiting                                                                                                                                                                 0.0s
       ⠋ 430c23e8d992 Waiting                                                                                                                                                                 0.0s
     ⠼ lms-worker Pulling                                                                                                                                                                     2.3s
       ⠹ f3ef4ff62e0d Downloading [============================================>      ]  25.33MB/28.57MB                                                                                      1.2s
       ⠹ 655bf3442dc0 Downloading [===========>                                       ]  24.09MB/106.7MB                                                                                      1.2s
     ⠼ mysql Pulling                                                                                                                                                                          2.3s
     ⠼ nginx Pulling                                                                                                                                                                          2.3s
     ⠼ redis Pulling                                                                                                                                                                          2.3s
     ⠼ elasticsearch Pulling                                                                                                                                                                  2.3s
     ⠼ cms-worker Pulling                                                                                                                                                                     2.3s
       ⠹ d66db579a7fa Downloading [=========>                                         ]  23.53MB/129MB                                                                                        1.2s
       ⠹ d3139673f13e Waiting                                                                                                                                                                 1.2s
       ⠹ 903edde86fca Waiting                                                                                                                                                                 1.2s
       ⠹ 36d8943409be Waiting                                                                                                                                                                 1.2s
       ⠹ ab4f11753cac Waiting                                                                                                                                                                 1.2s
       ⠹ 2a9201b6a797 Waiting                                                                                                                                                                 1.2s
       ⠹ 524ceb345f19 Waiting                                                                                                                                                                 1.2s
       ⠹ 95b6c72f88bb Waiting                                                                                                                                                                 1.2s
       ⠹ e1c88eb31ec6 Waiting                                                                                                                                                                 1.2s
       ⠹ 0fbd0978bb03 Waiting                                                                                                                                                                 1.2s
       ⠹ 90285addf724 Waiting                                                                                                                                                                 1.2s
       ⠹ 99bd67934d9d Waiting                                                                                                                                                                 1.2s
       ⠹ 92213dc4b9cd Waiting                                                                                                                                                                 1.2s
       ⠹ b2304bb97d73 Waiting                                                                                                                                                                 1.2s
       ⠹ 04121f85a33d Waiting                                                                                                                                                                 1.2s
       ⠹ 69644301019a Waiting                                                                                                                                                                 1.2s
       ⠹ 51ac47d0d2fc Waiting                                                                                                                                                                 1.2s
       ⠹ 131ad05c4036 Waiting                                                                                                                                                                 1.2s
       ⠹ 09f255215a61 Waiting                                                                                                                                                                 1.2s
       ⠹ c4d412a4849e Waiting                                                                                                                                                                 1.2s
       ⠹ c1214469cf9f Waiting                                                                                                                                                                 1.2s
       ⠹ 9f60a3f82622 Waiting                                                                                                                                                                 1.2s
       ⠹ ddf5c800defd Waiting                                                                                                                                                                 1.2s
       ⠹ 8d1be3e3c407 Waiting                                                                                                                                                                 1.2s
     ⠼ caddy Pulling                                                                                                                                                                          2.3s
     ⠼ mongodb Pulling                                                                                                                                                                        2.3s
     ⠼ forum Pulling                                                                                                                                                                          2.3s
       ⠋ b3cadc2ce9bc Waiting                                                                                                                                                                 0.0s
       ⠋ 1c994fa4867c Waiting                                                                                                                                                                 0.0s
       ⠋ 212bccdb82d0 Waiting                                                                                                                                                                 0.0s
       ⠋ d7696e3b974a Waiting                                                                                                                                                                 0.0s
       ⠋ bc9da928040d Waiting                                                                                                                                                                 0.0s
       ⠋ 6ab6622d1731 Waiting                                                                                                                                                                 0.0s
       ⠋ e289a644fa07 Waiting                                                                                                                                                                 0.0s
       ⠋ 952660bcbfcf Waiting                                                                                                                                                                 0.0s
       ⠋ 926a7b6b0dd8 Waiting                                                                                                                                                                 0.0s
       ⠋ 498fc3bf5f93 Waiting                                                                                                                                                                 0.0s
       ⠋ 6a20aa841ea9 Waiting                                                                                                                                                                 0.0s
       ⠋ b7d753873dd1 Waiting                                                                                                                                                                 0.0s
     ⠼ lms Pulling                                                                                                                                                                            2.3s
    no matching manifest for linux/arm64/v8 in the manifest list entries
    Error: Command failed with status 18: docker-compose -f /Users/ta/Library/Application Support/tutor/env/local/docker-compose.yml -f /Users/ta/Library/Application Support/tutor/env/local/docker-compose.prod.yml --project-name tutor_local up --remove-orphans -d
    
    bug feature request 
    opened by throwaway-a 25
  • django.db.utils.OperationalError: (1045,

    django.db.utils.OperationalError: (1045, "Access denied for user 'xqueue'@'172.18.0.13'

    Hi Regis,

    I did a git pull, configure and make build and now when I run make up i'm seeing this permissions error with the xqueue service.

    And when I go to www.myopenedx.com and studio.myopenedx.com, I'm seeing "400 Bad Request".

    xqueue_consumer_1  | Traceback (most recent call last):
    xqueue_consumer_1  |   File "./manage.py", line 10, in <module>
    xqueue_consumer_1  |     execute_from_command_line(sys.argv)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
    xqueue_consumer_1  |     utility.execute()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute
    xqueue_consumer_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv
    xqueue_consumer_1  |     self.execute(*args, **cmd_options)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 444, in execute
    xqueue_consumer_1  |     self.check()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 482, in check
    xqueue_consumer_1  |     include_deployment_checks=include_deployment_checks,
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 72, in run_checks
    xqueue_consumer_1  |     new_errors = check(app_configs=app_configs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/model_checks.py", line 28, in check_all_models
    xqueue_consumer_1  |     errors.extend(model.check(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1205, in check
    xqueue_consumer_1  |     errors.extend(cls._check_fields(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1282, in _check_fields
    xqueue_consumer_1  |     errors.extend(field.check(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 934, in check
    xqueue_consumer_1  |     errors = super(AutoField, self).check(**kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 207, in check
    xqueue_consumer_1  |     errors.extend(self._check_backend_specific_checks(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 306, in _check_backend_specific_checks
    xqueue_consumer_1  |     return connection.validation.check_field(self, **kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/validation.py", line 18, in check_field
    xqueue_consumer_1  |     field_type = field.db_type(connection)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 614, in db_type
    xqueue_consumer_1  |     return connection.data_types[self.get_internal_type()] % data
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 36, in __getattr__
    xqueue_consumer_1  |     return getattr(connections[DEFAULT_DB_ALIAS], item)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 196, in data_types
    xqueue_consumer_1  |     if self.features.supports_microsecond_precision:
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/features.py", line 52, in supports_microsecond_precision
    xqueue_consumer_1  |     return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 371, in mysql_version
    xqueue_consumer_1  |     with self.temporary_connection():
    xqueue_consumer_1  |   File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
    xqueue_consumer_1  |     return self.gen.next()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 462, in temporary_connection
    xqueue_consumer_1  |     cursor = self.cursor()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 164, in cursor
    xqueue_consumer_1  |     cursor = self.make_cursor(self._cursor())
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 135, in _cursor
    xqueue_consumer_1  |     self.ensure_connection()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    xqueue_consumer_1  |     self.connect()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 98, in __exit__
    xqueue_consumer_1  |     six.reraise(dj_exc_type, dj_exc_value, traceback)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    xqueue_consumer_1  |     self.connect()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 119, in connect
    xqueue_consumer_1  |     self.connection = self.get_new_connection(conn_params)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
    xqueue_consumer_1  |     conn = Database.connect(**conn_params)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    xqueue_consumer_1  |     return Connection(*args, **kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 193, in __init__
    xqueue_consumer_1  |     super(Connection, self).__init__(*args, **kwargs2)
    xqueue_consumer_1  | django.db.utils.OperationalError: (1045, "Access denied for user 'xqueue'@'172.18.0.13' (using password: YES)")
    xqueue_consumer_1  | Traceback (most recent call last):
    xqueue_consumer_1  |   File "./manage.py", line 10, in <module>
    xqueue_consumer_1  |     execute_from_command_line(sys.argv)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
    xqueue_consumer_1  |     utility.execute()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute
    xqueue_consumer_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv
    xqueue_consumer_1  |     self.execute(*args, **cmd_options)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 444, in execute
    xqueue_consumer_1  |     self.check()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 482, in check
    xqueue_consumer_1  |     include_deployment_checks=include_deployment_checks,
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 72, in run_checks
    xqueue_consumer_1  |     new_errors = check(app_configs=app_configs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/model_checks.py", line 28, in check_all_models
    xqueue_consumer_1  |     errors.extend(model.check(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1205, in check
    xqueue_consumer_1  |     errors.extend(cls._check_fields(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1282, in _check_fields
    xqueue_consumer_1  |     errors.extend(field.check(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 934, in check
    xqueue_consumer_1  |     errors = super(AutoField, self).check(**kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 207, in check
    xqueue_consumer_1  |     errors.extend(self._check_backend_specific_checks(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 306, in _check_backend_specific_checks
    xqueue_consumer_1  |     return connection.validation.check_field(self, **kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/validation.py", line 18, in check_field
    xqueue_consumer_1  |     field_type = field.db_type(connection)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 614, in db_type
    xqueue_consumer_1  |     return connection.data_types[self.get_internal_type()] % data
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 36, in __getattr__
    xqueue_consumer_1  |     return getattr(connections[DEFAULT_DB_ALIAS], item)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 196, in data_types
    xqueue_consumer_1  |     if self.features.supports_microsecond_precision:
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/features.py", line 52, in supports_microsecond_precision
    xqueue_consumer_1  |     return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 371, in mysql_version
    xqueue_consumer_1  |     with self.temporary_connection():
    xqueue_consumer_1  |   File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
    xqueue_consumer_1  |     return self.gen.next()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 462, in temporary_connection
    xqueue_consumer_1  |     cursor = self.cursor()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 164, in cursor
    xqueue_consumer_1  |     cursor = self.make_cursor(self._cursor())
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 135, in _cursor
    xqueue_consumer_1  |     self.ensure_connection()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    xqueue_consumer_1  |     self.connect()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 98, in __exit__
    xqueue_consumer_1  |     six.reraise(dj_exc_type, dj_exc_value, traceback)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    xqueue_consumer_1  |     self.connect()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 119, in connect
    xqueue_consumer_1  |     self.connection = self.get_new_connection(conn_params)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
    xqueue_consumer_1  |     conn = Database.connect(**conn_params)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    xqueue_consumer_1  |     return Connection(*args, **kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 193, in __init__
    xqueue_consumer_1  |     super(Connection, self).__init__(*args, **kwargs2)
    xqueue_consumer_1  | django.db.utils.OperationalError: (1045, "Access denied for user 'xqueue'@'172.18.0.13' (using password: YES)")
    xqueue_consumer_1  | Traceback (most recent call last):
    xqueue_consumer_1  |   File "./manage.py", line 10, in <module>
    xqueue_consumer_1  |     execute_from_command_line(sys.argv)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
    xqueue_consumer_1  |     utility.execute()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 346, in execute
    xqueue_consumer_1  |     self.fetch_command(subcommand).run_from_argv(self.argv)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 394, in run_from_argv
    xqueue_consumer_1  |     self.execute(*args, **cmd_options)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 444, in execute
    xqueue_consumer_1  |     self.check()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 482, in check
    xqueue_consumer_1  |     include_deployment_checks=include_deployment_checks,
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/registry.py", line 72, in run_checks
    xqueue_consumer_1  |     new_errors = check(app_configs=app_configs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/core/checks/model_checks.py", line 28, in check_all_models
    xqueue_consumer_1  |     errors.extend(model.check(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1205, in check
    xqueue_consumer_1  |     errors.extend(cls._check_fields(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 1282, in _check_fields
    xqueue_consumer_1  |     errors.extend(field.check(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 934, in check
    xqueue_consumer_1  |     errors = super(AutoField, self).check(**kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 207, in check
    xqueue_consumer_1  |     errors.extend(self._check_backend_specific_checks(**kwargs))
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 306, in _check_backend_specific_checks
    xqueue_consumer_1  |     return connection.validation.check_field(self, **kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/validation.py", line 18, in check_field
    xqueue_consumer_1  |     field_type = field.db_type(connection)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 614, in db_type
    xqueue_consumer_1  |     return connection.data_types[self.get_internal_type()] % data
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 36, in __getattr__
    xqueue_consumer_1  |     return getattr(connections[DEFAULT_DB_ALIAS], item)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 196, in data_types
    xqueue_consumer_1  |     if self.features.supports_microsecond_precision:
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/features.py", line 52, in supports_microsecond_precision
    xqueue_consumer_1  |     return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 59, in __get__
    xqueue_consumer_1  |     res = instance.__dict__[self.name] = self.func(instance)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 371, in mysql_version
    xqueue_consumer_1  |     with self.temporary_connection():
    xqueue_consumer_1  |   File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
    xqueue_consumer_1  |     return self.gen.next()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 462, in temporary_connection
    xqueue_consumer_1  |     cursor = self.cursor()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 164, in cursor
    xqueue_consumer_1  |     cursor = self.make_cursor(self._cursor())
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 135, in _cursor
    xqueue_consumer_1  |     self.ensure_connection()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    xqueue_consumer_1  |     self.connect()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 98, in __exit__
    xqueue_consumer_1  |     six.reraise(dj_exc_type, dj_exc_value, traceback)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    xqueue_consumer_1  |     self.connect()
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/base/base.py", line 119, in connect
    xqueue_consumer_1  |     self.connection = self.get_new_connection(conn_params)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 276, in get_new_connection
    xqueue_consumer_1  |     conn = Database.connect(**conn_params)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
    xqueue_consumer_1  |     return Connection(*args, **kwargs)
    xqueue_consumer_1  |   File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 193, in __init__
    xqueue_consumer_1  |     super(Connection, self).__init__(*args, **kwargs2)
    xqueue_consumer_1  | django.db.utils.OperationalError: (1045, "Access denied for user 'xqueue'@'172.18.0.13' (using password: YES)")
    
    question 
    opened by natea 25
  • Migration from openedX Native

    Migration from openedX Native

    Hey, I have a customized openedX Native version up and running on an AWS EC2 instance. Now I want to migrate to the docker version provided.

    Any suggestions how to do this in the first place?

    question 
    opened by kbitr 24
  • feat: k8s horizontal pod autoscaling

    feat: k8s horizontal pod autoscaling

    Description

    This PR adds new patches to the LMS, CMS, LMS worker, and CMS worker deployments to controll resource limitations for HPA as necessary. Also, allows to set the CMS/LMS_MEMORY_REQUEST parameters which are new config values.

    Patches

    • k8s-cms-deployment-resources
    • k8s-cms-worker-deployment-resources
    • k8s-lms-deployment-resources
    • k8s-lms-worker-deployment-resources

    Resource request config

    • CMS_MEMORY_REQUEST
    • LMS_MEMORY_REQUEST

    Supporting information

    The autoscaling is done by a plugin.

    Dependencies

    N/A

    Testing instructions

    1. Proofread the code
    2. Try setting custom resource requests
    3. Validate the custom settings applied

    Deadline

    None

    Other information

    before scaling

    Screenshot 2022-06-29 at 9 47 24

    after scaling

    Screenshot 2022-06-29 at 9 47 28

    memory usage

    Screenshot 2022-06-29 at 9 51 33
    opened by gabor-boros 23
  • Newbie help again

    Newbie help again

    I decided to start from scratch on a testbox and all was going well until I decided to remove all volumes, containers and such.

    I removed the tutor directory also.

    Started with the quick start and get an error stating:

    Host '172.18.0.1' is not allowed to connect to this MySQL.

    any suggestions.

    thank you,

    Robert H

    question 
    opened by roblhibbard 23
  • Error: `lms is mounted on / but it is not a shared mount`

    Error: `lms is mounted on / but it is not a shared mount`

    Bug description When doing a fresh install using tutor local quickstart, it downloads all the images but fails during docker-compose file.

    How to reproduce

    ╰─ mkdir tutor && cd tutor
    ╰─ sudo curl -L "https://github.com/overhangio/tutor/releases/download/v12.1.6/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    ╰─ sudo chmod 0755 /usr/local/bin/tutor
    ╰─ export TUTOR_ROOT=tutor
    ╰─ tutor local start
    docker-compose -f /home/<USER>/.local/share/tutor/env/local/docker-compose.yml -f /home/<USER>/.local/share/tutor/env/local/docker-compose.prod.yml --project-name tutor_local up --remove-orphans --build
    [+] Running 7/7
     ⠿ Container tutor_local-redis-1          Created                                                                                                                                      1.0s
     ⠿ Container tutor_local-caddy-1          Created                                                                                                                                      1.0s
     ⠿ Container tutor_local-mysql-1          Created                                                                                                                                      1.0s
     ⠿ Container tutor_local-smtp-1           Created                                                                                                                                      1.0s
     ⠿ Container tutor_local-elasticsearch-1  Created                                                                                                                                      1.0s
     ⠿ Container tutor_local-mongodb-1        Created                                                                                                                                      1.0s
     ⠿ Container tutor_local-forum-1          Created                                                                                                                                      0.1s
     ⠋ Container tutor_local-lms-1            Creating                                                                                                                                     0.0s
    Error response from daemon: path /home/<USER>/.local/share/tutor/env/apps/openedx/settings/lms is mounted on / but it is not a shared mount.
    Error: Command failed with status 1: docker-compose -f /home/<USER>/.local/share/tutor/env/local/docker-compose.yml -f /home/<USER>/.local/share/tutor/env/local/docker-compose.prod.yml --project-name tutor_local up --remove-orphans --build
    

    Environment Windows 10 20H2 WSL2 - Ubuntu 20.04 LTS tutor, version 12.1.6

    Additional context

    bug additional info required good first issue 
    opened by mrvaghani 22
  • Creating ‘openedx’ user takes too long when building openedx-dev image

    Creating ‘openedx’ user takes too long when building openedx-dev image

    As per the documentation, I ran the following command to build the openedx-dev image

    tutor images build openedx-dev

    OS Version is: 18.04.4 LTS Tutor Version is: 3.12.3 I left it system to run overnight(almost 12 hours), yet the command was not successful. It was stuck at running the create-user.sh. Below is the log: (I have used a workaround as specified here, but this is a stop gap arrangement)

    Building image docker.io/overhangio/openedx-dev:3.12.3
    docker build -t docker.io/overhangio/openedx-dev:3.12.3 /home/machine/.local/share/tutor/env/build/openedx-dev --build-arg USERID=1000
    Sending build context to Docker daemon  5.632kB
    Step 1/11 : FROM docker.io/overhangio/openedx:3.12.3
     ---> 4e83d402b431
    Step 2/11 : MAINTAINER Overhang.io <[email protected]>
     ---> Using cache
     ---> ab86cbe8487e
    Step 3/11 : RUN apt update &&     apt install -y vim telnet     && rm -rf /var/lib/apt/lists/*
     ---> Using cache
     ---> 6cdbaa38645e
    Step 4/11 : RUN pip install -r requirements/edx/development.txt
     ---> Using cache
     ---> 39e71c2bff12
    Step 5/11 : RUN pip install ipdb==0.12.2 ipython==5.8.0
     ---> Using cache
     ---> 014cec4bd517
    Step 6/11 : RUN rm -r /openedx/staticfiles &&     mkdir /openedx/staticfiles &&     openedx-assets webpack --env=dev
     ---> Using cache
     ---> 752e39197dfd
    Step 7/11 : COPY ./bin /openedx/bin
     ---> Using cache
     ---> ccb0d4bf5d2a
    Step 8/11 : RUN chmod a+x /openedx/bin/*
     ---> Using cache
     ---> 8fd152d4cbca
    Step 9/11 : ARG USERID=1000
     ---> Using cache
     ---> dc04a982062b
    Step 10/11 : RUN create-user.sh $USERID
    
    
     ---> Running in e6215f4a433c
    Creating 'openedx' user with id 1000
    
    
    enhancement 
    opened by shashikiranraifox 20
  • Proxy breaks View Live in Studio

    Proxy breaks View Live in Studio

    I have changed the setting in config/openedx/cms.env.json and config/openedx/lms.env.json but I cannot get the urls to be correct in those links. When I change LMS_BASE in these configruation files my proxy sends me back a Bad Request (400) page

    If I don't change these then everything works (as far as I can tell), but the "View Live" button in studio shows the url to the local proxy.

    opened by frob 20
  • Developer 'make lms' not working;  recipe for target 'lms' failed

    Developer 'make lms' not working; recipe for target 'lms' failed

    Dear Regis, I have been trying out to build openedx with the pull request patch merged today. I am trying out the commands listed under development section. Everything works till make migrate. But if try to call 'make lms' or 'make cms', there is an error. Below is the stack trace.

    Note: I only got to this section now(due to slow internet/computer), otherwise I would have reported yesterday itself before the patch was merged in to the master branch.

    Stacktrace

    docker-compose run --rm -e USERID="$(id -u)" -e SETTINGS=development --volume="/home/rudra/Desktop/iks_workspace/openedx/edx-platform:/openedx/edx-platform" -p 8000:8000 lms bash Run a one-off command on a service.

    For example:

    $ docker-compose run web python manage.py shell
    

    By default, linked services will be started, unless they are already running. If you do not want to start linked services, use docker-compose run --no-deps SERVICE COMMAND [ARGS...].

    Usage: run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

    Options: -d Detached mode: Run container in the background, print new container name. --name NAME Assign a name to the container --entrypoint CMD Override the entrypoint of the image. -e KEY=VAL Set an environment variable (can be used multiple times) -u, --user="" Run as specified username or uid --no-deps Don't start linked services. --rm Remove container after run. Ignored in detached mode. -p, --publish=[] Publish a container's port(s) to the host --service-ports Run command with the service's ports enabled and mapped to the host. -T Disable pseudo-tty allocation. By default docker-compose run allocates a TTY. -w, --workdir="" Working directory inside the container Makefile:57: recipe for target 'lms' failed make: *** [lms] Error 1

    opened by gmsk19 19
  • The documentation for podman is pretty out of date

    The documentation for podman is pretty out of date

    As of Podman 3.0.0, podman has full support for docker-compose directly without the need for podman-compose.

    Would it be alright if I submitted a PR updating that documentation and adding some more information? Or is there a different channel I should go through first?

    opened by AxelSilverdew 4
  • proposal/idea: reorganize documentation for better discoverability

    proposal/idea: reorganize documentation for better discoverability

    Backstory

    While learning how to develop tutor plugins, I found it somewhat difficult to find the information I was looking for in the current documentation without knowing the proper search terms.

    What is this PR?

    This PR is my (draft/work in progress/looking for feedback) proposal for a way to possibly reorganize the existing documentation to allow for greater discoverability

    Is there an easy way to see the proposed changes?

    Yes! I temporarily added a github actions workflow to my fork that is publishing the documentation from this branch to github pages. You can check it out here: https://brian-smith-tcril.github.io/tutor/

    What's left to do?

    • [x] Get my initial thoughts on reorganization out in the form of a PR code changes
    • [x] Figure out an easy way to get feedback from people who don't feel like pulling this branch down and building docs locally
    • [ ] Get feedback from everyone
    • [ ] Come to an agreement on what changes should be made
    • [ ] Implement agreed-upon changes
    • [ ] Clean up the PR (rebase to remove WIP commit messages, remove github pages workflow)
    • [ ] Turn off github pages on my fork
    • [ ] Final review
    • [ ] Hopefully get something everyone is happy with merged in!
    opened by brian-smith-tcril 0
  • Error loading Python lib during launch.

    Error loading Python lib during launch.

    Bug description

    [7893] Error loading Python lib '/tmp/_MEIcyvkMV/libpython3.7m.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.35' not found (required by /tmp/_MEIcyvkMV/libpython3.7m.so.1.0)
    

    How to reproduce

    Pull a Ubuntu 20.4 Image with 4 GB RAM, 2 vCPUs, 80 GB SSD up on Lightsail -AWS

    Once signed in, create script install.sh add the following to it, give execution rights sudo chmod +x install.sh and run.

    #!/bin/bash
    
    sudo hostnamectl set-hostname ourname.education
    sudo apt update
    
    sudo mkdir -p /etc/apt/keyrings &&
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg &&
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      
    sudo apt-get update && sudo apt-get upgrade -y
    
    sudo apt-get remove docker \
        docker-engine \
        docker.io \
        containerd \
        runc
    
    sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
        
    sudo apt-get install \
        python3. \
        python3-pip \
        libyaml-dev -y
        
    sudo apt-get install docker-ce docker-ce-cli containerd.io -y
    
    sudo curl -SL https://github.com/docker/compose/releases/download/v2.14.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
    
    sudo chmod 0755 /usr/local/bin/docker-compose && sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    
    sudo groupadd docker
    
    sudo usermod -aG docker $USER
    
    sudo systemctl enable docker.service
    sudo systemctl enable containerd.service
    
    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v15.1.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    
    tutor local launch
    

    Environment

    AWS server Ubuntu 20.4 Image with 4 GB RAM, 2 vCPUs, 80 GB SSD

    Additional context

    I am running a v12.x Tutor instance and have not upgraded it as yet, first wanted to test the newer versions, any idea what my be the cause... I have of course Googled this to death already, and have tried number of different fixes. But alas I know to little about Phyton environmental setup, please help!

    opened by Llewellynvdm 2
  • Plugins should have a CHANGELOG.md file

    Plugins should have a CHANGELOG.md file

    Is your feature request related to a problem? Please describe.

    It's currently difficult for developers to track changes across plugins (including breaking changes). To address that, I suggested some time ago that plugins adopt a CHANGELOG.md file, similar to Tutor core.

    Describe the solution you'd like

    For a long time, I thought that the current solution with CHANGELOG was not very satisfying. Long story short, I propose that we adopt scriv for managing changelogs in Tutor: https://github.com/overhangio/tutor/pull/745 If this PR goes through, I'll also propose that we adopt the same solution for plugins.

    Additional context

    Thanks to @CodeWithEmad for reminding me about this: https://github.com/overhangio/tutor-mfe/pull/85#issuecomment-1315345353

    enhancement 
    opened by regisb 0
  • Improve storage model of Caddy's pods in K8s

    Improve storage model of Caddy's pods in K8s

    I would like to start a discussion about the persistence model of Caddy. Currently, Caddy's deployment definition has a generic persistent volume claim which will cause the cluster to create a generic persistent volume and mount to the /data directory.

    In our first failover tests, we've found that, in multi-AZ environments, Caddy will fail rescheduling to a different AZ, as a pod cannot bind to a PV in a different AZ (I have a post in discuss about this).

    Now a commit to fix rolling up updates in Caddy makes it even harder, as all pods for Caddy must be in the same node as the original ReplicaSet. Recently we had a site outage when Caddy crashed, and Caddy failed to reschedule due to lack of resources in the original node, and was prevented to reschedule to another node. We had to delete the volume and deployment manually and then Caddy was rescheduled to another node.

    Additionally, there is an excellent backup plugin, which makes a backup of the Caddy's data volume. To do this, it includes a node affinity with Caddy to access its volume. It is also an issue, because if the node does not have enough resources to allocate the pods for the backup or restore jobs, these tasks will fail.

    The idea behind K8s is to have nodes tightly dimensioned to support its current workloads, and let the scheduler assign nodes to pods dynamically wherever there is room. So it is frequent that nodes do not have resources and crashing pods need to be rescheduled to another pod. Too many node affinity constraints and taints limit the scheduler ability and may lead to pods failing to start.

    AFAIK, Caddy uses this volume to store only the SSL certificates, which are generated dynamically and can be recreated if lost. The other core pods of Open edX do not require any PV (out of MySQL, MongoDB, ElasticSearch, Redis and MinIO, which can be consumed as a service out of the K8s cluster).

    I would like to start a discussion to change the way Caddy stores this data, to improve its scalability and resiliency.

    As a starting point, we can review some of these options:

    • Use EmptyDir volume, which is lost when the pod is rescheduled. If I remember well I had a talk with @regisb about this and he discouraged this idea.
    • Use an ephemeral volume. Same as EmptyDir, but using the cluster storage instead of the node's. Similarly, will be deleted together with the pod.
    • Use NFS volume. Probably the most scalable and stable solution, but more complex to configure and more dependent on the cluster provider. Don't know if there will be performance issues.
    bug help wanted feature request 
    opened by angonz 2
Releases(v15.1.0)
  • v15.1.0(Dec 13, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v15.1.0"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v15.1.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Improvement] Upgrade ipdb and ipython packages in the openedx development image. (by @regisb)
    • [Improvement] Skip unnecessary image building in development. This should make tutor dev launch slightly faster. (by @regisb)
    • [Bugfix] Fix Authn MFE login in development by disabling enterprise integration. (by @regisb)
    • [Bugfix] Fix "Invalid value for ‘--from’" when running tutor local upgrade --from=nutmeg. If you are facing this error, just run tutor local launch and your platform should be automatically upgraded.
    • [Bugfix] Fix "TypeError: Parameters to Generic[...] must all be type variables" error. This error may occur when upgrading from a very old installation of Tutor. It is due to an old version of the typing-extensions package.
    • 💥[Deprecation] Get rid of the quickstart command. v15.0.0 introduced a deprecation warning, but we actually want users to stop using this command. Instead, use launch (by @regisb).
    • [Improvement] Backfill persistent grades during upgrade from Nutmeg. If you observe missing grades after the upgrade from Nutmeg, run tutor local upgrade --from=nutmeg. (by @regisb)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(17.49 MB)
    tutor-Linux_x86_64(26.85 MB)
  • v15.0.0(Dec 12, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v15.0.0"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v15.0.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • 💥[Feature] Upgrade to Olive (by @regisb):
      • Mypy type checking options were modified: developers are encouraged to add the --implicit-reexport option to their IDE.
    • [Bugfix] Update problem templates according newer python versions. (by @mariajgrimaldi)
    • [Improvement] Add the -h help option to all commands and subcommands. Previously, we could only use --help, which is quite long for lazy fingers. (by @regisb)
    • 💥[Feature] Add an extensible local/dev/k8s do ... command to trigger custom job commands. These commands are used to run a series of bash scripts in designated containers. Any plugin can add custom jobs thanks to the CLI_DO_COMMANDS filter. This causes the following breaking changes:
      • The "init", "createuser", "settheme", "importdemocourse" commands were all migrated to this new interface. For instance, tutor local init was replaced by tutor local do init.
      • Plugin developers are encouraged to replace calls to the COMMANDS_INIT and COMMANDS_PRE_INIT filters by CLI_DO_INIT_TASKS.
    • [Feature] Implement hook filter priorities, which work like action priorities. (by @regisb)
    • 💥[Improvement] Remove the local/dev bindmount commands, which have been marked as deprecated for some time. The --mount option should be used instead.
    • 💥[Bugfix] Fix local installation requirements. Plugins that implemented the "openedx-dockerfile-post-python-requirements" patch and that needed access to the edx-platform repo will no longer work. Instead, these plugins should implement the "openedx-dockerfile-pre-assets" patch. This scenario should be very rare, though. (by @regisb)
    • 💥[Improvement] Rename the implementation of tutor quickstart to tutor launch. (by @Carlos-Muniz)
    • 💥[Improvement] Remove the implementation of tutor dev runserver. (by @Carlos-Muniz)
    • [Bugfix] Fix MongoDB replica set connection error resulting from edx-platform's pymongo (3.10.1 -> 3.12.3) upgrade (edx-platform#30569). (by @ormsbee)
    • [Bugfix] Update celery invocations for lms-worker and cms-worker to be compatible with Celery 5 CLI.
    • [Improvement] Point CMS at its config file using CMS_CFG environment variable instead of deprecated STUDIO_CFG.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(17.49 MB)
    tutor-Linux_x86_64(26.85 MB)
  • v14.2.3(Dec 6, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.2.3"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.2.3/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Security] Fix rotation of JWT tokens for disabled users. (by @regisb)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(17.59 MB)
    tutor-Linux_x86_64(26.96 MB)
  • v14.2.2(Nov 29, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.2.2"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.2.2/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Bugfix] Fix jinja2.exceptions.TemplateSyntaxError: expected token 'end of statement block', got '|' error by bumping the minimum required version of the Jinja2 package.
    • [Feature] Add support for MongoDB SSL, authentication source, mechanism and replica set via the MONGODB_USE_SSL, MONGODB_AUTH_MECHANISM, MONGODB_AUTH_SOURCE, MONGODB_REPLICA_SET settings. (by @zakum1 and @regisb)
    • [Bugfix] Fix tag of "openedx" development Docker image. Previously, this Docker tag did not include the Tutor version. As a consequence, a different cached image could be used in some cases. For instance: when running tutor dev run commands. Now, the image tag is "openedx-dev:TUTOR_VERSION".
    • [Bugfix] Fix name of Swahili locale: it is "sw-ke" and not "sw" (by @regisb).
    • [Security] Apply drag-n-drop v2 xblock security patch. (by @regisb)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.42 MB)
    tutor-Linux_x86_64(26.55 MB)
  • v14.2.1(Nov 24, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.2.1"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.2.1/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Improvement] Auto-completion of plugins and config arguments: plugins enable/disable NAME, plugins install PATH, config save --set KEY=VAL, config save --unset KEY, config printvalue KEY. (by @regisb)
    • [Bugfix] Fix minimum click version (>= 8.0.0) when installing tutor from pip.
    • [Improvement] Enable CORS by default for both LMS and CMS by moving those settings to the common_all partial. (by @arbrandes)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.42 MB)
    tutor-Linux_x86_64(26.55 MB)
  • v14.2.0(Nov 21, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.2.0"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.2.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Improvement] Auto-complete implicit local/dev --mount /path/to/... options. (by @regisb)
    • 💥[Feature] Strong typing of action and filter hooks: this allows us to detect incorrect calls to actions.add or filters.add early. Strong typing forces us to break the do and apply API by removing the context named argument. Developers should replace do(context=...) by do_from_context(..., ) (and similar for apply).
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.42 MB)
    tutor-Linux_x86_64(26.55 MB)
  • v14.1.2(Nov 2, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.1.2"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.1.2/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Security] Fix edx-platform XSS vulnerability on "next" parameter. (by @regisb)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.84 MB)
  • v14.1.1(Oct 26, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.1.1"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.1.1/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Security] Fix xblock ajax handler vulnerability. (by @regisb)
    • [Improvement] Use web proxy gzip encoding to improve bandwidth. We observe a 75% size reduction on the LMS dashboard. (by @ghassanmas)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.84 MB)
  • v14.1.0(Oct 10, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.1.0"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.1.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Improvement] Upgrade Scorm XBlock to v14.0.0. (by @regisb)
    • 💥[Improvement] The Richie plugin was transferred to the Openfun organization; thus, it is no longer officially supported and it is removed from the default set of plugins that ships with pip install tutor[full] or the Tutor pre-compiled binary. Users are encouraged to uninstall the tutor-richie Python package and install the tutor-contrib-richie package instead.
    • [Feature] Upgrade edx-platform i18n strings to nutmeg.2. (by @regisb)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.85 MB)
  • v14.0.5(Aug 29, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.0.5"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.0.5/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Bugfix] Fix MongoDB replica set connection error resulting from edx-platform's pymongo (3.10.1 -> 3.12.3) upgrade (edx-platform#30569). (by @ormsbee)
    • [Feature] Upgrade all applications to open-release/nutmeg.2.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v14.0.4(Jul 29, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.0.4"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.0.4/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Feature] Add the -m/--mount option to tutor dev quickstart.
    • [Bugfix] Fix tutor dev start -m /path/to/frontend-app-learning by introducing dev-specific COMPOSE_DEV_TMP and COMPOSE_DEV_JOBS_TMP filters (by @regisb).
    • [Bugfix] Log the shell commands that Tutor executes more accurately. (by @kdmccormick)
    • [Bugfix] tutor dev quickstart would fail under certain versions of docker-compose due to a bug in the logic that handled volume mounting. (by @kdmccormick)
    • [Bugfix] The tutor k8s start command will succeed even when k8s-override and kustomization-patches-strategic-merge are not specified. (by @edazzocaisser)
    • [BugFix] kubectl wait checks deployments instead of pods as it could hang indefinitely if there are extra pods in a broken state. (by @keithgg)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v14.0.3(Jul 11, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.0.3"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.0.3/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Bugfix] Build openedx-dev Docker image even when the host user is root, for instance on Windows. (by @regisb)
    • [Bugfix] Patch nutmeg.1 release with LTI 1.3 fix. (by @ormsbee)
    • [Improvement] Make it possible to override k8s resources in plugins using k8s-override patch. (by @foadlind)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v14.0.2(Jun 27, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.0.2"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.0.2/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Bugfix] Update problem with hint template so it works with newer python versions. (by @mariajgrimaldi)
    • [Feature] Add default PYTHONBREAKPOINT to openedx/Dockerfile (by @Carlos-Muniz)
    • [Bugfix] Fix smtp server port in cms.yml which was causing email sending failures in the Studio. (by @regisb)
    • [Bugfix] Skip waiting for MongoDB if it is served using SRV records. (by @gabor-boros)
    • [Improvement] Use git am instead of cherry-pick to simplify patching process.
    • [Improvement] Tutor is now compatible with Docker Compose subcommand.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v14.0.1(Jun 13, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.0.1"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.0.1/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Bugfix] Fix missing tables on migration from maple (#689). (by @ibrmora)
    • [Bugfix] Fix plugin patches in cms.env.yml template.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v14.0.0(Jun 9, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v14.0.0"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v14.0.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • 💥 [Feature] Upgrade to Nutmeg: (by @regisb)
      • 💥[Feature] Hide a course from the /course search page in the LMS when the course visibility is set to "none" in the Studio. (thanks @ghassanmas!)
      • 💥[Improvement] The lms.env.json and cms.env.json files are moved to lms.env.yml and cms.env.yml. As a consequence, plugin developers must reformat the following patches to use YAML format, and not JSON: "common-env-features", "lms-env-features", "cms-env-features", "lms-env", "cms-env", "openedx-auth".
      • 💥[Feature] Persistent grades are now enabled by default.
      • [Bugfix] Remove edX references from bulk emails (issue).
      • [Improvement] For Tutor Nightly (and only Nightly), official plugins are now installed from their nightly branches on GitHub instead of a version range on PyPI. This will allow Nightly users to install all official plugins by running pip install -e ".[full]".
      • [Bugfix] Start MongoDB when running migrations, because a new data migration fails if MongoDB is not running
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.19 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v13.3.1(Jun 6, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v13.3.1"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.3.1/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Fix] Crashing celery workers in development (#681). (by @regisb)
    • [Fix] Fix studio logout issue. (by @Alec4r)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.18 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v13.3.0(Jun 3, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v13.3.0"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.3.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Security] Apply logout redirect url security fix. (by @regisb)
    • [Feature] Make it possible to force the rendering of a given template, even when the template path matches an ignore pattern. (by @regisb)
    • 💥[Fix] Get rid of the tutor config render command, which is useless now that themes can be implemented as plugins. (by @regisb)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.18 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v13.2.3(May 30, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v13.2.3"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.2.3/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Fix] Truncate site display name to 50 characters with a warning, fixing data too long error for long site names. (by @navinkarkera)
    • [Feature] Add patch to allow overriding final openedx docker image CMD.
    • [Fix] Ignore Python plugins that cannot be loaded. (by @regisb)
    • [Improvement] Faster and more reliable builds with npm clean-install instead of npm install. (by @regisb. Thanks @ghassanmas!)
    • [Fix] Fix 500 error during studio login. (by @regisb)
    • [Fix] Fix updates for the Caddy deployment in multi-node Kubernetes clusters (#660). Previously, Caddy configuration updates might fail if the Kubernetes cluster had more than one worker node. (by @fghaas)
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.18 MB)
    tutor-Linux_x86_64(25.86 MB)
  • v13.2.2(May 7, 2022)

  • v13.2.1(May 6, 2022)

  • v13.2.0(Apr 25, 2022)

    Install this version from pip with:

    pip install "tutor[full]==v13.2.0"
    

    Or download the compiled binaries:

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.2.0/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Improvement] Add the COMPOSE_PROJECT_STARTED action and run dev stop on local start (and vice versa).
    • [Feature] Introduce local/dev copyfrom command to copy contents from a container.
    • [Bugfix] Fix a race condition that could prevent a newly provisioned LMS container from starting due to a FileExistsError when creating data folders.
    • [Deprecation] Mark tutor dev runserver as deprecated in favor of tutor dev start. Since start now supports bind-mounting and breakpoint debugging, runserver is redundant and will be removed in a future release.
    • [Improvement] Allow breakpoint debugging when attached to a service via tutor dev start SERVICE.
    • [Security] Apply rate limiting security fix (see commit).
    • [Feature] Introduce the -m/--mount option in local and dev commands to auto-magically bind-mount folders from the host.
    • [Feature] Add tutor dev quickstart command, which is similar to tutor local quickstart, except that it uses dev containers instead of local production ones and includes some other small differences for the convience of Open edX developers. This should remove some friction from the Open edX development setup process, which previously required that users provision using local producation containers (tutor local quickstart) but then stop them and switch to dev containers (tutor local stop && tutor dev start -d).
    • 💥[Improvement] Make it possible to run tutor k8s exec <command with multiple arguments> (#636). As a consequence, it is no longer possible to run quoted commands: tutor k8s exec "<some command>". Instead, you should remove the quotes: tutor k8s exec <some command>.
    • 💥[Deprecation] Drop support for the TUTOR_EDX_PLATFORM_SETTINGS environment variable. It is now recommended to create a plugin instead.
    • 💥[Improvement] Complete overhaul of the plugin extension mechanism. Tutor now has a hook-based Python API: actions can be triggered at different points of the application life cycle and data can be modified thanks to custom filters. The v0 plugin API is still supported, for backward compatibility, but plugin developers are encouraged to migrate their plugins to the new API. See the new plugin tutorial for more information.
    • [Improvement] Improved the output of tutor plugins list.
    • [Feature] Add tutor [dev|local|k8s] status command, which provides basic information about the platform's status.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.17 MB)
    tutor-Linux_x86_64(25.85 MB)
  • v13.1.11(Apr 12, 2022)

    Install this version from pip with::

    pip install tutor[full]==v13.1.11
    

    Or download the compiled binaries::

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.1.11/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Security] Apply SAML security fix.
    • [Improvement] In addition to the Docker build arguments EDX_PLATFORM_REPOSITORY and NPM_REGISTRY, also support two corresponding and identically-named config.yml values serving the same purpose.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.14 MB)
    tutor-Linux_x86_64(24.13 MB)
  • v13.1.10(Apr 12, 2022)

    Install this version from pip with::

    pip install tutor[full]==v13.1.10
    

    Or download the compiled binaries::

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.1.10/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Feature] Upgrade all applications to open-release/maple.3.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.14 MB)
    tutor-Linux_x86_64(24.12 MB)
  • v13.1.9(Apr 6, 2022)

  • v13.1.8(Mar 24, 2022)

    Install this version from pip with::

    pip install tutor[full]==v13.1.8
    

    Or download the compiled binaries::

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.1.8/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Bugfix] Fix "evalsymlink failure" during k8s quickstart (#611).
    • [Bugfix] Fix "TypeError: upgrade() got an unexpected keyword argument 'non_interactive'" during local upgrade.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.13 MB)
    tutor-Linux_x86_64(24.12 MB)
  • v13.1.7(Mar 17, 2022)

    Install this version from pip with::

    pip install tutor[full]==v13.1.7
    

    Or download the compiled binaries::

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.1.7/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Bugfix] Fix dockerize on arm64 by switching to the powerman/dockerize fork (#591).
    • [Bugfix] Fix "Unexpected args" error during service initialization on Kubernetes (#611).
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.13 MB)
    tutor-Linux_x86_64(24.12 MB)
  • v13.1.6(Mar 15, 2022)

    Install this version from pip with::

    pip install tutor[full]==v13.1.6
    

    Or download the compiled binaries::

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.1.6/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Bugfix] Fix local/k8s quickstart commands when upgrading from an older release (#595).
    • [Bugfix] Fix running the default exim-relay SMTP server on arm64 (#600).
    • [Feature] Add tutor k8s apply comand, which is a direct interface with kubectl apply.
    • [Feature] Add openedx-dockerfile-minimal patch, which you can use to install custom packages and run commands as root in the Docker image.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.13 MB)
    tutor-Linux_x86_64(24.12 MB)
  • v13.1.5(Feb 14, 2022)

    Install this version from pip with::

    pip install tutor[full]==v13.1.5
    

    Or download the compiled binaries::

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.1.5/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Improvement] Upgrade all services to open-release/maple.2.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.13 MB)
    tutor-Linux_x86_64(24.12 MB)
  • v13.1.4(Feb 8, 2022)

    Install this version from pip with::

    pip install tutor[full]==v13.1.4
    

    Or download the compiled binaries::

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.1.4/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Security] Fix vulnerability in redirect url during authentication (see commit).
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.13 MB)
    tutor-Linux_x86_64(24.12 MB)
  • v13.1.3(Feb 1, 2022)

    Install this version from pip with::

    pip install tutor[full]==v13.1.3
    

    Or download the compiled binaries::

    sudo curl -L "https://github.com/overhangio/tutor/releases/download/v13.1.3/tutor-$(uname -s)_$(uname -m)" -o /usr/local/bin/tutor
    sudo chmod 0755 /usr/local/bin/tutor
    

    See the installation docs for more installation options and instructions.

    Changes

    • [Security] Fix vulnerability in call to invalid enrollment API (see commit).
    • [Bugfix] Fix "Internal Server Error / AttributeError / object has no attribute 'get_metadata'" in learning MFE.
    • [Improvement] Replace all links to github.com/edx by github.com/openedx, following the migration of all repositories.
    • [Bugfix] Fix k8s start caddy command.
    Source code(tar.gz)
    Source code(zip)
    tutor-Darwin_x86_64(16.13 MB)
    tutor-Linux_x86_64(24.12 MB)
Tutor plugin for integration of Open edX with a Richie course catalog

Richie plugin for Tutor This is a plugin to integrate Richie, the learning portal CMS, with Open edX. The integration takes the form of a Tutor plugin

Overhang.IO 2 Sep 8, 2022
peace-performance (Rust) binding for python. To calculate star ratings and performance points for all osu! gamemodes

peace-performance-python Fast, To calculate star ratings and performance points for all osu! gamemodes peace-performance (Rust) binding for python bas

null 9 Sep 19, 2022
Generates images with semantic content from distribution A in the style of distribution B

A2B Generates images with semantic content from distribution A in the style of d

Richard Herbert 2 Dec 27, 2021
A docker container (Docker Desktop) for a simple python Web app few unit tested

Short web app using Flask, tested with unittest on making massive requests, responses of the website, containerized

Omar 1 Dec 13, 2021
Bootstraparse is a personal project started with a specific goal in mind: creating static html pages for direct display from a markdown-like file

Bootstraparse is a personal project started with a specific goal in mind: creating static html pages for direct display from a markdown-like file

null 1 Jun 15, 2022
pydock - Docker-based environment manager for Python

pydock - Docker-based environment manager for Python ⚠️ pydock is still in beta mode, and very unstable. It is not recommended for anything serious. p

Alejandro Piad 16 Sep 18, 2021
This is a Docker-based pipeline for preparing sextractor-ready multiwavelength images

Pipeline for creating NB422-detected (ODI) catalog The repository contains a Docker-based pipeline for preprocessing observational data. The pipeline

null 1 Sep 1, 2022
An event-based script that is designed to improve your aim

Aim-Trainer Info: This is an event-based script that is designed to improve a user's aim. It was built using Python Turtle and the Random library. Ins

Ethan Francolla 4 Feb 17, 2022
Project repository of Apache Airflow, deployed on Docker in Amazon EC2 via GitLab.

Airflow on Docker in EC2 + GitLab's CI/CD Personal project for simple data pipeline using Airflow. Airflow will be installed inside Docker container,

Ammar Chalifah 13 Nov 29, 2022
An example using debezium and mysql with docker-compose

debezium-mysql An example using debezium and mysql with docker-compose The docker compose starts the Zookeeper, Kafka, Mysql and Debezium Connect. Aft

Horácio Dias Baptista Neto 4 May 21, 2022
Like Docker, but for Squeak. You know, for kids.

Squeaker Like Docker, but for Smalltalk images. You know, for kids. It's a small program that helps in automated derivation of configured Smalltalk im

Tony Garnock-Jones 14 Sep 11, 2022
EFB Docker image with efb-telegram-master and efb-wechat-slave

efb-wechat-docker EFB Docker image with efb-telegram-master and efb-wechat-slave Features Container run by non-root user. Support add environment vari

Haukeng 1 Nov 10, 2022
SQL centered, docker process running game

REQUIREMENTS Linux Docker Python/bash set up image "docker build -t game ." create db container "run my_whatever/game_docker/pdb create" # creating po

null 1 Jan 11, 2022
A data engineering project with Kafka, Spark Streaming, dbt, Docker, Airflow, Terraform, GCP and much more!

Streamify A data pipeline with Kafka, Spark Streaming, dbt, Docker, Airflow, Terraform, GCP and much more! Description Objective The project will stre

Ankur Chavda 206 Dec 30, 2022
A passive recon suite designed for fetching the information about web application

FREAK Suite designed for passive recon Usage: python3 setup.py python3 freak.py warning This tool will throw error if you doesn't provide valid api ke

toxic v3nom 7 Feb 17, 2022
A webapp for taking fast notes, designed for business, school, and collaboration with groups.

JOTS Journal of the Session A webapp for taking fast notes, designed for business, school, and collaboration with groups.

Zebadiah S. Taylor 2 Jun 10, 2022
Python client SDK designed to simplify integrations by automating key generation and certificate enrollment using Venafi machine identity services.

This open source project is community-supported. To report a problem or share an idea, use Issues; and if you have a suggestion for fixing the issue,

Venafi, Inc. 13 Sep 27, 2022
BestBuy Script Designed to purchase any item when it becomes available.

prerequisites: Selnium; undetected-chromedriver. This Script is designed to order an Item provided a link from BestBuy.com only.

Bransen Smith 0 Jan 12, 2022
A Microsoft reward automator, designed to work headless on a raspberry pi

MsReward A Microsoft reward automator, designed to work headless on a raspberry pi. Tested with a pi 3b+ and a pi 4 2Gb . Using a discord bot to log e

null 10 Dec 21, 2022