rpi: Google — календарь и Gmail (только чтение) для Astra; fr1: страницы OAuth на www.ruzzy.dev/astra
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
d28fe9f5be
commit
f87fcd1f5a
+1
-1
@@ -107,7 +107,7 @@ backend=systemd banaction=ufw
|
||||
## nginx + TLS
|
||||
- nginx 1.24 (apt) + certbot 2.9 (`python3-certbot-nginx`), автопродление через systemd-таймер certbot.
|
||||
- vhost `/etc/nginx/sites-available/mon.ruzzy.dev.conf` → проксирует на Grafana (`127.0.0.1:3000`), HTTPS-редирект, websocket.
|
||||
- vhost'ы `share.ruzzy.dev.conf` и `www.ruzzy.dev.conf` — статика с **общим** корнем `/var/www/share.ruzzy.dev` (`autoindex off`, `try_files $uri =404`, `server_tokens off`), у каждого свой сертификат. Используется для раздачи клиентских конфигов OpenVPN — сейчас там `marina-de.ovpn`, `masha-de.ovpn`.
|
||||
- vhost'ы `share.ruzzy.dev.conf` и `www.ruzzy.dev.conf` — статика с **общим** корнем `/var/www/share.ruzzy.dev` (`autoindex off`, `try_files $uri =404`, `server_tokens off`), у каждого свой сертификат. Используется для раздачи клиентских конфигов OpenVPN — сейчас там `marina-de.ovpn`, `masha-de.ovpn`; с 2026-10-12 ещё `astra/index.html` и `astra/privacy.html` — страницы OAuth-приложения Astra для Google (`stacks/www-ruzzy/`, см. `servers/rpi.md`).
|
||||
- vhost `default` — catch-all `server_name _`, `listen 80 default_server`, отдаёт дефолтную страницу `/var/www/html/index.nginx-debian.html`. На `:443` `default_server` **не задан**, поэтому TLS-запрос с неизвестным SNI попадает на первый по алфавиту vhost (`git.ruzzy.dev`) и получает его сертификат. Так отвечают и `https://ruzzy.dev`, и `https://fr1.ruzzy.dev` — своих vhost'ов и сертификатов у них нет, браузер видит несовпадение имени (проверено 2026-10-11).
|
||||
- vhost `astra.ruzzy.dev` (вебхук Маруси) — **удалён 2026-10-11** вместе с сертификатом. ⚠️ DNS-запись `astra.ruzzy.dev` (CNAME → fr1.ruzzy.dev) у регистратора — удалить вручную; пока она есть, запросы к этому имени отвечает vhost `git` с чужим сертификатом.
|
||||
- Сертификаты LE: `mon`, `git`, `share`, `www`, `astra` (с 2026-10-11, `certbot certonly --nginx`, продление тем же таймером). `cam.ruzzy.dev` удалён 2026-09-08 вместе с ipcam.
|
||||
|
||||
@@ -224,3 +224,12 @@ Docker CE 29.9 + Compose v5.6 из репо download.docker.com (в Debian ст
|
||||
- 2026-10-12 по прямой просьбе владельца OneDrive-бэкап и еженедельная проверка исключают объекты с метаданными `malware-detected=true` через `--metadata-exclude`; `--onedrive-av-override=false` явно запрещает обход серверного антивируса независимо от конфигурации. Ранее восемь заблокированных файлов приводили к ошибке всех прогонов и нулевой метке последнего успеха. Фильтр динамический, не список восьми путей; проверен на `Olya/laptop/калитники - платформы.rar`: без фильтра файл виден, с фильтром отсутствует; метаданные подтверждают true. Скрипты установлены в `/usr/local/bin/`, прежние сохранены с `.bak-20261012-malware`. Файлы в current/archive и в облаке не удалялись, текущие процессы не прерывались; следующий запуск по таймеру использует фильтр. ⚠️ Успех означает полноту бэкапа только среди файлов без отметки OneDrive; ранее сохранённые копии не очищаются, новые реальные ошибки не подавляются. Успешный полный прогон после изменения пока не подтверждён.
|
||||
|
||||
- 2026-10-12 08:16 MSK по прямой просьбе владельца вручную запущен `onedrive-backup.service` после установки фильтра malware-detected. Перед запуском служба была failed (предыдущий результат 04:57), конкурирующего прогона не было; запуск принят, состояние activating/start. Итог и обновление метрики успеха ещё ожидаются, алерт вручную не сбрасывался.
|
||||
|
||||
|
||||
## Google: календарь и почта владельца (с 2026-10-12)
|
||||
|
||||
- Скилл Astra **`google`** (`ruzzy/astra-bot`, `codex/skills/google/`): `gcal` (повестка, свободные окна, создать/перенести/изменить/удалить событие), `gmail` (**только чтение**: список/поиск, непрочитанные, письмо, вложения → `/tmp/astra-gmail/`), `google-auth` (вход/статус). На rpi: `/usr/local/bin/{gcal,gmail,google-auth}`, модуль `/usr/local/lib/astra-google/google_api.py` (только stdlib). Без подтверждения — `codex/rules/google.rules`.
|
||||
- Аккаунт `ruslan.gilfanov@gmail.com`; OAuth-клиент Desktop в Google Cloud проекте `astra` (Calendar API + Gmail API), приложение опубликовано (In production, не проверено Google — для личного использования). Branding: домашняя `https://www.ruzzy.dev/astra/index.html`, политика `https://www.ruzzy.dev/astra/privacy.html` (fr1, `stacks/www-ruzzy/`), authorized domain `ruzzy.dev`, без логотипа (логотип требует верификации).
|
||||
- Права токена: `calendar` + `gmail.readonly`. Секреты — `/etc/astra-google/` (root:astra 2770; `client.json` 640, `token.json` 640 — refresh-токен), в git нет. Вход (PKCE, redirect `http://localhost`): `google-auth url` → «Разрешить» → адрес `http://localhost/?code=…` из браузера → `google-auth code 'АДРЕС'`. Отозвать — myaccount.google.com/permissions.
|
||||
- Календари: личный (запись), «Семейная группа» (запись — только по явной просьбе), праздники США (чтение), **рабочий `rgilfanov@walletteam.org` — только занятость** (freeBusyReader через `freeBusy`): админ walletteam запрещает внешний доступ к подробностям; обход (секретный iCal, копирование) — не делать. `gcal` пишет только в календари с ролью owner/writer.
|
||||
- Доступ: владелец — всё; `129703290` — календарь, почта закрыта; Поле — ни календарь, ни почту (правила в `codex/AGENTS.md`).
|
||||
|
||||
Reference in New Issue
Block a user