6
0
mirror of https://github.com/ChristianLight/tutor.git synced 2024-09-28 04:09:01 +00:00
Go to file
Régis Behmo 01b58d9d75 feat: run all services as unprivileged containers
With this change, containers are no longer run as "root" but as unprivileged
users. This is necessary in some environments, notably some Kubernetes
clusters.

To make this possible, we need to manually fix bind-mounted volumes in
docker-compose. This is pretty much equivalent to the behaviour in Kubernetes,
where permissions are fixed at runtime if the volume owner is incorrect. Thus,
we have a consistent behaviour between docker-compose and Kubernetes.

We achieve this by bind-mounting some repos inside "*-permissions" services.
These services run as root user on docker-compose and will fix the required
permissions, as per build/permissions/setowner.sh These services simply do not
run on Kubernetes, where we don't rely on bind-mounted volumes. There, we make
use of Kubernete's built-in volume ownership feature.

With this change, we get rid of the "openedx-dev" Docker image, in the sense
that it no longer has its own Dockerfile. Instead, the dev image is now simply
a different target in the multi-layer openedx Docker image. This makes it much
faster to build the openedx-dev image.

Because we declare the APP_USER_ID in the dev/docker-compose.yml file, we need
to pass the user ID from the host there. The only way to achieve that is with a
tutor config variable. The downside of this approach is that the
dev/docker-compose.yml file is no longer portable from one machine to the next.
We consider that this is not such a big issue, as it affects the development
environment only.

We take this opportunity to replace the base image of the "forum" image. There
is now no need to re-install ruby inside the image. The total image size is
only decreased by 10%, but re-building the image is faster.

In order to run the smtp service as non-root, we switch from namshi/smtp to
devture/exim-relay. This change should be backward-compatible.

Note that the nginx container remains privileged. We could switch to
nginxinc/nginx-unprivileged, but it's probably not worth the effort, as we are
considering to get rid of the nginx container altogether.

Close #323.
2021-12-20 21:19:10 +01:00
.github goodbye "edge" hello "nightly"! 2021-10-14 12:59:57 +02:00
bin feat: add richie to bundled plugins 2021-11-09 11:48:32 +01:00
docs feat: run all services as unprivileged containers 2021-12-20 21:19:10 +01:00
requirements feat: add richie to bundled plugins 2021-11-09 11:48:32 +01:00
tests fix: segmentation fault on Mac OS M1 (Big Sur) 2021-09-17 10:44:52 +02:00
tutor feat: run all services as unprivileged containers 2021-12-20 21:19:10 +01:00
tutor-openedx fix: make sure that tutor-openedx is an empty package 2021-07-06 09:42:57 +02:00
.gitignore fix: make sure that tutor-openedx is an empty package 2021-07-06 09:42:57 +02:00
.gitlab-ci.yml Move to an included CI configuration file 2020-10-02 15:22:30 +02:00
CHANGELOG-nightly.md feat: run all services as unprivileged containers 2021-12-20 21:19:10 +01:00
CHANGELOG.md fix: openedx image wasn't building on ARM64 due to missing libgeos-dev 2021-12-14 12:10:49 +01:00
CONTRIBUTING.rst Clarify contributing/troubleshooting instructions 2020-11-30 15:32:43 +01:00
Dockerfile feat: switch the package name from "tutor-openedx" to "tutor" 2021-07-03 11:07:37 +02:00
LICENSE.txt gpl -> agpl 2019-01-18 15:19:18 +01:00
Makefile feat: add richie to bundled plugins 2021-11-09 11:48:32 +01:00
MANIFEST.in Fix missing requirements file in pypi package 2019-10-19 18:30:11 +02:00
README.rst docs: shields that are actually useful 2021-10-14 12:59:57 +02:00
setup.py feat: switch the package name from "tutor-openedx" to "tutor" 2021-07-03 11:07:37 +02:00
tutor.spec feat: upgrade to open-release/lilac.master 2021-06-08 23:29:12 +02:00

.. _readme_intro_start:

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

|

.. image:: https://overhang.io/static/img/tutor-logo.svg
  :alt: Tutor logo
  :width: 500px
  :align: center

.. image:: https://img.shields.io/static/v1?logo=github&label=Git&style=flat-square&color=brightgreen&message=Source%20code
  :alt: Source code
  :target: https://github.com/overhangio/tutor

.. image:: https://img.shields.io/static/v1?logo=discourse&label=Forums&style=flat-square&color=ff0080&message=discuss.overhang.io
  :alt: Forums
  :target: https://discuss.overhang.io

.. image:: https://img.shields.io/static/v1?logo=readthedocs&label=Documentation&style=flat-square&color=blue&message=docs.tutor.overhang.io
  :alt: Documentation
  :target: https://docs.tutor.overhang.io

.. image:: https://img.shields.io/pypi/v/tutor?logo=python&logoColor=white
  :alt: PyPI releases
  :target: https://pypi.org/project/tutor

.. image:: https://img.shields.io/github/license/overhangio/tutor.svg?style=flat-square
  :alt: AGPL License
  :target: https://www.gnu.org/licenses/agpl-3.0.en.html

.. image:: https://img.shields.io/static/v1?logo=twitter&label=Twitter&style=flat-square&color=1d9bf0&message=@overhangio
  :alt: Follow us on Twitter
  :target: https://twitter.com/overhangio/

.. image:: https://img.shields.io/static/v1?logo=youtube&label=YouTube&style=flat-square&color=ff0000&message=@overhangio
    :alt: Follow us on Youtube
    :target: https://www.youtube.com/c/OverhangIO

**Tutor** is the Docker-based `Open edX <https://openedx.org>`_ 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 hundreds 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 <https://overhang.io/tutor/pricing>`__.

Features
--------

* 100% `open source <https://github.com/overhangio/tutor>`__
* Runs entirely on Docker
* World-famous 1-click `installation and upgrades <https://docs.tutor.overhang.io/install.html>`__
* Comes with batteries included: `theming <https://github.com/overhangio/indigo>`__, `SCORM <https://github.com/overhangio/openedx-scorm-xblock>`__, `HTTPS <https://docs.tutor.overhang.io/configuration.html#ssl-tls-certificates-for-https-access>`__, `web-based administration interface <https://github.com/overhangio/tutor-webui>`__, `mobile app <https://github.com/tutor/tutor-android>`__, `custom translations <https://docs.tutor.overhang.io/configuration.html#adding-custom-translations>`__...
* Extensible architecture with `plugins <https://docs.tutor.overhang.io/plugins.html>`__
* Works with `Kubernetes <https://docs.tutor.overhang.io/k8s.html>`__
* Amazing premium plugins available in the `Tutor Wizard Edition <https://overhang.io/tutor/wizardedition>`__, including `Cairn <https://overhang.io/tutor/plugin/cairn>`__ the next-generation analytics solution for Open edX.
* No technical skill required with the `1-click Tutor AWS image <https://docs.tutor.overhang.io/install.html#cloud-deployment>`__

.. _readme_intro_end:

.. image:: ./docs/img/quickstart.gif
    :alt: Tutor local quickstart
    :target: https://terminalizer.com/view/91b0bfdd557

Quickstart
----------

1. Install the `latest stable release <https://github.com/overhangio/tutor/releases>`_ of Tutor
2. Run ``tutor local quickstart``
3. You're done!

Documentation
-------------

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

Is there a problem?
-------------------

Please follow the instructions from the `troubleshooting section <https://docs.tutor.overhang.io/troubleshooting.html>`__ in the docs.

.. _readme_support_start:

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.

.. _readme_support_end:

.. _readme_contributing_start:

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 <https://docs.tutor.overhang.io/tutor.html#contributing>`__.

.. _readme_contributing_end: