One ru-vps housekeeping sweep (2026-09-02/03): - playbooks/ru-vps-base.yml (new): adopt the Caddy compose stack into Ansible (pinned image by digest, homelab-caddy.service), and manage the corosync-qnetd UFW rule - allow 5403/tcp from homelab_pve_egress_ip, drop the stale rule for the retired ZeroTier 10.122.62.0/24. The qdevice had gone silent because its only allowed path was the decommissioned ZeroTier network. - group_vars/all/main.yml: homelab_pve_egress_ip (the NATed home egress the PVE nodes reach corosync-qnetd from - a direct path that does not depend on the OpenVPN tunnel). Marked dynamic: a change silently re-breaks the qdevice. - playbooks/status.yml: CLUSTER QUORUM section (pvecm status per PVE node) so a repeat failure is visible. Also drops the memoir-bot unit list and moves the gitea offsite-restic unit to the gitea host (see the OpenTofu-migration commit). - playbooks/ru-vps-zerotier-decommission.yml (new): stop the zerotier container, disable ssh-zt22.service, remove the interface/9993/9001/10.122.62.0/24 UFW rules. Node identity and data are kept; removal is a separate step. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
HomeLab Infrastructure
Активная инфраструктура домашней лаборатории управляется через Ansible. Каноничные инструкции для людей и агентов — в AGENTS.md.
Быстрый старт
Окружение собрано в Nix, venv не нужен:
nix develop # или один раз: direnv allow
# Один раз на клон
ansible-galaxy collection install -r ansible/requirements.yml -p ansible/collections
Всё управление — через make из ansible/:
cd ansible
make help # список целей, начинать отсюда
make check # связность и ожидаемые IP
make status # read-only сводка по всей инфраструктуре
make lint # ansible-lint + yamllint
Деплой и обновления:
make dry-gitea # предпросмотр (--check --diff)
make deploy-gitea # применить
make update-gitea # бэкап -> обновление -> health-check
.env с Proxmox-токенами подхватывается автоматически. Опасные цели требуют CONFIRM=1.
SSH руками
ansible/ssh_config — единый источник правды по SSH и для Ansible, и для терминала.
Добавь в ~/.ssh/config, чтобы заработал ssh gitea:
Include /home/ada/Documents/Projects/HomeLab/infras/ansible/ssh_config
Структура
ansible/— control plane:Makefile,inventory/,playbooks/,roles/,ssh_configansible/inventory/group_vars/all/services.yml— реестр сервисов (VMID, IP, порты, домены, образы)flake.nix— dev-окружение.gitea/workflows/lint.yml— CI: yamllint, ansible-lint, syntax-checkarchive/2026-07-proxmox-migration/— исторические NixOS/Docker конфиги, только как справка
Grimmory MCP
tools/grimmory-mcp/ содержит read-only интеграцию с Grimmory API для OpenCode
и явно вызываемые инструменты синхронизации с Obsidian.
npm install --prefix tools/grimmory-mcp
npm run configure --prefix tools/grimmory-mcp
npm test --prefix tools/grimmory-mcp
OpenCode регистрирует сервер глобально. После перезапуска OpenCode используй
/grimmory-sync для обновления заметок книг в 90 Library/Books и обложек
в 99 System/Export/Grimmory/Covers.