136 lines
4.0 KiB
Markdown
Executable File
136 lines
4.0 KiB
Markdown
Executable File
# Deployment
|
|
|
|
## 0. Ansible full-stack вариант (рекомендуется)
|
|
|
|
```sh
|
|
cd <PROJECT_ROOT>/ansible
|
|
ansible-playbook -i inventory.ini provision_proxmox_ct_and_deploy_aw.yml
|
|
```
|
|
|
|
Этот playbook создаёт CT в Proxmox и полностью разворачивает ActivityWatch внутри контейнера.
|
|
|
|
Массовый вариант по матрице CT:
|
|
|
|
```sh
|
|
cd <PROJECT_ROOT>/ansible
|
|
ansible-playbook -i inventory.ini provision_proxmox_ct_matrix_and_deploy_aw.yml
|
|
```
|
|
|
|
## 1. Подготовить env-файлы
|
|
|
|
На рабочей машине оператора:
|
|
|
|
```sh
|
|
cp proxmox/ct-vars.example.env <PRIVATE_CONFIG_DIR>/activitywatch-ct.env
|
|
cp aw-server/aw-server.env.example <PRIVATE_CONFIG_DIR>/activitywatch-aw.env
|
|
```
|
|
|
|
Заполнить оба файла реальными значениями вне git.
|
|
|
|
## 2. Создать CT на Proxmox
|
|
|
|
На узле Proxmox:
|
|
|
|
```sh
|
|
cd /path/to/ActivityWatch-Russian
|
|
./proxmox/create-ct.sh <PRIVATE_CONFIG_DIR>/activitywatch-ct.env
|
|
```
|
|
|
|
Скрипт:
|
|
|
|
- валидирует обязательные переменные;
|
|
- создаёт Debian 12 CT;
|
|
- запускает контейнер;
|
|
- выполняет минимальный bootstrap пакетов;
|
|
- готовит `<CT_BOOTSTRAP_DIR>` для дальнейшей загрузки артефактов.
|
|
|
|
## 3. Загрузить артефакты в CT
|
|
|
|
На узле Proxmox:
|
|
|
|
```sh
|
|
./proxmox/push-aw-artifacts.sh <PRIVATE_CONFIG_DIR>/activitywatch-ct.env
|
|
pct push <CT_ID> <PRIVATE_CONFIG_DIR>/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 <CT_ID>
|
|
bash <CT_BOOTSTRAP_DIR>/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 <CT_BOOTSTRAP_DIR>/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_<HOST>` и `aw-dlp-rules_<HOST>`.
|
|
|
|
## 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_<HOST>`;
|
|
- на DLP bucket-странице доступны секции `DLP review и правила`, `DLP Rules`, `DLP Review`;
|
|
- reverse proxy не кэширует старую статику.
|
|
|
|
## 8. Что зафиксировать после ввода
|
|
|
|
- дата ввода;
|
|
- узел Proxmox;
|
|
- `CT_ID`;
|
|
- IP/FQDN;
|
|
- версия `aw-server-rust`;
|
|
- место хранения backup;
|
|
- фактическая схема публикации.
|