Commit Graph
100 Commits
Author SHA1 Message Date
av a7a886e19d Gramps: update to 26.9.0 2026-09-14 19:59:24 +03:00
av 4a98118c48 Tuwunel: update to 1.9.1 2026-09-14 19:59:22 +03:00
av af92587878 Outline: update to 1.10.1 2026-09-14 19:59:21 +03:00
av 2c0c3e9c6f Dozzle: update to 11.0.1 2026-09-14 19:59:20 +03:00
av b5c29abbce Dashboard: update to 2.3.0 2026-09-14 19:59:18 +03:00
av ff49f3e886 Authelia: update to 4.39.26 2026-09-14 19:59:17 +03:00
av 9d6fe68c97 Apprise: update to 1.5.4 2026-09-14 19:59:15 +03:00
av 711606c51e diet: кеш переведён на одну секцию [cache] с общим каталогом
- приложение само заводит cache/images и cache/cleanup, плейбук больше не создаёт images
2026-09-14 19:58:28 +03:00
av 0b862d1ffb deps: коллекции откреплены от requirements.yml
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- убран блок collections: community.docker и community.general приходят
  вместе с пакетом ansible, версия которого уже точно зафиксирована в uv.lock
- пин заводил вторую копию в ~/.ansible/collections, она перекрывала
  bundled-версию и молча расходилась с ней при обновлении ansible
- CI и так жил на bundled-коллекциях: requirements.yml он не читает,
  ставит только pip install ansible ansible-lint
2026-09-11 10:12:27 +03:00
av 389de5e02a deps: обновлены galaxy-коллекции
- community.docker 5.2.2 -> 5.3.0, community.general 13.3.0 -> 13.4.0
- пины приведены к версиям, которые уже приносит пакет ansible 14.4.0:
  ansible-lint больше не подхватывает старую копию из ~/.ansible
- galaxy-роли (timezone, security, docker) уже на последних версиях
2026-09-11 10:09:45 +03:00
av 7ad547f3ed deps: обновлены python-зависимости
- pyrefly 1.2.0 -> 1.3.0, ruff 0.16.6 -> 0.16.7, ansible 14.3.1 -> 14.4.0
  (ansible-core 2.21.3 -> 2.21.4), filelock, platformdirs
- границы версий в pyproject.toml не трогали, изменился только uv.lock
- pyrefly, ruff, yamllint и ansible-lint на новых версиях проходят без замечаний
2026-09-11 10:04:50 +03:00
av 5b0a7663ca diet: удалён комментарий про замер времени ответа у composition
- замер снимался со старой модели и к нынешней отношения не имеет
2026-09-11 10:00:53 +03:00
av 1e0636f826 diet: комментарий про имя модели приведён в соответствие с конфигом Bifrost
- в config.toml пишется точная пара провайдер/модель, алиасов и routing_rules у Bifrost нет
2026-09-11 10:00:10 +03:00
av e281082a66 diet: распознавание и сведение переведены на bothub/gemini-3.8-flash
- обе секции llm ходят в одну модель вместо разных, комментарии
  переписаны под именование моделей через Bifrost
- обновлены секреты в group_vars/all/secrets.yml
2026-09-11 09:57:17 +03:00
av 4ec0ea11b6 dashboard: siteMonitor dozzle переведён на /healthcheck
- корень dozzle за forward-proxy отдаёт 401 без заголовков Authelia,
  из-за чего сервис показывался недоступным и сорил ошибками в логах
2026-09-11 09:55:30 +03:00
av eefd476761 Dozzle: update to 11.0.0
- контейнер запускается от своего пользователя, доступ к docker.sock
  через дополнительную группу docker
- добавлен data/ под /data, он же попадает в backup-targets
2026-09-11 09:54:33 +03:00
av 7aa8276f13 Bifrost: update to 2.1.1 2026-09-09 17:01:18 +03:00
av 05cc1125b3 Bifrost: update to 2.1.0 2026-09-09 13:58:58 +03:00
av 3364f812c0 Dozzle: update to 10.10.0
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-09-06 17:37:33 +03:00
av 560fd2cc66 deps: ruff обновлён до 0.16, код приведён к новому набору правил
- в 0.16 расширился набор правил по умолчанию: 29 срабатываний там, где 0.15
  давал "All checks passed"
- subprocess.run без явного check (PLW1510) — проставлен check=False там, где
  код и так разбирает returncode сам
- слепые except Exception в оркестраторе бэкапов и скриптах помечены
  noqa: BLE001 с объяснением, почему перехват намеренно широкий
- EXE001 и TRY004 отключены в pyproject: бит исполняемости в репозитории
  ничего не решает, а ValueError при разборе config.toml — про содержимое
  конфига, а не про тип аргумента
- ruff format в 0.16 форматирует python внутри markdown, из-за чего
  переформатирован пример в docs/drafts/gitea-runner-on-demand.md
2026-09-06 17:33:22 +03:00
av 7c57574723 deps: обновлены python-зависимости, ruff временно закреплён ниже 0.16
- ansible 13.2.0 -> 14.3.1 (ansible-core 2.20.1 -> 2.21.3), ansible-lint
  25.12.2 -> 26.8.0, invoke 2.2.1 -> 3.0.3, requests, croniter, yamllint,
  типы и транзитивные пакеты
- ruff оставлен на 0.15: в 0.16 расширился набор правил по умолчанию, из-за
  чего в скриптах и tasks.py появляется 29 срабатываний; обновление вынесено
  в отдельный заход вместе с правкой кода
- ansible-lint, pyrefly и yamllint на новых версиях проходят без замечаний
2026-09-06 17:28:27 +03:00
av cc8036fe67 requirements: обновлены роли и запинены версии коллекций
- geerlingguy.security 3.0.0 -> 3.0.2: фикс пропущенной точки с запятой в
  50unattended-upgrades, из-за которой origin=Ubuntu,archive=*-security не
  попадал в allowed origins и автообновления безопасности ничего не ставили
- geerlingguy.docker 7.9.0 -> 8.0.0: удалён сломанный nightly-репозиторий,
  изменение затрагивает только RedHat
- community.docker 5.2.2 и community.general 13.3.0 зафиксированы явно, чтобы
  версии не разъезжались между окружениями
2026-09-06 16:42:56 +03:00
av 4bc7a19d88 system: размер журнала systemd ограничен 500M
Без потолка journald занимает до 10% файловой системы; на сервере он успел
дорасти до 745M. Лимит выставляется drop-in файлом в journald.conf.d.
2026-09-06 16:37:13 +03:00
av 8ddcf0b3ba docker: включён live-restore
Контейнеры больше не перезапускаются при рестарте демона, в том числе при
обновлении пакета docker-ce из playbook-upgrade.
2026-09-06 16:37:10 +03:00
av c00e4e0994 docker: включена ротация логов контейнеров
- json-file с max-size 10m и max-file 3 через docker_daemon_options
- до этого логи росли неограниченно, /var/lib/docker/containers добрался до 1.8 GB
- лимит применяется только к новым контейнерам, старые подхватят его при пересоздании
2026-09-06 16:29:08 +03:00
av 4a6eb35e09 backlog: удалена задача security-autoupdates, она реализована
- unattended-upgrades и apt-daily-upgrade.timer на сервере enabled,
  патчи тянутся только из security-репозиториев
2026-09-06 16:18:37 +03:00
av 4f3377a2b7 backlog: удалена задача ssh-disable-root-login, она реализована
- на сервере sshd -T показывает permitrootlogin no и passwordauthentication no
2026-09-06 16:18:36 +03:00
av 1f203c736c system: root-логин по SSH запрещён, включены автообновления безопасности
- security_ssh_permit_root_login: "no" — ansible ходит под major с become,
  root по SSH не нужен
- security_autoupdate_enabled: true — unattended-upgrades ставит только
  патчи из security-репозиториев, автоперезагрузка выключена
2026-09-06 16:14:48 +03:00
av 6a46a00f3b backlog: задача no-secrets-in-playbook-output ужата до защиты от дрейфа
- сплошная простановка no_log сделана, инвентарь рендеров заменён на историю
- осталась проверка в lefthook/CI и перенос miniflux_postgres_user и
  miniflux_postgres_database из vault в открытые group_vars
- возврат читаемого диффа отдан серии secrets-file-*, приоритет понижен
  до среднего
2026-09-06 16:11:11 +03:00
av 8aec606664 backlog: удалена задача shared-roles-sync, она реализована
- канон ролей лежит в ansible-roles, синхронизация идёт тасками
  roles-status / roles-pull / roles-push, подписка — eget и app_image
- драфт переведён в статус «реализовано»: отмечены расхождения с дизайном
  (имя канона, состав подписки) и незакрытые пункты плана
2026-09-06 16:11:01 +03:00
av af9d73a27c backlog: удалена задача disk-usage-alerts, она реализована
- алерты на заполнение диска стоят в health.d/system_resources.conf
  (warn >75%, crit >90% по каждой смонтированной ФС)
- размеры приложений и свободное место приходят в уведомлении backup-all.py
2026-09-06 16:10:49 +03:00
av b9e9dbafe0 Tududi: update to 1.4.2
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-09-06 12:01:13 +03:00
av 29485acc5f diet: срок распознавания поднят до двух минут
- первый вызов после простоя занял 65,9 с и был оборван минутным умолчанием,
  следующие уложились в 6–10 с
- по журналу запросов шлюза попытка была одна: 65,5 с ждал провайдер,
  накладные шлюза 0,46 с
2026-09-06 12:00:42 +03:00
av 8e1d5f8112 diet: заведён плейбук, периметр и бэкапы
- playbook-diet.yml и files/diet: образ через app_image, uid=gid=1111,
  каталоги config/data/cache, backup-targets со строкой data/
- блок сайта в Caddy разделён: /api/* идёт мимо Authelia под собственную
  аутентификацию, клиентские Remote-* срезаются на уровне сайта
- правило Authelia one_factor без subject: пользователи шире группы admins
2026-09-06 11:50:40 +03:00
av 41284ed33f bifrost: добавлен провайдер bothub и срок хранения логов
- bothub заведён custom-провайдером (base_provider_type openai, адрес без /v1):
  из него ходит diet, нативному DeepSeek снимки еды не по силам
- client.log_retention_days = 30: тело запроса пишется в logs.db целиком,
  снимок в 2500 px даёт запись около 911 КБ
2026-09-06 11:50:29 +03:00
av 3b46b97f47 Outline: update to 1.10.0
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-09-02 08:58:53 +03:00
av b3711c73b2 Dozzle: update to 10.9.0 2026-09-02 08:58:51 +03:00
av d7ff264c22 Dashboard: update to 2.2.0 2026-09-02 08:58:49 +03:00
av 320437ac7c dashboard: переменные homepage_* переименованы в dashboard_*
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
Имена пересекались с неймспейсом отдельного сервиса homepage на apex-домене
2026-08-31 10:35:40 +03:00
av 47af9eba6a wanderer: удалена мёртвая ветка бэкапа через gobackup
- gobackup.template.yml и backup.template.sh не применялись: плейбук сам
  удалял backup.sh, а бэкап давно идёт через backup-targets
- шаблон gobackup остался копипастой от gramps, с его путями в комментариях
- задача удаления легаси-файлов оставлена, чтобы снять их с сервера
2026-08-31 10:35:37 +03:00
av c8b3ef4aa0 apprise: заведён бандл alerts, netdata снова доставляет уведомления
- netdata слал в бандл server, удалённый при переименовании в backups,
  и все health-алерты уходили в 404
- бандлы теперь рендерятся циклом: backups для отчётов backup-all.py,
  alerts для netdata
2026-08-31 10:33:13 +03:00
av 1dc0bdd2af wakapi: имя gobackup-модели исправлено с gramps на wakapi
Имя модели попало в шаблон копипастой от gramps, из-за чего архивы
бэкапа wakapi лежали под именем gramps.*
2026-08-31 10:33:11 +03:00
av e3e5808599 memos: исправлена ссылка на список версий в compose 2026-08-31 10:18:53 +03:00
av 068c1b1d5a Bifrost: update to 2.0.0
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-08-31 09:46:18 +03:00
av fdbcf2f149 Apprise: update to 1.5.3 2026-08-31 09:31:33 +03:00
av f43d518f16 Gramps: update to 26.8.1 2026-08-31 09:31:31 +03:00
av 6e6c801e65 Gitea: update to 1.27.3 2026-08-31 09:31:30 +03:00
av 3773503dc3 Dozzle: update to 10.8.0 2026-08-31 09:31:28 +03:00
av 5c8c4f85fd eget: обновлены версии task, dust и zellij 2026-08-31 09:28:01 +03:00
av c5217607b1 owner: группа docker убрана у сервисных пользователей
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- 20 приложений её не получают: контейнерами рулит ansible от root, а
  членство в группе docker равносильно root на хосте
- у gitea, miniflux и outline группа осталась — их backup.sh дампит базу
  через docker compose exec из-под самого приложения
- задача service-users-docker-group закрыта, остаток вынесен в новую
  backup-dump-without-docker-group
2026-08-22 19:40:57 +03:00
av 856bf72560 owner: роль причёсана под конвенции eget и secrets
- валидация аргументов через assert вместо пары fail с одинаковым именем
- with_items/with_dict заменены на loop, имена задач без точки на конце
- добавлены meta/main.yml и README с таблицей переменных
- задача ansible-owner-role-cleanup удалена из беклога
2026-08-22 19:27:33 +03:00
av 70372ee028 caddyproxy: HSTS для всех сайтов и мелкий хардненинг
- сниппет access_log переименован в common, туда добавлен заголовок
  Strict-Transport-Security на год; без includeSubDomains — под
  vakhrushev.me есть имена не с этого сервера
- у edge-контейнера убрана capability NET_ADMIN, reverse-proxy её не требует
- убран leftover-листенер :29999 у status.vakhrushev.me
- задача caddy-hardening-nits удалена из беклога
2026-08-22 19:14:34 +03:00
av 16f0712a31 caddyproxy: Caddyfile применяется через caddy reload
- вместо рестарта всего прокси, через который идёт весь трафик; конфиг
  указан явно через --config, иначе caddy молча перезагружает не тот файл
- задача handlers-remaining-apps удалена из беклога
2026-08-22 19:08:08 +03:00
av 3bb85b85f6 handlers рестарта для apprise, dashboard, transcriber, miniflux
- правка bind-моунтнутого конфига раньше не подхватывалась до пересоздания
  контейнера; теперь template/secrets шлют notify на рестарт
- miniflux: убран recreate: always, вместо него точечный рестарт miniflux_app
  по изменению файлов секретов, postgres больше не дёргается
- goaccess: рестарт не нужен, build: always пересоздаёт контейнер по новому
  id образа — зафиксировано комментарием
2026-08-22 19:08:05 +03:00
av 7e64d76d02 ufw: правило для zabbix-агента и включение в all-setup
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- Порт 10050 (агент Timeweb) открыт только опросчикам хостера из Server= его
  конфига, а не всему интернету.
- playbook-ufw.yml добавлен в playbook-all-setup.yml перед docker: раньше он
  запускался только руками и после переезда на Timeweb не был прогнан вовсе —
  на сервере ufw до сих пор с ENABLED=no и пустым набором правил.
- В шапке плейбука зафиксировано, что ufw не закрывает порты, опубликованные
  докером: они идут мимо цепочки INPUT.
2026-08-22 18:00:24 +03:00
av 6bb0d61183 caddyproxy: admin API закрыт на loopback, метрики вынесены на :2020
- `admin :2019` слушал всю web_proxy_network: любой контейнер мог POST-ом в
  /config/ переписать маршрутизацию и снять forward_auth. Теперь
  `admin localhost:2019`.
- Метрики для netdata отдаёт отдельный site-блок `http://:2020 { metrics
  /metrics }`, netdata скрейпит новый порт.
- Порт для метрик именно 2020, а не 2019, как предлагала задача: сайт на :2019
  перехватывает IPv6-петлю (admin висит только на IPv4), из-за чего
  `caddy reload` внутри контейнера возвращает 0 и молча ничего не применяет —
  проверено на caddy:2.11.4.
2026-08-22 17:44:08 +03:00
av 304263e7b1 authelia: уровень логов понижен с debug до info
- debug-логи содержат детали аутентификации, имена пользователей и внутренности
  OIDC-потоков — в обычной эксплуатации не нужны, а через docker logs/dozzle это
  лишняя поверхность утечки.
- Задача убрана из беклога.
2026-08-22 17:38:56 +03:00
av 25886d1be0 miniflux: /metrics закрыт снаружи в Caddy
- METRICS_ALLOWED_NETWORKS не помогает: за прокси Miniflux видит IP Caddy,
  а netdata скрейпит по той же web_proxy_network — по IP их не различить
- задача убрана из беклога
2026-08-22 17:35:00 +03:00
av b9be642c5c gitea: ветка по умолчанию в новых репозиториях — master 2026-08-22 17:29:22 +03:00
av 9c75a52529 Dashboard: update to 2.1.2
Мажорное обновление homepage. Единственное ломающее изменение 2.0.0 —
встроенная аутентификация, она включается только через HOMEPAGE_AUTH_ENABLED,
так что дашборд остаётся за Authelia как прежде.
2026-08-22 13:39:01 +03:00
av a909442d8f образы приложений прописаны в docker-compose явно
- dashboard и wanderer брали имя образа и версию из переменных плейбука;
  теперь, как у остальных сервисов, они видны прямо в compose
- переменные homepage_image и wanderer_version удалены за ненадобностью
2026-08-22 13:38:36 +03:00
av 6ff11061d9 apprise: бандл server переименован в backups, telegram убран
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
- имя отражает единственный источник уведомлений — скрипт бэкапа;
  плейбук удаляет с сервера прежний server.cfg, иначе он остался бы
  рабочим конфигом со старыми секретами
- канал tgram:// удалён, уведомления идут на почту и в matrix
2026-08-22 12:38:34 +03:00
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