-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
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
Configure the project by setting the following variables:
- 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.
- 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_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.
Build FESEIP with:
npm run build
Start FESEIP with:
npm run start
Stop FESEIP with:
npm run stop
Note
FESEIP uses pm2 to daemonize itself in the background.
- 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>
-
Tool URL:
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.
Copyright © 2025 Budapest University of Technology and Economics