100 Commits
Author SHA1 Message Date
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
av fbd0a66f44 backlog: secrets-env-to-file разложена по приложениям
- Шесть задач `secrets-file-*` вместо одной: outline, wakapi, authelia,
  gramps (средний), gitea, tududi (низкий, выигрыш частичный). Wanderer
  отпал — файловых секретов не умеет ни meilisearch, ни pocketbase.
- Матрица механизмов со ссылками на код уехала в
  docs/drafts/secrets-file-support.md, родитель — на кладбище.
2026-07-25 12:25:50 +03:00
av f9a8c64377 backlog: матрица поддержки файловых секретов по приложениям
- Проверено по исходникам закреплённых версий: outline, wakapi, gitea,
  gramps и authelia умеют брать секреты из файла, tududi и wanderer — нет.
- Отмечено, что `secrets-env-to-file` переросла в эпик: разбивать по
  приложениям отдельным заходом.
2026-07-25 12:20:20 +03:00
av 3b846536f9 backlog: заведён запрет секретов в выводе плейбуков
- `inv pl` идёт с `--diff`, и 14 задач в 12 плейбуках печатают отрендеренные
  секреты в терминал; `no_log` есть только в `roles/secrets`. Инвентарь,
  рычаги (`no_log`, `diff: false`, вынос в отдельный файл) и порядок — в задаче.
- Актуализирована `secrets-env-to-file`: список приложений сверен с шаблонами
  (tuwunel чистый, у gitea только SMTP), добавлен мотив с диффом.
2026-07-25 12:03:08 +03:00
av 0e7300ed0e backlog: добавлены задачи про локальную сборку образов и права секретов
- Уход от Yandex Container Registry на роль `app_image`: homepage,
  transcriber, remembos собираются локально и едут через docker save/load.
- Сужение прав секретов: `yc_oauth_token` открывает весь аккаунт ради
  одного `docker login` — вторая задача зависит от первой.
2026-07-25 11:54:31 +03:00
av f3c76ca583 backlog: добавлена идея о хранении пароля ansible-vault
- Пароль лежит открытым текстом рядом с репозиторием, а `ansible.cfg`
  подставляет его в любую ansible-команду — отсюда дамп секретов
  через `ansible-inventory --list`.
- Заведена идеей, а не задачей: компромисс «удобство против доступности
  автоматизации агенту» не разрешён, варианты с KeePassXC записаны с ценой.
2026-07-25 11:43:14 +03:00
av 72d8a9932e backlog: синхронизированы заголовки 10 задач в индексе
- Заголовки в README.md разошлись с H1 файлов задач; выровнено
  механически через `backlog.py check --fix`, тексты задач не менялись.
2026-07-25 11:42:59 +03:00
av 564432755d Ansible: точечные фиксы идемпотентности
- backup-targets собирается одной copy вместо lineinfile в цикле: теперь
  удаление цели из списка реально убирает строку из файла (7 плейбуков)
- netdata: getent вместо grep по /etc/group, ушёл бессмысленный changed_when
  и мёртвый фолбэк PGID
- исправлены копипастные имена play в wanderer и remove-user-and-app
2026-07-24 21:26:39 +03:00
av 4d976585ec Ansible: единственный инвентарь production.yml
- production.yml переписан на живой Timeweb-хост, timeweb.yml удалён,
  HOSTS_FILE в tasks.py и примеры в README поправлены
- host-vars application_dir и mount_external_storage не перенесены: это
  наследие YC-диска, а после переезда в group_vars инвентарь их перебивает
- ansible.cfg: inventory по умолчанию, чтобы забытый -i не уводил в никуда
2026-07-24 21:15:12 +03:00
av 9c156df0c7 Ansible: рестарт контейнеров переведён на handlers
- caddyproxy, netdata, authelia, bifrost, remembos: конфиг-задачи нотифаят
  handler "Restart application" вместо безусловного или условного рестарта
- ansible.cfg: force_handlers, иначе упавший прогон теряет notify и рестарт,
  применяющий правку конфига, не случится уже никогда
- authelia рестартит только authelia_app, чтобы не сбрасывать сессии в redis
2026-07-24 21:05:27 +03:00
av 1cf660b4fd Ansible: общие переменные перенесены в group_vars/all
- vars/vars.yml → group_vars/all/main.yml, vars/secrets.yml →
  group_vars/all/secrets.yml; boilerplate vars_files убран из всех плейбуков
- имя secrets.yml сохранено намеренно: pre-commit-хук и .crushignore ищут
  слово secret(s) в имени файла
- host_vars инвентаря теперь имеют приоритет над общими переменными
2026-07-24 20:44:51 +03:00
av cd0d014c99 Claude: подключить плагины av-dev-skills (backlog, git)
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-07-24 15:29:19 +03:00
av d22f7a203b Wakapi: update to 2.17.5 2026-07-24 15:28:43 +03:00
av 76fa640010 Outline: update to 1.9.2 2026-07-24 15:28:41 +03:00
av c4a044063b Netdata: update to 2.10.4 2026-07-24 15:28:40 +03:00
av 516a796f27 Gramps: update to 26.7.0 2026-07-24 15:28:38 +03:00
av bd6b574f1e Dozzle: update to 10.6.11 2026-07-24 15:28:36 +03:00
av 9dc57e0d29 eget: вынести роль в ansible-roles, декларативные пакеты
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-07-16 21:03:27 +03:00
av f31f51959e Invoke: задачи синхронизации общих ролей (roles-pull/push/status) 2026-07-16 21:03:26 +03:00
av 3b572b9c25 Tududi: update to 1.2.4
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-07-15 08:44:39 +03:00
av 25bd6bedf8 Gitea: update t0 1.27.0
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-07-14 09:42:38 +03:00
av 9b8cd5cab6 Backlog: уточнить SSH-задачу, завести очистку устаревшего инвентаря
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-07-13 19:52:01 +03:00
av b60e55ec5e Backlog: security-ревью (fable) — 13 находок по приоритетам 2026-07-13 19:47:51 +03:00
av f110cf7208 Backlog: перенести задачи из tududi (диск-алерты, logrotate, аудит безопасности) 2026-07-13 19:30:53 +03:00
av 30358de9d9 Docs: собрать беклог задач из drafts 2026-07-13 19:25:20 +03:00
av a41f6bca8e Tasks: add mc and edit-encrypted, unify base command set 2026-07-13 12:57:42 +03:00
av 93a0af7b94 Outline: update to 1.9.1
Linting / YAML Lint (push) Canceled after 0s
Linting / Ansible Lint (push) Canceled after 0s
2026-07-13 09:35:29 +03:00
av ce553591b1 Miniflux: allow fetching feeds from private network
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
Since 2.2.18 the fetcher blocks private/loopback hosts by default (SSRF
protection), which broke feeds served via rssbridge_app in the docker network.
2026-07-11 19:25:02 +03:00
av 57b9df201e Apprise: update to 1.5.1
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-07-11 15:21:36 +03:00
av 240ef3e1ad Miniflux: update to 2.3.2 2026-07-11 15:12:29 +03:00
av 84fc16d54d Tuwunel: update to 1.8.1 2026-07-11 15:09:49 +03:00
av aa9e566044 Gramps: update to 26.6.2 2026-07-11 15:03:54 +03:00
av 143f0a2429 Dozzle: update to 10.6.9 2026-07-11 14:57:45 +03:00
av 2da995ee72 GoAccess: update Caddy to 2.11.4 2026-07-11 14:57:44 +03:00
av c206db7344 Caddyproxy: update to 2.11.4 2026-07-11 14:57:41 +03:00
av 1ad4005ad0 Outline: update to 1.9.0
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-07-11 14:39:41 +03:00
av e6579d9b5f Tududi: update to 1.2.0 2026-07-11 14:39:27 +03:00
av 94d070b219 Bifrost: update to 1.6.3
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
with native deepseek provider
2026-07-07 09:00:21 +03:00
av e57528cef3 Dashboard: add server start dashboard via homepage
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-07-04 20:45:15 +03:00
av 5cd66d01bc Tududi: add task tracke application
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-07-04 16:56:01 +03:00
av 8ec0327851 Backups: update after intelligent tier migreation
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-06-25 16:45:48 +03:00
av 2930842e3f Backups: update ADR after migration
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-06-23 09:38:09 +03:00
av 0f80e66b66 Backups: split restic operations into phases for Intelligent Tiering 2026-06-22 17:58:45 +03:00
av 2b22fde718 Gitea: update to 1.26.4 2026-06-22 17:44:21 +03:00
av c39de421e0 Backups: add restic errors
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-06-09 10:23:46 +03:00
av a50b399a85 Add ansible playbooks review 2026-06-09 10:17:32 +03:00
av 94b09be53c Outline: update to 1.8.1 2026-06-09 10:17:07 +03:00
av b637fea882 Memos: update to 0.29.1 2026-06-09 10:16:54 +03:00
avandClaude Opus 4.8 933a0b9570 GoAccess: update Caddy to 2.11.3
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:46:43 +03:00
avandClaude Opus 4.8 96710360d9 Dozzle: update to 10.6.2
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:46:40 +03:00
avandClaude Opus 4.8 d9f0d94e1f Caddy: update to 2.11.3
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:46:37 +03:00
avandClaude Opus 4.8 9b853d351c Authelia: update to 4.39.20
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:46:33 +03:00
avandClaude Opus 4.8 11744f776a Wakapi: update to 2.17.4
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:45:39 +03:00
avandClaude Opus 4.8 0df5f358d0 Outline: update to 1.8.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:45:35 +03:00
avandClaude Opus 4.8 62e2a72e52 Memos: update to 0.29.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:45:32 +03:00
avandClaude Opus 4.8 7c91f4f355 Gramps: update to 26.6.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 17:45:26 +03:00
av 68d8bf6a68 Gramps: update to 26.5.3 2026-05-25 09:39:27 +03:00
av e585bfdca2 Gramps: update to 26.5.2
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-24 16:49:08 +03:00
av 41822e04e8 Gitea: update to 1.26.2 2026-05-24 16:48:50 +03:00
av 21ccc7ac8c Fix style in ADR
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-24 15:56:53 +03:00
av 81478c2323 Add legacy ADR 2026-05-24 15:40:28 +03:00
av 313b1820be Update readme
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-24 14:55:23 +03:00
av 2f2c1b0754 Add ADR after migration to timeweb cloud 2026-05-24 14:51:03 +03:00
av e45e1db002 Add architecture decision record templates 2026-05-24 14:35:35 +03:00
av dc49b3497b Migration: stop yandex cloud server
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-23 17:55:58 +03:00
av 02ea9a3735 Migration: transfer data and run apps 2026-05-23 17:51:07 +03:00
av a3e53b21e6 Migration: fix application order
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-23 15:30:33 +03:00
av 1b120e3ae6 Migration: add new inventory 2026-05-23 15:04:17 +03:00
av a22be7c7d1 Migration: bootstrap new vds 2026-05-23 15:01:58 +03:00
av 7d711425fd Migration: update steps
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-22 21:06:16 +03:00
av e03a4c417d Migration: fix tags and docker registry vars 2026-05-22 21:01:11 +03:00
av 10e1e8187b Migration: fix vars in playbooks
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-22 20:52:47 +03:00
av 1ce168655d Migration: application directory as parameter 2026-05-22 20:45:52 +03:00
av fe024b3b12 Migration: fix inventory hardcode in tasks.py
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-22 20:21:36 +03:00
av 8378f0edb0 Migration: expose some public vars 2026-05-22 20:18:45 +03:00
av 48737c1b6d Migration: optional external hdd mount 2026-05-22 20:17:12 +03:00
av 600a30ec11 Migration: add migration log 2026-05-22 20:11:23 +03:00
av 670947fcdf Migration: login to docker registry with oauth key 2026-05-22 20:11:10 +03:00
av 3545905cbd Migration: add draft for timeweb migration 2026-05-22 19:55:54 +03:00
av 893996f0c9 Docs: add docs and drafts 2026-05-22 19:13:05 +03:00
av 4a5db6e2bc Dozzle: update to 10.6.0
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-22 19:04:45 +03:00
av ca6875eaad Dozzle: update to 10.5.3
Linting / YAML Lint (push) Has been cancelled
Linting / Ansible Lint (push) Has been cancelled
2026-05-12 15:46:56 +03:00
av dbf0aa255a Gramps: update to 26.5.1 2026-05-12 15:46:22 +03:00