Feature Comparison: dracory/auth vs Authelia
Comparison of github.com/dracory/auth with Authelia, the self-hosted SSO portal and reverse-proxy auth layer.
High-Level Differences
| dracory/auth | Authelia | |
|---|---|---|
| Type | Go library embedded in your app | Identity provider / reverse-proxy auth layer |
| Primary use | Per-app login flows | SSO across many apps behind a proxy |
| Deployment | No extra infrastructure | Dedicated service + config + proxy rules |
| Architecture | Your handlers call its APIs | Requests are intercepted before reaching your app |
Feature Comparison
| dracory/auth | Authelia | |
|---|---|---|
| Email/password | ✅ | ✅ |
| Otp (codes/links) | ✅ | ❌ |
| Magic links | ✅ | ❌ |
| MFA / TOTP / WebAuthn | ❌ | ✅ TOTP, WebAuthn, Duo |
| SSO across apps | ❌ | ✅ |
| OIDC provider | ❌ | ✅ |
| Reverse proxy auth | ❌ | ✅ Traefik/Nginx/Caddy/Envoy |
| Middleware | ✅ Web/API/optional | ✅ Proxy-level (all apps) |
| Multiple login methods simultaneously | ✅ Composable via NewMultiMethodAuth + types.Method (otp, magiclink, password, authknight, custom methods) | {mm} |
|---|---|---|
| Remember-me (extended sessions) | ✅ Built-in opt-in session extension | {rm} |
Legend: ✅ built-in · ⚠️ partial/conditional · ❌ not available
Branding & Layout Options
| Aspect | dracory/auth | Authelia |
|---|---|---|
| Full layout control | ✅ FuncLayout wraps any page body in your own site shell (own <head>, nav, footer) | ❌ Fixed portal pages; not embeddable in your own site shell |
| Theming / CSS | ✅ ThemeCSS (any hosted stylesheet / Bootlegance) + CustomCSS inline overrides | ⚠️ Preset themes (light/dark/grey/auto) + custom assets/logo; no full custom CSS |
| Brand name / logo | ✅ BrandName, BrandTagline, BrandLogoURL rendered above the login card | ⚠️ Custom logo asset; limited text customization |
| Email templates | ✅ Per-flow FuncEmailTemplate* callbacks — full control | ⚠️ On-disk customizable templates |
When to Choose Authelia
- Internal tools / homelab: protect many apps behind a reverse proxy with
one login portal and strong MFA.
- You need SSO without touching each app's code.
When to Choose dracory/auth
- A single Go app owning its own login UX (email codes, magic links,
password, impersonation) with no proxy/service layer.