Самохостируемая домашняя инфраструктура, управляемая как код — Docker-сервисы, Infrastructure as Code через Ansible + Terraform, стек мониторинга и провижининг в облаке Yandex Cloud.
- Configuration Management — Ansible роли для настройки серверов, идемпотентные плейбуки, работа с inventory
- Infrastructure as Code — Terraform для провижининга VM в Yandex Cloud: переменные, outputs, паттерн
.tfvars - Monitoring & Observability — стек Prometheus + Grafana + Node Exporter с готовым дашбордом
- CI/CD — GitHub Actions (валидация YAML) и GitLab CI (build → test → deploy пайплайн)
- Scripting — Python (HTTP health-check, алерты в Telegram) и Bash автоматизация
- Containerization — Docker Compose для 8+ самохостящихся сервисов с грамотным управлением volumes
- Networking — кастомная маршрутизация трафика через прокси/VPN, настройка роутера на OpenWrt
| Компонент | Характеристики |
|---|---|
| Сервер | AMD A8, 8GB RAM, SSD 512GB |
| Роутер | Cudy WR3000S на OpenWrt |
| ОС | Debian Linux |
- Jellyfin + Prowlarr — стриминг медиа и управление индексерами
- qBittorrent — торрент-клиент с веб-интерфейсом
- Home Assistant — локальная автоматизация умного дома без облака
- Mosquitto — MQTT брокер для IoT и ESP32 проектов
- Uptime Kuma — мониторинг доступности всех сервисов
- SearXNG — собственный поисковик без трекинга
- Prometheus + Grafana — сбор метрик и визуализация (подробнее ниже)
- Mihomo — прозрачный прокси на self-hosted VPS с VLESS+Reality, раздельная маршрутизация трафика
- DevOps Quiz — самохостируемый тренажёр DevOps знаний (Python + Nginx), со своим GitLab CI пайплайном
Идемпотентные плейбуки для настройки серверов и деплоя сервисов.
playbook.yml— базовая настройка сервера (пакеты, timezone, firewall) + деплой медиасервераcloud-playbook.yml— точка входа для облачных инстансов (используется Terraform)update.yml— обновление образов, перезапуск контейнеров, еженедельный cronroles/base— переиспользуемая роль для настройки ОСroles/docker— переиспользуемая роль для деплоя Docker Compose стеков
Поднимает VM в Yandex Cloud и автоматически передаёт её Ansible для настройки — полный IaC-цикл от голого облака до работающих сервисов.
main.tf— ресурс VM, cloud-init для SSH-доступа,null_resourceпровижионер который запускает Ansible сразу после старта VMvariables.tf/terraform.tfvars.example— никакого хардкода секретов, все credentials передаются через.tfvarsoutputs.tf— выводит публичный/приватный IP VM послеapply
cd terraform
terraform init
terraform apply # поднимает VM + автоматически запускает AnsibleСтек Prometheus + Grafana + Node Exporter (docker/monitoring/), собирающий метрики уровня хоста (CPU, RAM, диск, сеть) с готовым дашбордом.
prometheus.yml— конфиги scrape для self-monitoring и node-exportergrafana.yml— provisioning datasource (без ручной настройки через UI)
.github/workflows/validate.yml— валидирует все YAML файлы (Ansible + Docker Compose) при каждом пуше черезyamllintdocker/devops-quiz-v2/.gitlab-ci.yml— пайплайн build → test → deploy для проекта DevOps Quiz
telegram_alert.py— HTTP health-check сервисов с уведомлениями в Telegram при падении, секреты через.envchiikawa_sync.py— автоматическая загрузка аниме серий (мониторинг Telegram-канала → библиотека Jellyfin), запускается через systemd таймер
check_services.sh— проверка статуса Docker-контейнеров на удалённом хосте по SSH
homelab/
├── ansible/ # Configuration management
├── terraform/ # Провижининг в облаке (Yandex Cloud)
├── docker/ # Все сервисы (Compose файлы)
├── scripts/ # Python + Bash автоматизация
├── network/ # Конфиги прокси/маршрутизации
└── .github/ # CI валидация
Self-hosted home infrastructure managed as code — Docker services, Infrastructure as Code with Ansible + Terraform, a monitoring stack, and cloud provisioning in Yandex Cloud.
- Configuration Management — Ansible roles for server provisioning, idempotent playbooks, inventory management
- Infrastructure as Code — Terraform for Yandex Cloud VM provisioning: variables, outputs,
.tfvarspattern - Monitoring & Observability — Prometheus + Grafana + Node Exporter stack with a pre-built dashboard
- CI/CD — GitHub Actions (YAML validation) and GitLab CI (build → test → deploy pipeline)
- Scripting — Python (HTTP health checks, Telegram alerting) and Bash automation
- Containerization — Docker Compose for 8+ self-hosted services with proper volume management
- Networking — custom proxy/VPN traffic routing, OpenWrt router configuration
| Component | Specs |
|---|---|
| Server | AMD A8, 8GB RAM, 512GB SSD |
| Router | Cudy WR3000S on OpenWrt |
| OS | Debian Linux |
- Jellyfin + Prowlarr — self-hosted media streaming and indexer management
- qBittorrent — torrent client with web UI
- Home Assistant — local home automation, no cloud
- Mosquitto — MQTT broker for IoT and ESP32 projects
- Uptime Kuma — uptime monitoring for all services
- SearXNG — self-hosted search engine, no tracking
- Prometheus + Grafana — metrics collection and visualization (see below)
- Mihomo — transparent proxy on a self-hosted VPS with VLESS+Reality, split traffic routing
- DevOps Quiz — self-hosted DevOps knowledge trainer (Python + Nginx), with its own GitLab CI pipeline
Idempotent playbooks for server provisioning and service deployment.
playbook.yml— base server setup (packages, timezone, firewall) + mediaserver deploymentcloud-playbook.yml— provisioning entry point for cloud instances (used by Terraform)update.yml— pulls latest images, restarts containers, schedules weekly updates via cronroles/base— reusable role for OS-level configurationroles/docker— reusable role for deploying Docker Compose stacks
Provisions a VM in Yandex Cloud and automatically hands it off to Ansible for configuration — a full IaC pipeline from bare cloud to running services.
main.tf— VM resource, cloud-init for SSH access,null_resourceprovisioner that triggers Ansible right after the VM bootsvariables.tf/terraform.tfvars.example— no hardcoded secrets, credentials passed via.tfvarsoutputs.tf— exposes the VM's public/private IP afterapply
cd terraform
terraform init
terraform apply # provisions VM + runs Ansible automaticallyPrometheus + Grafana + Node Exporter stack (docker/monitoring/), scraping host-level metrics (CPU, RAM, disk, network) with a pre-built dashboard.
prometheus.yml— scrape configs for self-monitoring and node-exportergrafana.yml— datasource provisioning (no manual UI setup needed)
.github/workflows/validate.yml— validates all YAML files (Ansible + Docker Compose) on every push usingyamllintdocker/devops-quiz-v2/.gitlab-ci.yml— build → test → deploy pipeline for the DevOps Quiz project
telegram_alert.py— HTTP health checks for services with Telegram notifications on downtime, secrets via.envchiikawa_sync.py— automated anime episode downloader (Telegram monitoring → Jellyfin library), runs via systemd timer
check_services.sh— checks Docker container status on the remote host over SSH
homelab/
├── ansible/ # Configuration management
├── terraform/ # Cloud provisioning (Yandex Cloud)
├── docker/ # All service stacks (Compose files)
├── scripts/ # Python + Bash automation
├── network/ # Proxy/routing configs
└── .github/ # CI validation workflow