From 6fa54d9c8b6f2e4338abf5aaffc5da0ec1081d6a Mon Sep 17 00:00:00 2001 From: Joey Hafner Date: Sun, 9 Jun 2024 07:21:21 -0700 Subject: [PATCH] Work in progress: Homelab --- Jafner.dev/content/projects/Homelab.md | 145 ++++++++++++++++++ .../projects/Test Project Please Ignore.md | 7 - 2 files changed, 145 insertions(+), 7 deletions(-) delete mode 100644 Jafner.dev/content/projects/Test Project Please Ignore.md diff --git a/Jafner.dev/content/projects/Homelab.md b/Jafner.dev/content/projects/Homelab.md index 984cf940..a31129b9 100644 --- a/Jafner.dev/content/projects/Homelab.md +++ b/Jafner.dev/content/projects/Homelab.md @@ -3,3 +3,148 @@ title = 'Homelab' date = 2024-05-28T17:58:08-07:00 draft = true +++ + +# Preamble: How to Use My Homelab Repo + +# Intro +- My homelab is always evolving, so I will aim to keep the contents of this page agnostic to any current setup. +- Always intended to make the repository publicly accessible, but left secrets in the code early on. +- Always pushed toward complete configuration as code. Application data and secrets excepted, all application configuration *should* be defined in the application's config directory. +- Some docker images don't get us 100% of the way there, so we define what we can in the compose file, then either scripts or a README to fill in the gaps. + +# Principles and Goals +1. Be useful. First and foremost we should remove anything that isn't useful, and trial anything that may be. +2. Be resilient. We should integrate configuration code with process documentation to make rebuilding from scratch as easy as possible. +3. Be simple. +4. Be helpful. First for myself to make future work easier, and second to make writing this page easier (3 years later). + +# Development: Problems and Solutions + +## What I've got to work with: Hosts and Cloud Resources +- Barbarian +- Fighter +- Druid +- Wizard +- Monk + +## What I need to get done: Service Roles + +- I need some way to store a lot of big files. Storing and protecting big library. +- I need some way for my friends and family to watch the movies in my movie library. Serving media library. +- I need some way to make my stuff accessible safely over the internet. Managing access. +- I need some way to manage this whole thing. Managing configuration. +- I need some way to know if it's breaking. Monitoring and notifying on service uptime. + +## What I don't need to get done: Retired Service Roles + +## The wrong ways to do it: Replaced Services + +# Long-Lived Lessons + +# Appendix A: Tools Used +Appendix of tools. + +## Local Tools +- Docker +- Docker-compose +- Git +- Ansible +- VSCodium +- Terraform +- Tabby + +## Services: Chronological + +### The Before Times +- Teamspeak 3 +- Terraria +- Minecraft +- 5eTools + +### Initial Commit +- Wireguard (wg-easy) +- Wikijs +- Uptime-kuma +- Unifi_controller +- Traefik +- Tdarr +- Prometheus +- Wordpress (Portfolio, NVGM, landing) +- Portainer +- Plex +- Peertube +- Olivetin +- Docker-minecraft +- Joplin +- Homer +- Grafana +- InfluxDB +- Telegraf +- Gitlab +- Gitea +- Exatorrent +- PlantUML +- DrawIO +- Cloudflare-DDNS +- Calibre-web +- Authentik +- Ass +- Radarr +- Sonarr +- NZBHydra2 +- SabNZBD + +## Services: By Category + +### Serve Files +- Video: Plex, Peertube, Zipline, Jellyfin +- Image: Ass, +- 3D Models: Vandam (now Manyfold) +- Ebooks: Calibre-web +- Notes: Joplin +- Files: Nextcloud, Send, TrueNAS + +### Manage Access (& Other Admin) +- Keycloak +- Authentik +- Wireguard +- Traefik +- Unifi Controller +- DDNS + +### Git Server +- Gitlab +- Gitea + +### Monitoring & Observability +- Uptime Kuma +- Prometheus +- Grafana +- MC-Monitor +- InfluxDB and Telegraf +- Exporters for Ping, Docker, PiHole, UptimeKuma + +### Websites +- NVGM, portfolio, landing +- Wikijs +- Homer, Homepage +- Jafner.dev + +### Torrents +- Rtorrent +- Transmission +- Deluge +- ExaTorrent +- Qbittorrent + +### Games Servers +- Minecraft +- Unturned +- Terraria +- 7 Days to Die + +# References +1. [Jafner/homelab](https://gitea.jafner.tools/Jafner/homelab) +2. [Initial commit](https://gitea.jafner.tools/Jafner/homelab/commit/45c541999d972020f21547c2d0ddea739f7103ce) +3. [Example secret in code - Cloudflare API Key](https://gitea.jafner.tools/Jafner/homelab/src/commit/45c541999d972020f21547c2d0ddea739f7103ce/server/config/cloudflare-ddns/docker-compose.yml#L8) +4. [Example secret in code - SSH key](https://gitea.jafner.tools/Jafner/homelab/src/commit/45c541999d972020f21547c2d0ddea739f7103ce/server/config/wikijs/id_rsa) diff --git a/Jafner.dev/content/projects/Test Project Please Ignore.md b/Jafner.dev/content/projects/Test Project Please Ignore.md deleted file mode 100644 index 3fd6f90f..00000000 --- a/Jafner.dev/content/projects/Test Project Please Ignore.md +++ /dev/null @@ -1,7 +0,0 @@ -+++ -title = 'Test Project Please Ignore' -date = 2024-05-28T22:12:51-07:00 -draft = false -+++ - -# No Projects Yet, Check Back Later \ No newline at end of file