Commit Graph
593 Commits
Author SHA1 Message Date
av a9d9eb8d83 apprise: уведомления дублируются в matrix-комнату
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- в бандл server добавлен канал matrix; в homeserver ходим по внутренней
  docker-сети, для этого у tuwunel заведён алиас без подчёркивания
- плейбук проверяет формат id комнаты: значение без '!' или '#' apprise
  считает алиасом и молча не доставляет уведомление
2026-08-22 12:28:01 +03:00
av daa4379dbe backups: в нотификацию добавлены размеры приложений и свободное место
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- список приложений теперь со значком статуса (забекаплено, упал дамп,
  бекапить нечего) и занятым местом; размеры считает dust одним вызовом
- в конце уведомления — свободное место на дисках сервера, по одной строке
  на файловую систему
2026-08-22 11:50:07 +03:00
av b5b43a484e в ruff включён набор UP: современный синтаксис аннотаций
- typing.Dict/List заменены на dict/list, Optional[X] — на X | None;
  эти же места подсвечивал basedpyright в редакторе
- из smtp-convert-secret-key-to-password.py убрана проверка на Python 2
2026-08-22 11:37:51 +03:00
av bdc319df64 линтеры python перенастроены: mypy заменён на pyrefly
- набор правил ruff расширен по канону rp-local-env (ANN, PTH, C90, G и др.),
  в lefthook добавлен job ruff check --fix
- код приведён под новые правила: логирование через %s вместо f-строк,
  os.path заменён на pathlib, run_backup_process и initialize разбиты
  на функции по порогу цикломатической сложности
2026-08-22 11:32:03 +03:00
av 321f6e7b6b backups: в нотификацию попадают все забекапленные приложения
- список строится по backup-targets, а не только по успешным скриптам дампа,
  поэтому приложения с бекапом одних данных (calibre, goatcounter, tududi,
  tuwunel) больше не теряются
- отсутствие backup.sh при наличии backup-targets — штатный случай, теперь
  это info, а warning остался только когда бекапить нечего вообще
2026-08-22 11:25:06 +03:00
av 889c8a565e добавлен goatcounter для веб-аналитики
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- один инстанс на два сайта, gc-main и gc-photo: нужный выбирается по Host
- домены ведутся в goatcounter_sites (group_vars), оттуда же рендерятся имена в Caddyfile
- сайты и первый пользователь заводятся идемпотентно, креды из vault
2026-08-21 22:06:06 +03:00
av af14732652 Tududi: update to 1.4.1
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-08-21 17:50:49 +03:00
av 3fd82b71b2 wakapi: исправлена ссылка на релизы в шапке docker-compose
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- в комментарии со времён copy-paste стоял пакет grampsweb вместо muety/wakapi
2026-08-21 10:43:53 +03:00
av d4824bac6f Wakapi: update to 2.17.6 2026-08-21 10:43:51 +03:00
av cbdf2e7b2f Apprise: update to 1.5.2 2026-08-21 10:43:42 +03:00
av a9d0498c12 Gramps: update to 26.8.0 2026-08-21 10:43:40 +03:00
av 37774f4542 Bifrost: update to 1.6.11 2026-08-21 10:43:39 +03:00
av 4484c9d9c2 Dozzle: update to 10.7.3 2026-08-21 10:43:37 +03:00
av cf75db3482 tuwunel: удалена несуществующая опция TUWUNEL_ALLOW_CHECK_FOR_UPDATES
- наследство conduwuit: в tuwunel такого поля нет ни в конфиге, ни в
  исходниках, проверки обновлений тоже нет — переменная молча игнорировалась
2026-08-21 10:43:29 +03:00
av 07a82ca4b0 Tuwunel: update to 1.9.0 2026-08-21 10:43:27 +03:00
av b79b1269c4 Tududi: update to 1.4.0 2026-08-21 10:43:09 +03:00
av ef20e39315 Gitea: update to 1.27.2 2026-08-21 10:43:07 +03:00
av 626bac5303 Netdata: снижено потребление памяти и CPU
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- выключены ML (52 MB и тренировка k-means по 13.7k измерений каждые 3
  часа), network-viewer, debugfs и ioping; storage tiers 3 → 2, то есть
  максимум истории 3 месяца вместо 2 лет; apps.plugin обходит /proc раз в
  30s вместо 10s, метрики групп процессов при этом сохранены
- из /proc/net/dev отфильтрованы veth*, br-* и docker0 — 462 графика на 50
  интерфейсов, из которых 43 безымянные veth докера. Побочный эффект:
  проверка имени в proc_net_dev.c идёт до netdev_rename_this_device(),
  поэтому теряется единственный смапленный cgroup_caddyproxy.net_eth0
- postgres перестал собирать метрики индексов (205 индексов × 2 графика);
  max_db_indexes задан внутри джоб, потому что на верхнем уровне файла
  go.d разбирает только confgroup.Default и молча игнорирует остальное

Замер до: 13.7k метрик, 479 MiB, ~18% ядра. Ожидаемо после: ~11.8k
метрик и ~310 MiB.
2026-08-13 08:57:09 +03:00
av 50c975d49b Netdata: update to 2.11.0
- в 2.11 появился netflow-plugin, его стоковый netflow.yaml идёт с
  enabled: true и слушателями на UDP 2055/6343; при дефолтном
  `enable running new plugins = yes` он поднялся бы сам, поэтому отключён
  явно — экспортировать потоки нам некому, а память не бесконечная
- ломающих изменений для нас нет: убранный из prometheus-коллектора
  label_prefix и удалённый go-коллектор sensors мы не используем
2026-08-12 21:56:27 +03:00
av dd4a3b8456 Calibre-Web: update to 0.6.27 2026-08-10 08:53:27 +03:00
av aeddc1f168 tasks.py: версия authelia CLI берётся из docker-compose
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- константа AUTHELIA_DOCKER была прибита к 4.39.4, а сервис уже на 4.39.20 — конфиг валидировался чужим бинарником
- authelia-validate-config сам создаёт temp/: директория в .gitignore, на свежем клоне задача падала
2026-08-06 10:39:02 +03:00
av 045b2426b3 Authelia: увеличено время жизни сессии, Outline получает refresh token
- session cookies: inactivity 1 week, expiration 1 month, remember_me 3 months вместо дефолтных 5 минут / 1 часа / 1 месяца
- клиенту outline-app выданы scope offline_access и grant refresh_token с кастомным lifespan (refresh token 3 месяца): без них ValidateSSOAccessTask не мог продлить access token и ротацией jwtSecret убивал все сессии Outline
- consent_mode переведён в pre-configured, чтобы при повторном входе не показывался экран согласия
2026-08-06 10:38:48 +03:00
av 58519f1413 eget: обновлены версии инструментов
- rclone 1.75.0, restic 0.19.1, resticprofile 0.33.1, btop 1.4.7,
  gobackup 3.1.1, task 3.52.0, zellij 0.44.3; dust уже актуален
- gobackup 3.x переименовал ключи passphrase и MSSQL, но наши конфиги
  используют только local-хранилище и sqlite
2026-08-06 10:19:14 +03:00
av 1fcc189afc GoAccess: update to 1.11
- базовый образ и тег локальной сборки с jq подняты одной парой
2026-08-06 10:02:27 +03:00
av 16ab872ba4 Miniflux: update to 2.3.3 2026-08-06 10:02:26 +03:00
av 85ebeb4197 AI-модель tududi задаётся явно, правило роутинга в bifrost убрано
- с tududi 1.3.1 модель берётся из LLM_MODEL, а не захардкожена — шлём
  deepseek/deepseek-v4-pro, Bifrost резолвит провайдера по префиксу
- ключ и base URL переведены на пару LLM_*, приоритетную над OPENAI_*
- routing_rules оставлен пустым массивом, а не удалён: при
  source_of_truth=config.json отсутствующая секция не трогает строки в config.db
2026-08-06 10:00:47 +03:00
av a09f3c629e tududi: TUDUDI_TRUST_PROXY переведён на 1
- `true` доверял всей цепочке X-Forwarded-For, что позволяло подделать IP
  клиента; у нас ровно один хоп — Caddy
- tududi с 1.3.x сам приводит значение к 1 и пишет предупреждение на каждый старт
2026-08-06 10:00:34 +03:00
av 90bdb4a3ea Tududi: update to 1.3.1 2026-08-06 09:43:28 +03:00
av 88a53076e9 bifrost: в compose записано, как проверять обновления образа
- тег образа соответствует релизу transports/vX.Y.Z, а теги 2.1.x рядом на
  Docker Hub — это helm-chart
- конфиг после апдейта валидировать по config.schema.json: неизвестные ключи
  Bifrost игнорирует молча, в логах ошибки не будет
2026-08-06 09:20:50 +03:00
av 4b6d5cdc85 bifrost: исправлено расположение source_of_truth в конфиге
- ключ лежал внутри config_store, где Bifrost его молча игнорировал — шлюз
  работал в дефолтном режиме split вместо заявленного config.json
- поднят на верхний уровень, теперь providers и governance из config.json
  авторитетно перезаписывают строки в config.db на старте
2026-08-06 09:18:15 +03:00
av b794eea87a Bifrost: update to 1.6.8 2026-08-06 09:17:54 +03:00
av 9acf687530 Tuwunel: update to 1.8.3 2026-08-06 09:17:51 +03:00
av d814db591a Memos: update to 0.30.0
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-07-31 08:43:54 +03:00
av 3da10a0759 Gramps: update to 26.7.1 2026-07-31 08:43:52 +03:00
av 6a2f5a72f4 Gitea: update to 1.27.1 2026-07-31 08:43:51 +03:00
av dd2b684b33 Dozzle: update to 10.6.14 2026-07-31 08:43:49 +03:00
av bb141807c9 adr: записана локальная сборка образов вместо Yandex Container Registry
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
Постфактум по сегодняшней работе: почему ушли от cr.yandex к роли app_image
(упрощение деплоя без раннера + сокращение секретов) и чем за это платим.
2026-07-25 16:31:38 +03:00
av 0b2a3bd19c backlog: удалена задача local-image-build, она реализована
- все три приложения (homepage, transcriber, remembos) собирают образы
  локально ролью app_image, реестр и yc_*-переменные выведены из оборота
- ссылавшиеся задачи обновлены: narrow-secret-scopes и
  no-secrets-in-playbook-output больше не ждут эту работу
2026-07-25 16:26:31 +03:00
av 6a0d786bdd secrets: убраны переменные Yandex Container Registry
yc_oauth_token, yc_container_registry и yc_container_registry_repository
больше не используются: homepage, transcriber и remembos собирают образы
локально ролью app_image.
2026-07-25 16:24:04 +03:00
av 6d28d361e2 ee: редактор запускается через subprocess вместо pty invoke
- invoke оставлял на внешнем терминале ixon, и Ctrl+S/Ctrl+Q съедал драйвер
  терминала как XOFF/XON — до micro они не доходили
- код возврата ansible-vault теперь пробрасывается наружу
2026-07-25 16:23:03 +03:00
av 1b2bc61cff docs: реестр убран из описаний, беклог отмечен по локальной сборке
- AGENTS.md: homepage/transcriber собираются ролью app_image, registry-плейбуков
  и vars/transcriber.images.yml больше нет
- local-image-build: закрыты шаги по homepage и transcriber, остался вынос
  yc_*-переменных из vault; добавлены замеры архивов
- container-hardening-nits: снят пункт про плавающий `:latest` у homepage
2026-07-25 14:37:08 +03:00
av fad0d78718 transcriber: деплой через локальную сборку образа вместо Yandex Registry
- плейбук зовёт роль app_image, docker_login убран
- compose тянет `transcriber:{{ app_image_tag }}` с pull_policy: never
- удалены playbook-transcriber-registry.yml и vars/transcriber.images.yml
  с зашитым тегом образа
2026-07-25 14:36:50 +03:00
av cb43273ad5 homepage: деплой через локальную сборку образа вместо Yandex Registry
- плейбук зовёт роль app_image, docker_login и `pull: always` убраны
- compose тянет `homepage-nginx:{{ app_image_tag }}` с pull_policy: never
- удалён playbook-homepage-registry.yml и registry-переменные из vars
2026-07-25 14:36:39 +03:00
av d9656b8cdb app_image: перед передачей печатается размер архива с образом
Копирование tar — самый долгий шаг деплоя; теперь видно, сколько мегабайт
едет на сервер и не распух ли образ. Роль синхронизирована с каноном.
2026-07-25 14:21:36 +03:00
av 049ced48f5 remembos: в шаблоне конфига описано поведение бота при недоступном telegram 2026-07-25 14:18:06 +03:00
av 5dc199f3ce remembos: деплой через локальную сборку образа вместо Yandex Registry
- плейбук зовёт роль app_image, docker_login в cr.yandex удалён
- compose тянет `{{ app_name }}:{{ app_image_tag }}` с pull_policy: never
  вместо зашитого тега из реестра
2026-07-25 14:06:30 +03:00
av 156df94f00 roles: завендорена общая роль app_image
- подписка в SYNCED_ROLES + копия из канона ansible-roles (inv roles-pull)
- роль собирает образ приложения на control-хосте по контракту `task image`
  и везёт его на сервер через docker save/load, без реестра
2026-07-25 14:06:20 +03:00
av d211052914 docs: заведён склад конвенций, первая — категории директорий приложения
- docs/conventions/ с индексом: чем конвенция отличается от ADR и drafts,
  статусы (рекомендуемая / обязательная), когда заводить
- app-directories.md: конфигурация / данные / кеш по принципу создания и
  ценности; из категорий выводится backup-targets
- раздел «Конвенции» в AGENTS.md со ссылкой на склад
2026-07-25 13:52:00 +03:00
av f505e9ebeb backlog: отмечен сделанный шаг с no_log
- Первый шаг задачи закрыт коммитом b7b1f49; остались вынос секретов
  в файлы и проверка от дрейфа.
- Записано исключение: compose miniflux оставлен без no_log, из vault он
  тянет только имя пользователя и имя базы.
2026-07-25 12:30:41 +03:00
av b7b1f49c8a ansible: секреты закрыты no_log в выводе плейбуков
- Пятнадцать задач, рендерящих файлы с секретами из vault, и три
  `docker_login` получили `no_log: true`: раньше `--diff` печатал значения
  в терминал целой строкой при каждом изменении файла.
- Цена — дифф этих файлов больше не виден. Снимать по мере переезда
  секретов в отдельные файлы; у tududi и wanderer снять не выйдет.
2026-07-25 12:30:06 +03:00