@php $h = 'font-display text-base font-semibold text-ink'; $p = 'text-sm leading-relaxed text-ink-2'; $li = 'text-sm leading-relaxed text-ink-2'; $code = 'rounded bg-inset px-1.5 py-0.5 font-mono text-[12px] text-accent-text'; @endphp

Two-factor authentication

2FA is optional but recommended. Under Settings → Security you can set up:

Important: access paths & which factor works where

A security key (YubiKey) only works over the HTTPS domain — WebAuthn needs a secure context and the domain as its identifier (rpId). Over the domain, security-key sign-in is offered and works.

Over the bare-IP / HTTP recovery path (http://<server-ip>) you cannot sign in with a security key. There you must use a backup code (Backup-Code).

TOTP works everywhere — including bare-IP/HTTP. If you use TOTP you do not need a backup code for the bare-IP path.

Password-manager extensions (Bitwarden, Kaspersky …)

Browser extensions can intercept security-key registration and offer to "save a passkey" instead. Clusev correctly requests a hardware key (cross-platform, non-resident, with the security-key hint), but a website cannot disable extensions.

Fix: turn off the extension's passkey handling for this site (e.g. Bitwarden → "Ask to save and use passkeys" off), or register the key in a browser/window without that extension (e.g. a private window). Signing in with the key works afterwards even with the extension active.