Secure external access
Publish selected applications through Cloudflare and Nginx Proxy Manager while protecting administrative services with authentication and MFA.
Container Platform Case Study
A secure, observable and maintainable container platform supporting public applications, monitoring, identity and security, with file-backed secret delivery and validated encrypted recovery.
Executive Summary
The Docker Engineering Platform provides the foundation for the applications and services demonstrated throughout this portfolio.
Rather than running individual containers only to learn their basic commands, I developed a connected environment where applications can be securely published, authenticated, monitored, logged, protected and maintained over time.
The platform hosts the portfolio, monitoring services, security tooling, authentication, operational utilities and specialist workloads. This provides practical experience of the full service lifecycle—from initial planning and deployment through monitoring, troubleshooting, change and continual improvement.
The Challenge
Running isolated containers does not demonstrate how a platform will behave under real operational requirements.
The challenge was to create an environment incorporating secure external access, identity, networking, persistent data, monitoring, logging, alerting, security response, documentation and repeatable change.
Project Objectives
Publish selected applications through Cloudflare and Nginx Proxy Manager while protecting administrative services with authentication and MFA.
Collect metrics and logs centrally so infrastructure, containers and applications can be monitored from one platform.
Use Docker Compose, Git and documented configuration to make deployments understandable and reproducible.
Design the platform so failures can be detected, investigated and resolved without relying on undocumented knowledge.
Integrate behavioural threat detection and automated firewall enforcement into the public-service architecture.
Create a safe environment for developing modern infrastructure, cloud, container and automation skills.
Delivery Approach
The platform evolved in controlled stages, with each phase adding a specific capability while preserving the existing operational environment.
Established the environment as an operational engineering platform rather than a collection of unrelated containers.
Implemented Docker Compose structures, shared networks, persistent storage and service-management conventions.
Introduced Cloudflare, Nginx Proxy Manager, TLS certificates and controlled external access.
Integrated Authelia, MFA, CrowdSec and automated firewall enforcement.
Added Prometheus, Grafana, Loki, exporters, dashboards and operational alerts.
Moved configuration into Git, documented architecture and continually refined platform operation.
Core Components
Container Platform
Public Access
Identity
Metrics
Visualisation
Logging
Security
Operations
Platform Architecture
Engineering Challenges
Services spread across separate Compose stacks could not always resolve or communicate with one another.
Introduced shared external Docker networks and verified communication from the consuming container.
Nginx Proxy Manager, Grafana, Prometheus and application services can communicate without unnecessary host-port exposure.
Administrative applications required external access without exposing them directly or weakening authentication.
Combined Cloudflare, Nginx Proxy Manager, Authelia and MFA with path-specific access policies.
Protected services require authentication while selected public pages and dashboards remain accessible.
Firewall activity and CrowdSec decisions were difficult to explain using raw logs and command output.
Built a custom firewall exporter, Prometheus metrics and Grafana security dashboards.
Security activity is now measurable, alertable and understandable through live operational views.
Independent stacks can become difficult to maintain when naming, networks, labels and deployment methods differ.
Standardised Compose conventions, directory structures, labels and deployment practices.
The environment is easier to understand, troubleshoot and extend.
Operational Practices
Prometheus and Grafana provide infrastructure, container, application and security visibility.
Grafana alerts identify unavailable exporters, failed monitoring targets and unusual firewall activity.
Loki, Promtail and Dozzle support central investigation of application and reverse-proxy behaviour.
Cloudflare, TLS, Authelia, MFA, CrowdSec and Linux firewall controls protect public services.
Configuration and encrypted recovery changes are version controlled, while protected live credentials use file-backed delivery and narrow runtime reconciliation.
Architecture, implementation decisions and troubleshooting steps are documented alongside the platform.
Operational Outcomes
Skills Demonstrated
Lessons Learned
Monitoring and security are most effective when considered during platform design rather than added after deployment.
Shared conventions for networks, volumes, names and deployment processes greatly reduce troubleshooting time.
Documentation and version control make infrastructure changes safer, easier to review and less dependent on individual memory.
Most importantly, operating a platform over time exposes integration, support and maintenance challenges that cannot be learned from an isolated technical demonstration.
Live Evidence
A fixed Grafana dashboard snapshot and related case studies provide documented evidence of the platform in operation.