{ email dead@cxap.space dns cloudflare {$CF_API_TOKEN} order authenticate before respond order authorize before respond servers { trusted_proxies static private_ranges } certificates { automate auth.realy.nothing.help automate *.realy.nothing.help } } security { # Локальное хранилище пользователей local identity store localdb { realm local path /data/users.json } # Портал аутентификации (используем в site-блоке ниже) authentication portal authportal { # криптополитика и тайминги crypto default token lifetime {$AUTH_TOKEN_LIFETIME:-12h} enable identity store localdb # единый cookie для всех поддоменов realy.nothing.help cookie domain realy.nothing.help cookie lifetime {$AUTH_COOKIE_LIFETIME:-12h} cookie idle_timeout {$AUTH_IDLE_TIMEOUT:-30m} cookie samesite lax ui { title "Account" # можно добавить ярлыки на часто используемые сервисы links { "Portainer" "https://port.realy.nothing.help" "WhoAmI" "/whoami" } } # Всем локальным пользователям — роль admin + требование MFA transform user { match origin local action add role admin # require mfa } # И базовая роль "user" всем аутентифицированным transform user { action add role user } } # Политика для API: либо admin-роль, либо API-ключи портала authorization policy apikey_or_admin { set auth url https://auth.realy.nothing.help allow roles admin with api key auth portal authportal realm local # Явные ACL с логами acl rule { comment "Accept" match role admin allow stop log info } acl rule { comment "Deny" match any deny log warn } } } auth.realy.nothing.help { # сам портал на отдельном хосте route { authenticate with authportal } # Базовые security-заголовки header { Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" X-Content-Type-Options "nosniff" X-Frame-Options "DENY" Referrer-Policy "no-referrer" } } # Обычная «пользовательская» защита: просто требует валидную сессию, # редиректит на портал, прокидывает клеймы в заголовки. (auth_forward) { authorize { set auth url https://auth.realy.nothing.help inject headers with claims } } # Защита API: только admin или по API-ключу (policy объявлена выше) (authorize_apikey_or_admin) { authorize with apikey_or_admin }