Files
infra/stacks/rpi-tg-export/README.md
T
gilfanovrandClaude Opus 5.5 8a06244ef4 rpi: выгрузка Telegram второго аккаунта (tg_export с Mac) — stacks/rpi-tg-export
Пользователь tgexport, сессия /var/lib/tg-export (600), тексты в /mnt/backup/tg (группа astra),
докачка раз в сутки без медиа, итог в backup-metrics. Вход делает владелец.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 11:26:35 +03:00

2.9 KiB
Raw Blame History

Выгрузка Telegram — второй аккаунт владельца (rpi)

Проект tg_export (Telethon, MTProto) перенесён с Mac 2026-10-17: на малине — второй аккаунт владельца, регулярная докачка только текста (медиа — позже, если понадобится). Старая выгрузка первого аккаунта (~14 ГБ) осталась на Mac в ~/pets/tg_export/out, сюда не переносилась; анализ (stats, trips, presence…) — там же.

Что Где
Код /opt/tg-export/ (export.py, fetch_public.py, channel_comments.py), venv /opt/tg-export/venv
Обёртка /usr/local/bin/tg-export — подставляет --session и --out, ключи из env
Ключи приложения (TG_API_ID/TG_API_HASH, my.telegram.org) /etc/tg-export/env — root:tgexport 640, в git нет
Сессия (= полный доступ к аккаунту) /var/lib/tg-export/tg.session — tgexport 600
Выгрузка /mnt/backup/tg/ — dialogs.json, chats/<id>_<название>/{messages.jsonl,messages.txt,meta.json,_state.json}; tgexport:astra, каталоги 2750, файлы 640
Таймер tg-export.timer — 04:30 ±10 мин, tg-export.service (oneshot, run --no-media --archived)
Мониторинг ExecStopPost=+backup-metrics backup_tg_export → алерты BackupFailed / BackupStale (>30 ч)

Пользователь tgexport — системный, без шелла: Astra (группа astra) читает тексты, но не видит сессию и ключи.

Установка и вход

sudo sh install.sh                                   # код, venv, пользователь, каталоги, юниты
sudo install -o root -g tgexport -m 640 env /etc/tg-export/env   # ключи приложения (как .env.example)
ssh -t rpi sudo -u tgexport tg-export login          # номер, код из Telegram, 2FA — делает владелец
sudo systemctl enable --now tg-export.timer

Вручную: sudo -u tgexport tg-export list (диалоги), sudo -u tgexport tg-export run --no-media --only @чат. Повторный запуск догружает только новое (_state.json в каждом чате), --full — перезалить чат.

⚠️ Первый прогон долгий: Telegram троттлит массовое чтение (FloodWait, скрипт ждёт до 24 ч) — BackupStale может сработать, пока он идёт; следующий запуск таймера не стартует поверх идущего. ⚠️ Медиа выключены (--no-media); включить — убрать флаг в юните (лимит по умолчанию 50 МБ на файл).