OpenMFA gitea.milesward.dev/mward4/openmfa:latest https://gitea.milesward.dev/mward4/-/packages/container/openmfa bridge sh false https://gitea.milesward.dev/mward4/OpenMFA/issues https://gitea.milesward.dev/mward4/OpenMFA Self-hosted TOTP authenticator with live delivery to Discord, Slack or Telegram. Add accounts by uploading a QR code, scanning with the camera, pasting an otpauth:// link, or importing a Google Authenticator export (one export QR carries many accounts; you get a checklist, and duplicates are detected). The web UI lists every account with its rotating code, the way Google or Microsoft Authenticator does. The distinctive part: each account keeps ONE message in your chosen channel, rewritten in place every time the code rolls. Three accounts means three live tiles that keep themselves current. Codes are posted as copyable text; on Discord a rendered WebP tile is attached as well. Pick the platform during first-run setup or later in Settings. Discord needs only a webhook URL. Slack needs a bot token (its webhooks can't edit messages). Telegram needs a bot token, and the app detects your chat ID for you. SECURITY NOTE: anyone who can read that channel can read these codes, which is most of the point of a second factor. Use a private channel only you are in, and treat the webhook URL or bot token as a secret. TOTP secrets are encrypted at rest with XChaCha20-Poly1305. Tools:Utilities Security: http://[IP]:[PORT:8720]/ https://gitea.milesward.dev/mward4/OpenMFA/raw/branch/main/docs/brand/icon-256.png One of: a Discord incoming-webhook URL; a Slack app with the chat:write bot scope plus a channel ID; or a Telegram bot token from @BotFather. All can be added after install from Settings → Delivery. 8720 /mnt/user/appdata/openmfa info,openmfa=info