Files
2026-08-23 00:50:51 +03:00

103 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Roadmap
Планируемые улучшения инфраструктурного репозитория. Файл фиксирует будущие работы, эксплуатационные риски и технический долг.
`CHANGELOG.md` описывает уже сделанные изменения, а этот файл хранит то, что еще нужно спланировать или выполнить.
## Высокий приоритет
### Обновить Nextcloud с EOL-версии
- Текущая версия: `nextcloud:30.0.6`.
- Риск: ветка Nextcloud 30 достигла EOL и не получает исправления безопасности.
- Что сделать:
- изучить upgrade path и release notes Nextcloud;
- сделать backup `data/nextcloud/`;
- проверить совместимость используемых apps;
- обновляться по поддерживаемому пути между major versions;
- после обновления проверить web UI, `occ status`, фоновые задачи и healthcheck.
### Обновить Gitea из-за security advisory
- Текущая версия: `docker.gitea.com/gitea:1.26.2`.
- Риск: для Gitea `<= 1.26.4` опубликован SSRF advisory, patched version указана как `1.27.0`.
- Что сделать:
- изучить release notes Gitea `1.27.0+`;
- сделать backup `data/gitea/`;
- обновить image version в `docker-compose.yml`;
- проверить web UI, git clone/push, Actions и healthcheck.
### Переделать backup перед деплоем
- Текущее поведение: workflow архивирует весь `data/` в `backups/` на том же диске.
- Риск: backup может падать из-за нехватки места до начала деплоя.
- Что сделать:
- добавить preflight-проверку свободного места;
- чистить старые backups до создания нового архива;
- рассмотреть backup только затронутого service data вместо всего `data/`;
- рассмотреть off-host backup или streaming backup на другую машину;
- документировать ручной backup/restore для отдельных сервисов.
## Средний приоритет
### Закрепить оставшиеся Docker image versions
- Сейчас floating images остаются у:
- `henrygd/beszel`;
- `henrygd/beszel-agent`;
- `gitea/act_runner:latest`;
- `rustdesk/rustdesk-server:latest`.
- Риск: деплой может неожиданно подтянуть несовместимую версию или, наоборот, не обновиться предсказуемо.
- Что сделать:
- подобрать актуальные стабильные версии;
- закрепить tags в `docker-compose.yml`;
- обновить `README.md` и `CHANGELOG.md`;
- для stateful-сервисов делать отдельные коммиты и backup перед деплоем.
### Пересмотреть безопасность Gitea Actions runner
- Текущее поведение: `git-runner` имеет доступ к `/var/run/docker.sock`.
- Риск: доступ к Docker socket фактически дает workflow root-equivalent доступ к хосту.
- Что сделать:
- явно определить trust boundary для Actions;
- ограничить запуск workflow только доверенными репозиториями/пользователями;
- рассмотреть отдельный runner host или VM;
- рассмотреть rootless/isolated runner setup, если это совместимо с нужными jobs.
### Уйти от password-based SSH deploy
- Текущее поведение: workflow использует `sshpass` и `sudo -S`.
- Риск: парольный deploy хуже аудируется и более хрупкий, чем key-based доступ с ограниченными правами.
- Что сделать:
- завести отдельного deploy user;
- перейти на SSH key;
- ограничить sudoers только нужными командами;
- убрать передачу sudo password из workflow.
## Низкий приоритет
### Добавить healthcheck для сервисов без проверки готовности
- Кандидаты:
- `pwd`;
- `sup-hbbs`;
- `sup-hbbr`.
- Цель: после деплоя видеть, что сервис не просто запущен, а реально отвечает.
### Почистить test Telegram workflow
- В `test_telegram_deploy_bot.yaml` есть неиспользуемая переменная `MESSAGE`, которая ссылается на несуществующий `steps.prepare_message`.
- Риск низкий: workflow сейчас не использует эту переменную, но она путает чтение и сопровождение.
### Разобраться с использованием диска
- После неудачной попытки backup занятое место на диске выросло.
- Первичные наблюдения:
- `backups/` не содержит крупного архива;
- `lsof +L1` не показал большого удаленного файла;
- Docker images занимают заметный объем, но не должны были измениться, если workflow упал до Docker-шагов.
- Что сделать:
- найти крупные каталоги через `du -xhd 1`;
- проверить `/var`, `/tmp`, Docker storage и filesystem reserve;
- только после диагностики решать, что можно чистить.