Commit Graph
35 Commits
Author SHA1 Message Date
gilfanovrandClaude Opus 5.5 85fc5c0bce fr1: books — thinking выключен, прогретые процессы Claude
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:25 +03:00
gilfanovrandClaude Opus 5.5 316e1e4af4 fr1: books — Go-инструменты и фоновая подготовка глав
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:14:00 +03:00
gilfanovrandClaude Opus 5.5 352d114023 fr1: books — ИИ подключён и проверен
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:04:15 +03:00
gilfanovrandClaude Opus 5.5 9c5c9de412 fr1: books.ruzzy.dev — vhost, сертификат, DNS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:58:28 +03:00
gilfanovrandClaude Opus 5.5 7408e350f5 fr1: books — вход по логину и паролю
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:51:37 +03:00
gilfanovrandClaude Opus 5.5 dfb8dffc6f fr1: books — деплой без .git
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:45:14 +03:00
gilfanovrandClaude Opus 5.5 0f2a403b99 books: код переехал в отдельный репо ruzzy/books
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:45:05 +03:00
gilfanovrandClaude Opus 5.5 9aab5b3f40 fr1: books.ruzzy.dev — читалка с ИИ (PDF/EPUB → главы, рекапы, перевод/объяснение выделенного, вопросы с RAG; Claude Code по подписке без инструментов; вход через Telegram)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 10:39:51 +03:00
gilfanovrandClaude Opus 5.5 f87fcd1f5a rpi: Google — календарь и Gmail (только чтение) для Astra; fr1: страницы OAuth на www.ruzzy.dev/astra
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 09:54:55 +03:00
gilfanovrandClaude Opus 5.5 5c17e4f3d6 fr1: интеграция с Марусей демонтирована (nginx, LE, sshd, пользователь, audit); осталась DNS-запись
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:58:55 +03:00
gilfanovrandClaude Opus 5.5 3ecc432ab4 Маруся: интеграция отменена владельцем — службы и туннель на rpi выключены; остатки на fr1 — к демонтажу
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:43:42 +03:00
gilfanovrandClaude Opus 5.5 cc363aa714 fr1: у бота claude-channels убран доступ к Obsidian-vault, ~/MyVault удалён, ask-astra → /root/astra-work
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:41:10 +03:00
gilfanovrandClaude Opus 5.5 61b38b6886 fr1: синк MyVault через git выключен (Obsidian-vault теперь на Obsidian Sync), MyVault — архив на 2026-09-23
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 20:10:23 +03:00
gilfanovrandClaude Opus 5.5 5cc0d468ef fr1: туннель Маруси проверен; fail2ban — домашний IP в ignoreip
- 18788 только на loopback, 8788/18788 снаружи закрыты, коды вебхука
  совпали с ожидаемыми, секрета в логах nginx нет
- грабли: access log выключен только в vhost astra — запрос к пути
  вебхука на другом имени пишется в общий лог (было превью TelegramBot
  с пустым секретом)
- fail2ban: 46.199.208.45 в ignoreip (IP динамический — ⚠️)
- интеграция не завершена: навык VK и проверка на колонке за владельцем

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:59:35 +03:00
astra a879988cb0 rpi: исправить ложную просрочку метрик дневных бэкапов 2026-10-11 18:44:28 +03:00
gilfanovrandClaude Opus 5.5 e2bd908198 fr1: вебхук Маруси — vhost astra.ruzzy.dev и пользователь туннеля marusia-tunnel
- nginx: vhost astra.ruzzy.dev (LE), только POST /marusia/webhook/ → 127.0.0.1:18788,
  limit_req 1r/s, 64k, без access log, error_log crit (секрет в пути); ссылка zz-,
  чтобы не перехватить ответ на неизвестный SNI у git
- sshd: Match User marusia-tunnel — только remote forward 127.0.0.1:18788;
  добавлен в AllowUsers
- живые конфиги fr1 в stacks/astra-marusia/ вместо nginx-location.example
- fr1.md: эффективные настройки sshd проверены под root, отпечатки host-ключей
- туннель ещё не поднят, интеграция не завершена (хвост в fr1.md)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 18:22:56 +03:00
gilfanovrandClaude Opus 5.5 facc6c1e65 monwatch: сторож мониторинга fr1 на rpi — раз в час health-проверка, тревога в Telegram напрямую
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 15:36:56 +03:00
gilfanovrandClaude Opus 5.5 550c359e4a Gitea: пользователь astra вместо двух deploy-ключей — один ключ, запись в infra/astra-bot, свои репо
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 14:57:13 +03:00
gilfanovrandClaude Opus 5.5 7d0a891793 Бэкап серверов fr1/ru1 на rpi: сервер шифрует age открытым ключом, малина только хранит
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 14:44:05 +03:00
gilfanovrandClaude Opus 5.5 65a01740e8 grafana: дашборд RPi — диск и бэкап OneDrive; заполнение /mnt/backup в метриках
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:37:14 +03:00
gilfanovrandClaude Opus 5.5 2bb74f7430 rpi: пользователь astra (sudo) и deploy-ключ с записью в ruzzy/infra для агента
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:33:28 +03:00
gilfanovrandClaude Opus 5.5 d1269162e7 rpi: бэкап OneDrive на HDD + SMART/бэкап-метрики через pushgateway на fr1
- servers/rpi.md: новая домашняя Raspberry Pi 4 (Trixie, cloud-init), HDD 4 ТБ,
  грабли с питанием двух HDD от USB
- stacks/rpi-backup: rclone sync с вечным архивом версий, еженедельная сверка
  хэшей, smartd, пуш SMART и статуса бэкапов
- fr1: pushgateway (127.0.0.1:9091), приём по SSH через forced command
  ~/bin/pushgw-ingest, алерты группы rpi

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 13:28:20 +03:00
gilfanovrandClaude Opus 5 11531ceb16 Указатели на контракт — на самом сервере
Контракт в репозитории достаёт только агентов, у которых этот репозиторий
есть. Astra работает на fr1 как tgclaude и infra у неё не склонирован, так
что до неё не дошло бы ничего.

Заведено на сервере:
  ~rus/CLAUDE.md и ~tgclaude/CLAUDE.md — указатель на репо, правило и пять
  граблей, стоивших больше всего; AGENTS.md рядом симлинком, для агентов с
  другой конвенцией. Claude Code читает CLAUDE.md вверх по дереву, поэтому
  файл в хоме работает и при работе в ~tgclaude/imgbot.

  ~rus/MyVault/TOOLS.md, раздел SSH — то же для Astra. Файл смонтирован в
  claude-channels как /vault, изменение видно агенту сразу, в Gitea уезжает
  кроном каждые 5 минут.

MOTD и .bashrc сознательно не использованы: .bashrc выходит на строке 6 для
неинтерактивных шеллов, MOTD показывается только при интерактивном входе, а
агенты обычно дёргают `ssh host 'команда'` и не увидят ни того, ни другого.

Ограничения механизма и причина, по которой детектор дрейфа не заведён,
описаны в servers/fr1.md.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 17:04:08 +03:00
gilfanovrandClaude Opus 5 b56c137b5c Механизм поддержания описаний в актуальном состоянии
Сверка fr1 показала, что дока расходится с фактом по десятку пунктов —
значит нужен не разовый проход, а контракт и инструмент.

  CLAUDE.md — правило «тронул сервер, обнови servers/<хост>.md в том же
  прогоне» плюс стиль: факт + причина + что сломается молча. Лежит именно
  в CLAUDE.md, потому что AGENTS.md автоматически агенту не подгружается.

  .claude/skills/server-audit/ — метод сверки и накопленные грабли: где
  дока врёт чаще всего, почему ufw не отвечает на вопрос об открытых
  портах, почему нужен up -d --dry-run, почему «executed successfully»
  не доказывает работу задания.

  scripts/snapshot.sh — инвентаризация живого состояния за один проход:
  только чтение, без sudo, секретов не печатает, недоступное под root
  помечает и подсказывает команду.

Первый же прогон скрипта нашёл две вещи, обе описаны:

  - IPv6 не «починился», а мигает: за один день FAILED -> REACHABLE ->
    FAILED без единой правки конфига. Описан как мигающий, с выводом
    ничего на него не завязывать.
  - В основном sshd_config стоит PermitRootLogin yes (правка шаблона
    Contabo). Root-вход закрыт только потому, что Include дроп-инов
    стоит выше, а sshd берёт первое значение. Уберёшь дроп-ин —
    включится.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 16:52:22 +03:00
gilfanovrandClaude Opus 5 4308c5c7e1 fr1: сверка описания с живым сервером
Дока расходилась с фактом по десятку пунктов. Что исправлено по
результатам обхода сервера:

  - ядро 6.8.0-137 (было 134); IPv6 заработал — шлюз отвечает на NDP,
    хотя конфиг не менялся, так что может отвалиться обратно
  - Gitea 1.27.3, 1.9 ГБ, 20 репо (было 1.25.4 / 4.3 ГБ / 16)
  - апекс ruzzy.dev уже на fr1; появились vhost'ы share и www
  - мониторинг шире описанного: таргеты ru1 и job gitea, дашборды
    OpenVPN и Gitea; убраны устаревшие упоминания выведенного de1
  - vault-синк claude-channels работает (дока говорила обратное), том
    claude-home раздулся заново до 2.8 ГБ

Добавлены разделы, которых не было вовсе:
  - tgclaude — общий вход для агентов; цепочка Telegram-бот → агент в
    контейнере → SSH → группа docker → root на хосте
  - imgbot и его переезд в контейнеры
  - расписания: полная инвентаризация cron и таймеров
  - открытые хвосты, включая непогашенные токены в Gitea

Разобрано и описано попутно: ufw не управляет docker-портами (ipcam
месяцами держал 2221 и 30000-30010 наружу без единого правила);
sysstat хранил историю 7 дней при HISTORY=7 — поднято до 365 (при >28
sa1 сам переключает имена на saYYYYMMDD, иначе смысла нет); /etc/cron.
hourly/free час за часом выбрасывал страничный кэш (до -3.89 ГиБ,
подтверждено по Prometheus) — удалён.

Уборка диска: 104 → 52 ГБ занято. Ушли ipcam, sc2-parser, booty,
booty-collector, vacuum-scraper, ollama (8.1 ГБ), легаси-архив
картинок, docker build cache (43.4 ГБ).

В AGENTS.md поправлены две неверные строки: de1 значился действующей
прод-нодой, хотя выведен, а туннель ru1 — идущим до de1. Сами
servers/de1.md и servers/ru1.md не сверялись.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 15:26:40 +03:00
Ruslan Gilfanov 202e2a8071 claude-channels: перенос de1 → fr1 (запущен, telegram-плагин переустановлен) 2026-06-22 10:12:27 +03:00
Ruslan Gilfanov 3389a76c41 monitoring: сетевой дашборд + node-exporter в host-network (видит eth0/wg0) 2026-06-21 22:45:25 +03:00
Ruslan Gilfanov 61525c4400 vpn: фаза 1 — AWG exit-зеркало на fr1, ru1 переключён на fr1 2026-06-21 22:36:12 +03:00
Ruslan Gilfanov b00aae6c5e gitea: перенос de1 → fr1 (1.25.4, git.ruzzy.dev на fr1) 2026-06-21 19:57:35 +03:00
Ruslan Gilfanov 247743b31c fr1: документация алертов 2026-06-21 19:35:06 +03:00
Ruslan Gilfanov 29e9079ca4 monitoring: системные дашборды + multi-server (file_sd), readme 2026-06-21 19:12:03 +03:00
Ruslan Gilfanov e0adc8997d fr1: Grafana через mon.ruzzy.dev (nginx + Let's Encrypt) 2026-06-21 19:02:17 +03:00
Ruslan Gilfanov d9b268ac77 fr1: стек мониторинга (prometheus+grafana+node-exporter+cadvisor) 2026-06-21 18:55:45 +03:00
Ruslan Gilfanov f992a8e6f8 fr1: подробный снимок текущих настроек 2026-06-21 18:20:05 +03:00
Ruslan Gilfanov 8e632558ac infra: базовая структура + состояние fr1 2026-06-21 18:17:14 +03:00