- Add CSP3 support for style/script: include -elem and -attr directives - Base (style-src, script-src) now unions elem/attr (CSP2/Safari fallback) - Respect explicit base disables (e.g. style-src.unsafe-inline: false) - Hashes only when 'unsafe-inline' absent in the final base tokens - Nginx: set CSP only for HTML/worker via header_filter_by_lua_block; drop for subresources - Remove per-location header_filter; keep body_filter only - Update app role flags to *-attr where appropriate; extend desktop CSS sources - Add comprehensive unit tests for union/explicit-disable/no-mirror-back Ref: https://chatgpt.com/share/68f87a0a-cebc-800f-bb3e-8c8ab4dee8ee
Nginx Docker Reverse Proxy 🚀
Description
This Ansible role deploys Nginx as a high-performance reverse proxy in front of Docker-hosted services.
It provides automatic TLS integration, WebSocket support, and a flexible templating system for per-application configuration.
Overview
Optimised for Arch Linux, the role installs Nginx, prepares opinionated configuration snippets and exposes a simple interface for other roles to drop in new virtual-hosts.
It plays well with Let’s Encrypt, OAuth2 Proxy, and your existing Docker stack.
Purpose
The goal of this role is to deliver a hassle-free, production-ready reverse proxy for self-hosted containers, suitable for homelabs and small-scale production workloads.
Features
- Automatic TLS & HSTS — integrates with the sys-svc-webserver-https role for certificate management.
- Flexible vHost templates — basic and ws_generic flavours cover standard HTTP and WebSocket applications.
- Security headers — sensible defaults plus optional X-Frame-Options / CSP based on application settings.
- WebSocket & HTTP/2 aware — upgrades, keep-alive tuning, and gzip already configured.
- OAuth2 gating — drop-in support when web-app-oauth2-proxy is present.
- Modular includes — headers, locations, and global snippets are factored for easy extension.
Credits 📝
Developed and maintained by Kevin Veen-Birkenbach.
More at https://www.veen.world
Part of the Infinito.Nexus Project — licensed under the Infinito.Nexus NonCommercial License