/homelab

My personal homelab

Primary LanguageShellMIT LicenseMIT

Personal Homelab

My personal homelab config

This is my personal homelab config, as used in my real home. Given the nature of this project, as it applies only to me, external Pull Requests are not expected.

TL;DR:

diagram

Below is a general format for this repository:

  • /ansible/ - Ansible playbooks for easy maintenance for multiple servers
  • /docker-images/ - Contains Dockerfiles for all custom or external docker images
    • Each docker image contains reusable general config
    • Each docker image can be used in 1 or more docker-apps
  • /docker-apps/ - Reusable config for individual docker-apps, eg. PiHole
    • Each docker app contains reusable general config, including auxiliary services (eg. PiHole itself, Apache/Nginx reverse proxy, cron certificate manager, cron web backups, ...)
    • Each docker app can be used in 1 or more docker-apps on individual servers
  • /docs/ - General documentation and installation guides
  • /servers/ - Setup for individual physical servers

Common env variables:

  • HOMELAB_APP_TYPE - Main app name (eg. pihole)
  • HOMELAB_ENV - Current env type, either dev or prod
  • HOMELAB_APP_EXTERNAL_DOMAIN - Local domain alias (eg. pihole.home)
  • HOMELAB_HEALTHCHECK_URL - Healthcheck URL to report CRON job status
  • HOMELAB_CONTAINER_VARIANT - In case multiple containers of the same image are used in a single app, this differentiates between them
  • Credentials:
    • HOMELAB_APP_USERNAME - Username (or email) for app login
    • HOMELAB_APP_PASSWORD - Password for app login