Semestra

Email

Verification codes are logged until you configure SMTP or Resend.

Semestra signs users in with one-time codes sent by email (passwords and Google sign-in are optional extras). SEMESTRA_EMAIL_BACKEND picks how mail is sent.

BackendBehaviour
consoleDefault. Prints each message, including the code, to the log
smtpSends through your SMTP server
resendSends through Resend. The API refuses to start without a key
docker compose logs -f semestra   # console: find the code here

SMTP

.env
SEMESTRA_EMAIL_BACKEND=smtp
SEMESTRA_EMAIL_FROM=Semestra <semestra@example.com>
SEMESTRA_SMTP_HOST=smtp.example.com
SEMESTRA_SMTP_PORT=587
SEMESTRA_SMTP_USERNAME=semestra@example.com
SEMESTRA_SMTP_PASSWORD=...
SEMESTRA_SMTP_STARTTLS=true

Resend

.env
SEMESTRA_EMAIL_BACKEND=resend
SEMESTRA_EMAIL_FROM=Semestra <no-reply@example.com>
SEMESTRA_RESEND_API_KEY=...

The sending domain must be verified in Resend. SEMESTRA_EMAIL_REPLY_TO sets an optional reply-to address for either backend.

Once email works, anyone who can reach the instance can create an account. Single-user mode (SEMESTRA_SINGLE_USER, sign-up closes after the first account) is planned but not implemented yet; until then, keep a public instance behind your own access control if it is only for you.

On this page