Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| selfhost:approach [2025/02/18 11:20] – willy | selfhost:approach [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== The Approach ====== | ||
| - | |||
| - | **Self-hosting** and **Home-Automation** are something that grow over time, getting more complex and elaborated. You start small, with some recycled hardware and makeshift cables to host some experimental services, then you start self-hosting important stuff. | ||
| - | |||
| - | But then... | ||
| - | * One day your home internet connection is down and so you find out about **reliability**... | ||
| - | * One day power goes out at home, and you find out that an unexpected server reboot might cause side issues... | ||
| - | * One day, maybe during a hot summer day, your USB network card fails on you, when you are on vacation... | ||
| - | * One day that critical CalDAV service stop working due to a Python update and you miss an appointment... | ||
| - | * One day maybe you get hacked.... | ||
| - | |||
| - | So you start studying and investing in UPS, reodundant ISPs with failover capability, advanced routing for your services, containers, backup techniques... | ||
| - | |||
| - | I went trough the process (except i never got hacked, maybe my security measures where good from the beginning, or i was lucky, o maybe i just never noticed?), and you will as well go trough it. | ||
| - | |||
| - | At the beginning i started out with a very simple approach, spent one year and half more or less expanding to the point where something a little bit more advanced was actually required. I will describe my final implementation (which, actually, is in constant evolution) and, along the way, also describe simpler ways to achieve similar results. | ||
| - | |||
| - | |||
| - | ===== Basic Requirements ===== | ||
| - | |||
| - | The following are the **very basics** that i assume you will take into consideration, | ||
| - | * Have a **proper backup plan** in place (see [[selfhost: | ||
| - | * Have **two** ISPs to provide a failsafe internet connection (see [[router: | ||
| - | * Stored your data on some redoundant **RAID array** (see [[selfhost: | ||
| - | * Have an **UPS** solution to protect your server / disk RAIDS from blackouts | ||
| - | |||
| - | |||
| - | ===== Architecture ===== | ||
| - | |||
| - | Focusing on your technological home architecture, | ||
| - | * A //home server// which hosts all the private services you need ([[selfhost: | ||
| - | * An // | ||
| - | * A //network gateway// which connects your home network to the outside world ([[selfhost: | ||
| - | * One or more //WiFi access points// to provide reliable WiFi coverage to your home ([[selfhost: | ||
| - | * An //external server// which hosts your public services, if any, and ensure external accessibility to your private services ([[selfhost: | ||
| - | |||
| - | This approach separates the main pillars of the setup in a way that makes the overal environment more resillient and each pillar less critical if (when) it goes down for any reason like an hardware failure, software bug or just **un**planned maintenance. | ||
| - | |||
| - | < | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | | ||
| - | │ | ||
| - | │ | ||
| - | ┌─────────┼───────────────────────┼─────────────────────────────────┐ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ ┌───────▼───────────┐ | ||
| - | │ │ | ||
| - | │ │ home server | ||
| - | │ │ | ||
| - | │ └───────────────────┘ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | │ │ ┌───┼───────────────┐ | ||
| - | │ │ │ | ||
| - | │ │ │ WiFi Access | ||
| - | │ │ │ | ||
| - | │ │ │ | ||
| - | │ │ └───────────────────┘ | ||
| - | │ | ||
| - | └───────────────────────────────────────────────────────────────────┘ | ||
| - | </ | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||