Skip to content

Installation

Mihály Dobos-Kovács edited this page Mar 31, 2025 · 4 revisions

Depencencies

The main dependencies of the project are:

  • Node.js 18+
  • MongoDB 8+

Other dependencies are listed in package.json. Install them by running:

npm install

Configuration

Configure the project by setting the following variables:

Database

  • DATABASE_HOST [required, string]: The host of the MongoDB server.
  • DATABASE_PORT [required, string]: The port of the MongoDB server.
  • DATABASE_NAME [required, string]: The name of the database in the MongoDB server.
  • DATABASE_USERNAME [required, string]: The username which FESEIP can connect to the MongoDB server.
  • DATABASE_PASSWORD [required, string]: The password which FESEIP can connect to the MongoDB server.

Important

FESEIP required authentication enabled on the MongoDB server.

FESEIP

  • PORT [default=3000, number]: The HTTP port the service will run on.
  • ENVIRONMENT [default=development, production | development]: Enables production or development mode.
  • LTI_KEY [required, string]: A pseudo random string that is used to secure the LTI connection. Keep it secure!
  • LTI_REDIRECT_URI [required, string]: Public URL of the FESEIP server. Needed for LTI redirection.
  • LOG_DIR [required, string]: A folder in which FESEIP can store its log files.

Admin account

  • ADMIN_BASIC_AUTH [default=off, on | off]: Enables a username-password-based authentication for the admin account.
  • ADMIN_BASIC_AUTH_USERNAME [required if ADMIN_BASIC_AUTH=on, string]: The username for the admin account.
  • ADMIN_BASIC_AUTH_PASSWORD[required if ADMIN_BASIC_AUTH=on, string]: The password for the admin account.
  • ADMIN_LTI_AUTH [default=off, on | off]: Enables elevating designated users to admin after an LTI authentication.

Note

As authentication and authorization is delegated to LTI, there has to be an admin account to allow bootstrapping the system. Recommendation:

  • Enable ADMIN_BASIC_AUTH
  • Setup the connection to the LMS
  • Login via the LMS
  • Elevate the newly created user as an admin
  • Disable ADMIN_BASIC_AUTH and enable ADMIN_LTI_AUTH
  • From now on, it is not possible to log in with a username and password, only via LTI

Re-enabling ADMIN_BASIC_AUTH provides a backdoor to the system to anyone who has access to the server, in case of an administrator losing access.

You can set them either in server/.env, or (preferably) override the values by defining them as environmental variables.

Building

Build FESEIP with:

npm run build

Running

Start FESEIP with:

npm run start

Stop FESEIP with:

npm run stop

Note

FESEIP uses pm2 to daemonize itself in the background.

Bootstrapping

  • Visit FESEIP in the browser and login.
  • Navigate to the Course tab and add a new course:
    • apiKey: Pseudo random string that acts as an api key to connect an LMS to FESEIP
    • name: The name of the course (descriptive for internal use)
    • type: The payload kind of the course
  • Open up the LMS of your choice and configure an external LTI tool.
    • Tool URL: https://<FESEIP-URL>/lti
    • LTI version: LTI 1.3
    • Public key type: Keyset URL
    • Public keyset: https://<FESEIP-URL>/lti/keys
    • Initiate login URL: https://<FESEIP-URL>/lti/login
    • Redirection URI: https://<FESEIP-URL>/lti
    • Custom parameters: api-key=<API KEY from previous step>

Note

Do not forget to enable IMS LTI Assignment and Grade Services and IMS LTI Names and Role Provisioning if the selected payload uses them.

Important

Always share launcher's name with the tool.

Note

FESEIP does not support LTI Deep Linking yet, so setting the API key in the custom parameters is needed for now.

  • Make not of the Client ID generated by the LMS
  • Navigate to the Platforms tab, and add a new platform
    • Url: The url of your LMS
    • Name: The name of the platform (descriptive for internal use)
    • Client ID: The Client ID from the previous step.
  • Open the external tool in the LMS in a new tab
  • [optional but recommended] Navigate to the Users tab in the original tab, and elevate the newly created user to an admin. Do not forget to enable Danger mode to do so.
Clone this wiki locally