Skip to main content
Version: 0.0.5

Service access

How production apps are exposed and authenticated. Use this when adding a Traefik router or a new stack. For the auth components (Authelia, LLDAP, and deprecated IdPs), see Authentication.

Layers

LayerScopeRole
Traefik (*.dripdrop.pro)Internet / HTTPSTLS, routing, CrowdSec on websecure
Authelia (authelia middleware)Per-routerForward-auth; rules in ${DOCKER_APPDATA}/authelia/config/configuration.yml
App-native authInside the appLogin UI, OIDC client, or API keys
Host-published portsLAN / TailscaleDirect to the NAS; bypasses Traefik and CrowdSec
Docker networksContainer-to-containerPer-stack isolation; databases are not published publicly

CrowdSec AppSec is configured fail-open when the AppSec component is down or returns an error (see Infrastructure). IP reputation bans from the LAPI still apply when CrowdSec is healthy.

Access patterns

PatternTraefikWho can accessExamples
Authelia forward-authauthelia middleware (optionally admin-only in Authelia rules)Authenticated users per access_controlSonarr, Radarr, Grafana, Homepage, LLDAP UI
App login (public URL)No AutheliaAnyone with app credentialsJellyfin, Seerr, Nextcloud, Navidrome
OIDC via AutheliaNo forward-auth; app handles loginUsers who complete Authelia OIDC in the appOpen WebUI (ollama.dripdrop.pro)
Public dashboardNo AutheliaAnyone who can reach the URLGatus (gatus.dripdrop.pro)
App login (own UI)No AutheliaUsers with Healthchecks credentialsHealthchecks
Public siteNo AutheliaInternetDripdrop (dripdrop.pro)
API without forward-authSeparate router, often PathRegexp('^/api')API key or app authSportarr /api, Sonarr/Radarr/Bazarr API routers, qBittorrent API

Grafana uses the authelia middleware with an admin-only Authelia rule. Inside the container, anonymous admin is enabled so authenticated users do not need a second Grafana login.

Monitoring

ToolWhat it covers
Gatus (builds/gatus/config.yaml)Authelia-protected URLs (expects 401 + Authelia body) and internal docker-net health
Uptime RobotPublic and OIDC user-facing URLs (Jellyfin, Seerr, Nextcloud, Navidrome, Open WebUI, Dripdrop, …)

Do not duplicate Uptime Robot checks in Gatus unless you want Discord alerts on the same failure twice.

Adding a new service

  1. Pick a pattern above (admin tool → Authelia; family app → app login; etc.).
  2. Add Traefik labels in the stack's docker-compose*.yaml (exposedByDefault is false — set traefik.enable: "true" explicitly).
  3. For Authelia-protected services, add a matching access_control rule in Authelia config and the authelia middleware on the router.
  4. Add Gatus protected + internal checks for non-public admin services, or Uptime Robot for public user-facing URLs.
  5. Host-published ports are intentional for LAN/Tailscale (Jellyfin, VMs, Ollama API, etc.); they are outside the Traefik/CrowdSec path by design.