Setup Token Protected: Access is protected by an environment token (HROOT_SETUP_TOKEN).
Basic Configuration 20 settings

[OPTIONAL] Run system in demo mode (simulated logins, email, SMS and push interception, Kimai API mock)

Required

[REQUIRED] Domain for URL generation (e.g. hroot.example.com) - NO HTTP:// AND NO TRAILING SLASHES!

Required

[REQUIRED] Protocol (https or http)

Required

[REQUIRED] E-Mail Settings for system communication users will see this mailadress to contact you

Required

sending mail adress

[OPTIONAL] Fallback language if a translation is missing (defaults to en). This language is used when a translation in the selected language is not available.

[OPTIONAL] Application & server timezone (e.g. Europe/Berlin, Europe/Vienna, Europe/Zurich, UTC)

Required

[REQUIRED] ActionMailer / SMTP settings MAIL_DELIVERY_METHOD can be: smtp, sendmail, or test

[OPTIONAL] SMTP Details (Only needed if MAIL_DELIVERY_METHOD=smtp)

Secret
Required Secret Configured

[REQUIRED] Secret Key Base (for signing & encrypting cookies) Generate one with: docker compose run --rm web bundle exec rails secret // without Docker, run: bundle exec rails secret

Required

[REQUIRED] Database Connection Details Internal DB via Docker: "host=db" Internal DB on Host: "host=localhost" External DB Server (recommended in production): "host[=IP/Address of DB server]"

Secret Configured

External port for the MySQL Database (only if using internal DB)

Global Override (e.g. for Docker / single DB setup)

Server & Logging 22 settings
Required

[REQUIRED] Environment: production, staging, development, or test The database settings will automatically apply to the RAILS_ENV defined here.

set to true for production, false for development

[OPTIONAL] Logging level: debug, info, warn, error, fatal (default: info)

[OPTIONAL] Initial setup wizard: Enable this to force first-run setup in the web app until a banking_admin exists.

Secret Configured

Optional token required to access /setup while wizard is active.

[OPTIONAL] Intercept outgoing emails and redirect to INTERCEPTOR_EMAIL without delivering to participants (defaults to DEMO_MODE value if un-set)

[OPTIONAL] Intercept outgoing SMS and redirect to SMS_INTERCEPTOR_NUMBER or log without delivering to recipients (defaults to DEMO_MODE value if un-set)

[OPTIONAL] Intercept Web Push browser notifications and suppress live delivery to participant devices (defaults to DEMO_MODE value if un-set)

Required

[REQUIRED] Internal app port

[OPTIONAL] Subpath if hroot is served from a subdirectory (e.g. /hroot). Otherwise leave empty.

Required

mail where logs are send to

Mail for System errors

[OPTIONAL] Non-production Interceptor (Redirect all mails to this address if Rails.env != production)

Required

[REQUIRED] Database Names If these are empty, hroot uses the environment name (e.g. hroot_production)

[OPTIONAL] Test Database Credentials, if it deviates from Production-DB-User

Secret Configured
Secret Configured

[OPTIONAL] Root password if using Internal MySQL container

Shibboleth / SAML SSO 31 settings

[OPTIONAL] Set to true to use Mockup Shibboleth login instead of real IdP (defaults to DEMO_MODE value if un-set)

Enrollment Verification Fallback: Ask for an identity document upload before booking a session if a user cannot verify via Shibboleth.

Discovery Service Mode: 'direct' (Single IdP), 'embedded' (In-page search / SeamlessAccess), 'redirect' (DFN WAYF) See documentation in wiki (Shibboleth-Integration.md) for full setup details.

Preferred Home Institution Name for Login Buttons & Autofill (e.g. "UHH", "Uni Köln", "LMU München"): - If SET: Login button will display "Login via <Name>" and route directly to this institution. In 'redirect' mode, a secondary link "Andere Hochschule / eduGAIN wählen" is shown below. - If UNSET / EMPTY: HRoot runs in pure Discovery / Federation mode. The main login button will show a generic label ("Login / Registrierung via Hochschul-Account") and redirect directly to the DFN WAYF / Discovery Service where users can choose from all participating universities.

Optional discovery service URL when SHIBBOLETH_DISCOVERY_MODE=redirect (defaults to DFN-AAI WAYF)

SERVICE PROVIDER (SP) & IDENTITY PROVIDER (IdP) SETTINGS Entity ID identifying this hroot instance in federation metadata (must match the URL registered at DFN/eduGAIN):

Public base URL of this hroot instance (used for SAML ACS callback generation):

Primary Identity Provider (Home Institution or Test-IdP): For UHH (Production):

[OPTIONAL] Fetch IdP endpoints and certificate automatically from remote IdP Metadata XML:

Security & Verification settings: Set to true if IdP explicitly signs inner Assertions separately

Secret Configured

CERTIFICATES & KEYS Paths to your SP certificate & private key, and the IdP certificate:

Secret
Secret

Alternative: Inline PEM strings (useful in Docker secrets or cloud PaaS):

Secret
Secret

ATTRIBUTE MAPPING (OIDs & FriendlyNames) Unique User Identifier OID (Defaults to eduPersonPrincipalName):

Mapping of hroot User model attributes to Shibboleth SAML attribute names/OIDs. Format: SHIBBOLETH_MAP_<USER_FIELD>=<Shibboleth Attribute Name or OID> You can also provide multiple fallback OIDs comma-separated (e.g. schacHomeOrganization, o). Default standard OIDs (eduPerson, SCHAC, DFN): mail

givenName

sn

schacPersonalUniqueCode

schacHomeOrganization, fallback: o

schacDateOfBirth

schacGender

dfnEduPersonFieldOfStudyString, fallback: HIS

dfnEduPersonBranchAndDegree

eduPersonAffiliation

Comma-separated list of affiliation values that confirm student/verified status:


Dynamic Custom Field Attribute Mappings

Map user custom fields to SAML attribute names or OIDs delivered by your Identity Provider (e.g. urn:oid:1.3.6.1.4.1.25178.1.2.14).

No active custom fields defined yet. You can create custom fields under Options → Custom Fields and specify their Shibboleth attribute mappings anytime.
WebPush & Security 2 settings
Secret Configured

Generate VAPID keys with: bundle exec rails runner "puts WebPush.generate_key" Leave empty or omit if you do not want Web Push notifications.

Secret Configured
Bot Protection 3 settings

Prevent spam registrations on public sign-up pages using hCaptcha - see their Website to obtain Keys.

Secret Configured
Secret Configured
SMS Gateway 10 settings

send SMS reminders

# Settings for 'email' mode (only relevant if SMS_SEND_MODE=email)

# Settings for 'api' mode (sms-gate.app) (only relevant if SMS_SEND_MODE=api) Domain for the SMS Gateway (only relevant if using Docker and SMS_SEND_MODE=api) - default will be "sms"+your domain name, e.g "sms.hrootdomainname.com" This will be used as VIRTUAL_HOST and for SSL (Let's Encrypt)

[OPTIONAL] Settings for 'api' mode (sms-gate.app) (only relevant if SMS_SEND_MODE=api) If left empty, it automatically defaults to: - http://localhost:3001/api/3rdparty/v1/messages (if APP_DOMAIN is localhost) - https://sms.${APP_DOMAIN}/api/3rdparty/v1/messages (otherwise)

Secret

Important: This password is used as API password in hroot

Secret Configured

Private Token used in sms-gateway to register/couple the device

SMS Interceptor (Redirect all API-SMS to this number if Rails.env != production)

Integrations & Proxy 13 settings
Secret Configured

[OPTIONAL] Let's Encrypt Email (for SSL renewal notifications in Docker setup)

Required

[REQUIRED] External ports for the Nginx Proxy (Standard 80 and 443)

[OPTIONAL] Path to custom logo Can be a file in assets (mainlogo.png), a file in /public/ (/logo.png) or a full URL

Kimai Integration (time, cost & budget tracking)

Secret
System Updates & Docker 6 settings

[OPTIONAL] Docker Image source (defaults to official image on GitHub Packages)

[OPTIONAL] GitHub repository used for version checks and updates (e.g. wiso-forschungslabor/hroot or your-lab/hroot)

[OPTIONAL] Branch to track for updates (defaults to master)

Secret

[OPTIONAL] Personal Access Token (PAT with repo read scope) for private repositories

[OPTIONAL] Webhook URL / Secret if using an external updater daemon (e.g. adnanh/webhook)

Secret