Infrastructure

The following is a somewhat complete overview of the infrastructure running on this machine. I regret using Mermaid - manually drawing the setup using Drawio would've been smoother

Infrastructure Diagram.

Core Infrastructure Components

Traefik (Reverse Proxy)

Traefik is configured with several key features:

Authelia (Authentication)

Authelia serves as the authentication middleware, providing:

Security Layer

The stack includes several security-focused components:

Crowdsec

Development and Operations Tools

Version Control and CI/CD

Gitea

Woodpecker CI

Monitoring and Management

Portainer

Uptime Kuma

Dozzle

Storage and File Management

MinIO

Filebrowser

Application Stack

Octopus Energy Monitor

The stack includes a custom application for energy monitoring:

Securing this app’s backend is done via verifying the request’s user with Authelia and confirming the necessary group is present. Swagger UI is also enabled for the Spring Boot application, the UI is protected by a path matching rule within Authelia to block unregistered users accessing it.

Networking

The infrastructure uses two main networks:

  1. proxy network for external-facing services
  2. internal network for inter-service communication

This separation provides an additional layer of security by isolating internal services from external access.

Additional Services

RSS Feed Management

VPN Access

Update Management

Security Implementation

The security model follows a defense-in-depth approach:

  1. Edge Security

    • Traefik handles SSL termination
    • Automatic HTTPS redirection
    • Cloudflare integration for DNS and proxy
  2. Authentication Layer

    • Authelia provides flexible authentication policies
    • Redis backend for session management
    • Multiple authentication factors available
  3. Threat Detection

    • Crowdsec monitors for security threats
    • Integration with multiple services
    • Automated response through bouncers
  4. Network Isolation

    • Separate networks for different security contexts
    • Internal services isolated from external access
    • Controlled exposure through Traefik

Disclaimer: