Introduction
What Safe Online Exam is, who this guide is for, and how to read it as a step-by-step setup path.
Safe Online Exam is a self-hosted LTI 1.3 tool that requires Safe Exam Browser (SEB) on Canvas Classic Quizzes and New Quizzes — and, critically, proves the lockdown is really running before the Canvas access code is released. Instructors toggle it on a quiz, students download a certificate-encrypted configuration, and the access code is filled for them only after the running SEB proves it is using the current configuration.
This documentation is the setup and operations guide for the people who stand the service up and keep it running — Canvas administrators, institutional IT, and system administrators. It is not the developer reference for the codebase. It takes you from nothing to a fully working, verified integration, in order.
What you are installing
Three things work together, and you own all three:
- The application — a Node.js service with a PostgreSQL database that you deploy on Google Cloud or your own Docker host.
- The Canvas registration — LTI and OAuth developer keys, an installed app, and a small theme script, all pointing at your deployed service.
- The SEB client identity — an encryption certificate whose private half lives only on managed exam devices, so only approved devices can open a configuration.
Who this is for
Canvas administrators
You manage Developer Keys, external apps, account themes, and OAuth scopes. Sections on connecting Canvas and rolling out are written for you.
Institutional IT / sysadmins
You run the service, the database, backups, and the device fleet. The deploy, operate, and troubleshooting sections are yours.
Assessment / academic-integrity leads
You decide policy — which quizzes are locked down, which tools are allowed. The rollout and usage pages explain the day-to-day surfaces.
How to read this guide
The left navigation is ordered as a path. If you are installing for the first time, follow it top to bottom:
Understand the model
How it works explains the trust and proof model in plain terms, so the configuration choices later make sense.
Plan
Prerequisites is the checklist of access, infrastructure, and decisions to settle before you touch anything. Setup overview is the whole journey on one page.
Deploy the application
Stand up the service and database on Google Cloud Run or Docker / a VPS, set its configuration, and create the SEB encryption certificate.
Connect Canvas
Create the OAuth and LTI developer keys, install the app, and load the detector script.
Roll out and operate
Verify the integration end to end, deploy the certificate to devices, and settle into operations.
One deployment per Canvas
A single deployment connects to exactly one Canvas tenant and environment. Keep separate service URLs, databases, secrets, LTI registrations, and OAuth credentials for any environments that must stay isolated (for example a test Canvas and a production Canvas). This is the most common source of confusing launch failures — see How it works.
When something breaks
The Troubleshooting section is organized by symptom — what you see in Canvas, the browser console, or SEB — and maps each to the check that resolves it. The Reference section holds the full configuration-variable table, the public endpoint list, and a glossary.