homelab: автоматизация развертывания и управления домашними серверами
Проект homelab — это инфраструктура для домашних серверов, управляемая с помощью GitOps, на базе Kubernetes, Talos, ArgoCD и Terraform.
Он решает задачу автоматизации развертывания и управления домашними лабораториями, позволяя пользователям легко поддерживать и обновлять свою инфраструктуру через код. В отличие от классифицируемых решений, которые предполагают ручное или частично автоматизированное управление, homelab использует концепции GitOps, что минимизирует ошибки и упрощает процесс внедрения изменений. Подход подойдет тем, кто хочет углубиться в DevOps и облачные технологии, применяя современные инструменты в домашних условиях.
Проект написан с использованием YAML и Bash, и для запуска может потребоваться опыт работы с Terraform и Kubernetes. Однако стоит учесть, что он нацеливается на пользователей с определённым уровнем подготовки, так как потребует установки и настройки упомянутых технологий. Проверь README для деталей и возможных ограничений.
# Eden
### Инфраструктура домашней лаборатории
Проект Eden — это личная лабораторная среда, которая используется для экспериментов с инфраструктурой и хостинга самоуправляемых сервисов. Автор проекта, Мортен Виктор Нордбье, работает с этими технологиями ежедневно, но в лаборатории он может свободно исследовать идеи и шаблоны, которые не всегда подходят для производственной среды. Это место для практического тестирования новых инструментов, решения реальных задач и, иногда, готовности к ошибкам ради обучения.
Репозиторий является публичным, что обеспечивает прозрачность и соблюдение лучших практик, даже если работа ведётся для удовольствия.
Статус кластера обновляется каждые 15 минут через API Kubernetes и Prometheus, и отображается на главной странице проекта.
Как это работает
Terraform создает виртуальные машины Talos на Proxmox, а все последующие изменения приходят через Git. Основной процесс выглядит следующим образом:
push to main
├─ GitHub Actions builds portfolio and blog, pushes to GHCR
│ └─ Kargo promotes stage to prod as a pull request you merge
├─ external app repos call bump-image.yml, which opens a PR pinning an immutable sha tag
└─ Argo CD reconciles k8s/talos/** onto the cluster
├─ External Secrets fetches credentials at runtime, so none are committed
├─ Traefik publishes routes through Gateway API, cert-manager and external-dns handle TLS and DNS
└─ KEDA lets idle apps drop to zero; the HTTP interceptor wakes them on the first request
Система Argo CD управляет приложениями благодаря методу «приложение в приложении». Две корневые приложения в `k8s/talos/infra/argocd/` контролируют все остальные приложения, так что новое рабочее нагрузка предполагает создание новой директории.
Обзор репозитория
У репозитория есть структура, в которой различные компоненты организованы по папкам. Основные разделы включают:
k8s/talos/— развертывание приложений и инфраструктура.terraform/— конфигурация для Proxmox и Azure.blog/— исходный код блога на Hugo.portfolio/— исходный код портфолио сайта.ai/— агенты ИИ и связанные проекты.
Технический стек Kubernetes
Проект использует следующие технологии:
- GitOps: Argo CD, Kargo.
- Сеть: Cilium, Traefik, external-dns.
- Безопасность: Falco, Authentik, cert-manager.
- Наблюдаемость: Prometheus, Grafana, Loki.
- Масштабирование: KEDA с HTTP-дополнением.
- Автоматизация: Reloader.
- Хранилище: Proxmox CSI, csi-driver-nfs.
- Базы данных: PostgreSQL 18.
- Платформа: Proxmox VE на трёх узлах Lenovo, Talos Linux.
Безопасность
Проект включает автоматизированное сканирование контейнеров на наличие уязвимостей каждый месяц и при изменениях в Dockerfile с помощью Trivy. Falco мониторит активность на уровне системных вызовов для обнаружения аномалий.
CI/CD Рабочие процессы
Рабочие процессы CI/CD включают следующие этапы:
- Сборка и развертывание блога.
- Сборка и развертывание портфолио.
- Сканирование уязвимостей контейнеров.
- Автоматическое создание диаграмм состояния.
Оборудование
Лаборатория состоит из нескольких вычислительных узлов, NAS, сетевого оборудования и устройств IoT. Узлы работают на различных моделях Lenovo, каждый из которых обеспечивает 32 ГБ ОЗУ и 1 ТБ хранения.
Другие проекты
Кроме этого проекта, автор разрабатывает и хостит несколько других решений, например:
- logeverylift — мобильное приложение для отслеживания тренировок.
- lawless-waf — инструмент для настройки Azure WAF.
- headroom — трекер личных финансов.
Открыть на GitHub: mortennordbye/homelab →
RepoRadar