Selfhosted Design Architecture
This document outlines the design, setup, and implementation of my selfhosted architecture. The goal is to create a working environment for hosting various applications within a home lab setup.
Design Architecture Link to heading
Setup Link to heading
Home Network Link to heading
The foundation of this architecture is the home network, managed by my home router.
User Devices Link to heading
Multiple devices, such as PCs, smartphones, and tablets, are connected to this home network. These devices act as endpoints for interacting with the services hosted within the home lab.
Adguard DNS Server Link to heading
An Adguard DNS server is utilized to filter out unwanted ads, enhance privacy and most importantly having our own local custom domains. It functions as a DNS resolver, blocking ads, trackers, and malicious websites, thereby providing a cleaner and safer browsing experience.
Server with Docker Link to heading
At the core of the setup is a server running Docker. Docker facilitates the deployment of containerized applications, ensuring that each application runs in an isolated environment. This approach is both resource-efficient and highly flexible.
Traefik Reverse Proxy Link to heading
To manage traffic within the Docker environment, a Traefik reverse proxy is deployed. Traefik routes incoming requests to the appropriate Docker container based on domain rules, ensuring organized and accessible services.
Applications Link to heading
Several applications are hosted within Docker containers, accessible via subdomains (e.g., app1.homelab, app2.homelab). This modular setup allows for easy management of individual services.
Network Attached Storage (NAS) Link to heading
A Network Attached Storage (NAS) device is integrated to provide centralized backup for all files. This ensures easy access and management of data across various devices and applications.
Database and Data Files Link to heading
I host several applications that use databases, and each application has numerous data files. I perform weekly backups of the databases and data files from the server to the NAS.