lint / yamllint + ansible-lint + syntax-check (push) Canceled after 0s
The Android client ships OpenVPN 2.7, which refuses a --secret config
("Options error: No tls-client or tls-server option"; 2.8 drops it
entirely). Rework the phone instance to a CA-less TLS point-to-point:
two self-signed EC keypairs generated on ru-vps (server.* / client.*),
each side pins the other by SHA256 with peer-fingerprint, data-ciphers
AES-256-GCM. Everything else unchanged (tcp/9444, tun2, 10.80.0.0/30,
NAT via tun0, systemd unit, shared homelab_vpn_client_routes).
Verified on ru-vps 2026-09-03: openvpn 2.6.19 starts clean ("Using
certificate fingerprint to verify peer"), listens on 9444, tun2 up,
make openvpn-phone idempotent (changed=0 on rerun), make lint green.
The regenerated ansible/generated/ada-phone.ovpn (self-contained
cert+key, gitignored) was handed to the operator.
openvpn-laptop.yml is left on static key — not deployed; needs the same
TLS treatment when someone actually uses it.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KbuZrUoevfBgCpf5DCF4DG
AI Context
Назначение
Этот набор документов фиксирует стабильный, подтвержденный репозиторием контекст
HomeLab. Он дополняет краткий рабочий контракт в AGENTS.md и
не заменяет канонические Ansible inventory/vars или операционные заметки Obsidian.
HomeLab управляется как Ansible-first control plane: Proxmox VE/LXC, сетевой
транспорт, сервисы, резервное копирование, обновления и мониторинг описываются в
ansible/. Прямые изменения на серверах допустимы только для read-only диагностики
или break-glass восстановления с последующим переносом желаемого состояния в Ansible.
Возможности
- создание и настройка LXC через Proxmox API или
pctпо SSH; - управление сервисами через Docker/systemd и Docker Compose/systemd;
- OpenVPN-транспорт и SSH ProxyJump через
ru-vps; - Caddy reverse proxy для публичных сервисов;
- PBS и offsite restic backups с аудитом свежести;
- управляемые обновления по схеме backup/audit -> update -> health check;
- активный Uptime Kuma и сохраненный, но замороженный Prometheus stack;
- локальный Grimmory MCP с ручной синхронизацией книг в Obsidian.
Форма системы
ansible/Makefileявляется основной ручной точкой входа.ansible/inventory/hosts.ymlзадает хосты, группы и индивидуальные адреса.ansible/inventory/group_vars/all/services.ymlсодержит сводный реестр сервисов, но пока программно управляет только генерацией reverse proxy.ansible/playbooks/содержит операционные entry points,ansible/roles/- роли.tools/grimmory-mcp/является отдельным Node.js stdio MCP-процессом.- Obsidian vault хранит решения, текущую эксплуатационную картину и журнал работ.
Карта репозитория
| Путь | Назначение |
|---|---|
ansible/Makefile |
Проверки, deploy, update и защищенные операции |
ansible/inventory/ |
Канонические хосты, группы, общие и host-specific vars |
ansible/playbooks/ |
Операционные Ansible entry points |
ansible/roles/ |
Переиспользуемые роли и сохраненный monitoring stack |
ansible/ssh_config |
SSH users, keys, ports и ProxyJump |
.opencode/agents/ |
Read-only специализированные агенты HomeLab |
tools/grimmory-mcp/ |
Grimmory API и Obsidian sync integration |
archive/2026-07-proxmox-migration/ |
История до Ansible control plane, не active source |
Ключевые ограничения
- Не хранить secrets в Git или Obsidian.
- Не считать
--check --diffполной симуляцией Proxmox provisioning. - Не запускать замороженный Prometheus stack без отдельного решения.
- Не считать generic roles
lxc_docker_hostиcompose_serviceподключенными к production: активные service playbooks пока остаются источником поведения. - Не исправлять обнаруженный технический долг в рамках несвязанной задачи.
- Не редактировать archive, generated files, installed Galaxy collections или
node_modulesкак active implementation.
Документы
architecture.md- observed architecture и data/control flows.tech-stack.md- runtimes, dependencies и команды.edge-cases.md- failure modes, safety gaps и coverage.plan.md- только подтвержденная активная работа.migration-tofu.md- пошаговый план перехода provisioning LXC на OpenTofu по схеме blue-green.legacy-warning.md- границы legacy/frozen/prototype кода.links.md- официальные version-relevant references.