diff --git a/components/ansible/README.md b/components/ansible/README.md deleted file mode 100644 index 114000d..0000000 --- a/components/ansible/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Ansible - diff --git a/components/ubuntu/README.md b/components/ubuntu/README.md deleted file mode 100644 index ec4e5bc..0000000 --- a/components/ubuntu/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Ubuntu - diff --git a/introduction.md b/introduction.md index 6c3784d..443129b 100644 --- a/introduction.md +++ b/introduction.md @@ -2,9 +2,9 @@ This repository contains documentation for my homelab setup, which spans numerous servers around the world. -## Components +## Principles -The components of my homelab setup are documented in the subfolder "components". Each component has its own folder which contains why I've chosen to use it and how I'm using it. +My thought process and how different components of my homelab is setup are documented in the subfolder "principles". Each component has its own folder which contains why I've chosen to use it and how I'm using it. ## Locations diff --git a/principles/ansible/README.md b/principles/ansible/README.md new file mode 100644 index 0000000..60eb8b3 --- /dev/null +++ b/principles/ansible/README.md @@ -0,0 +1,20 @@ +# Ansible + +## Why + +As I've detailed in the section about [self-hosting](../self-hosting). I'm running all my infrastructure on-prem which means a lot of the little automations and the mindset of "just spin up a new machine" does not apply to my situation. + +This means that instead of being "cattle" my servers are more like pets. +Being from a sysadmin-ish background, this is no bueno. + +I want to handle my "pets" as much like cattle as possible so everything I deploy to them is via Ansible. This means that if disaster strikes and let's say, I lose a disk or something I can get up and running in about 30 minutes give and take. + +## How + +My repo titled [pez-ansible](https://github.com/rwejlgaard/pez-ansible) contains all the roles of my servers divided up into each location. + +These roles are applied via GitHub Actions every time I commit to the master branch. This automated deployment has been a life-saver a couple times when I'm out and about and something is misconfigured. All I have to do is a quick commit from my phone. + +Ansible works via SSH and for security reasons I don't expose my SSH ports on my network to the internet. So these SSH connections are done via [Tailscale](../tailscale). + +The role definitions are done in a global `site.yml` file that's run via the pipeline. \ No newline at end of file diff --git a/components/plex/README.md b/principles/plex/README.md similarity index 53% rename from components/plex/README.md rename to principles/plex/README.md index e17f133..7a44c91 100644 --- a/components/plex/README.md +++ b/principles/plex/README.md @@ -1,2 +1,3 @@ # Plex +\# TODO \ No newline at end of file diff --git a/components/self-hosting/README.md b/principles/self-hosting/README.md similarity index 100% rename from components/self-hosting/README.md rename to principles/self-hosting/README.md diff --git a/principles/tailscale/README.md b/principles/tailscale/README.md new file mode 100644 index 0000000..3c1a344 --- /dev/null +++ b/principles/tailscale/README.md @@ -0,0 +1,16 @@ +# Tailscale + +## Why + +With my servers being on-prem that means that instead of commercial firewalls, IP routing and VPCs that's common and second nature in the cloud, I'm stuck with residential internet connections. As a principle, I don't allow incomming connections to my IP unless it's proxied. + +In essence, Tailscale works like a VPC. It allows any machine or device connected to access any other machine or device. + +## How + +When I set up my servers, one of the first things I do is to install Tailscale and make sure it can access my other servers. + +Tailscale has been so great to use that it's become the backbone of my multi-location homelab. Services like prometheus scrapes targets using Tailscale. + +When I'm setting up a server I also make sure to enable "exit node" functionality, this enables the server to work as a sort of private VPN endpoint which allows me to access UK TV when in Copenhagen or the other way around. + diff --git a/principles/ubuntu/README.md b/principles/ubuntu/README.md new file mode 100644 index 0000000..36ff370 --- /dev/null +++ b/principles/ubuntu/README.md @@ -0,0 +1,12 @@ +# Ubuntu + +## History + +The path to choosing Ubuntu as my primary OS was a long journey. + +First, I was running Proxmox but that was kind of a mess to configure and the overhead of virtualizing everything was surprisingly high. + +Then, I moved on to Alpine Linux. This was quite good, very memory efficient and no extra processes. However, I ran into issues when I started setting up Ansible. + +So I chose the most generic OS I could think of, Ubuntu. +