# Deployment ## 0. Ansible full-stack вариант (рекомендуется) ```sh cd /ansible ansible-playbook -i inventory.ini provision_proxmox_ct_and_deploy_aw.yml ``` Этот playbook создаёт CT в Proxmox и полностью разворачивает ActivityWatch внутри контейнера. Массовый вариант по матрице CT: ```sh cd /ansible ansible-playbook -i inventory.ini provision_proxmox_ct_matrix_and_deploy_aw.yml ``` ## 1. Подготовить env-файлы На рабочей машине оператора: ```sh cp proxmox/ct-vars.example.env /activitywatch-ct.env cp aw-server/aw-server.env.example /activitywatch-aw.env ``` Заполнить оба файла реальными значениями вне git. ## 2. Создать CT на Proxmox На узле Proxmox: ```sh cd /path/to/ActivityWatch-Russian ./proxmox/create-ct.sh /activitywatch-ct.env ``` Скрипт: - валидирует обязательные переменные; - создаёт Debian 12 CT; - запускает контейнер; - выполняет минимальный bootstrap пакетов; - готовит `` для дальнейшей загрузки артефактов. ## 3. Загрузить артефакты в CT На узле Proxmox: ```sh ./proxmox/push-aw-artifacts.sh /activitywatch-ct.env pct push /activitywatch-aw.env /etc/activitywatch/aw-server.env ``` В CT будут загружены: - `install_aw_server.sh` - `apply_webui_ru_patch.sh` - `activitywatch-server.service` - `aw-ru-patch.js` - `aw-sw-cleanup.js` ## 4. Установить ActivityWatch Server Внутри CT: ```sh pct enter bash /install_aw_server.sh ``` Скрипт установки: - ставит `curl`, `unzip`, `jq`, `ca-certificates`; - создаёт пользователя `activitywatch`; - скачивает release `aw-server-rust`; - раскладывает бинарник по версиям; - создаёт активный symlink; - копирует systemd unit; - включает и запускает сервис. ## 5. Применить RU patch для Web UI Внутри CT: ```sh bash /apply_webui_ru_patch.sh systemctl restart activitywatch-server.service ``` Патч: - копирует `aw-ru-patch.js` и `aw-sw-cleanup.js`; - делает backup `index.html`; - добавляет include в `index.html`; - заменяет `service-worker.js` cleanup-версией для сброса старого cache; - включает DLP Web UI override: верхнее меню `DLP`, центр `DLP review и правила`, buckets `aw-dlp-review_` и `aw-dlp-rules_`. ## 6. Проверить сервис ```sh systemctl status activitywatch-server.service --no-pager curl -fsS http://127.0.0.1:5600/api/0/info ss -ltnp | grep 5600 grep -n 'aw-ru-patch\|aw-sw-cleanup' /opt/activitywatch/webui-ru/index.html ``` Ожидаемо: - сервис `active (running)`; - API отвечает; - порт слушается; - в `index.html` есть оба include. ## 7. После публикации Проверить извне: - открывается `/`; - API доступен по ожидаемому URL; - после hard refresh видна русификация; - в верхнем меню доступен `DLP` и он открывает `#/buckets/aw-dlp-endpoint-signals_`; - на DLP bucket-странице доступны секции `DLP review и правила`, `DLP Rules`, `DLP Review`; - reverse proxy не кэширует старую статику. ## 8. Что зафиксировать после ввода - дата ввода; - узел Proxmox; - `CT_ID`; - IP/FQDN; - версия `aw-server-rust`; - место хранения backup; - фактическая схема публикации.