TgWitness / Документация

Справочник / Установка

Развёртывание

Запускайте TgWitness в качестве службы на Windows, Linux, macOS или в Docker, через HTTPS, с резервным копированием и обновлениями.

Английский язык · Русский · Украинский · Español · Португальский (Бразилия) · Türkçe · العربية · Фарси · Урду · Хинди · Индонезийский язык · Tiếng Việt · Упрощённый китайский

Выберите вариант установки#

Для получения портативного пакета извлеките файл TgWitness-<version>-windows-amd64-portable.zip из GitHub Releases. Для других способов загрузите и распакуйте ZIP-архив с исходным кодом или клонируйте репозиторий, а затем выполните следующую команду из каталога проекта:

Установка Начало Работает в фоновом режиме?
Портативный пакет для Windows TgWitness.cmd Нет; оставьте окно открытым.
Встроенная версия для Windows Start.cmd Нет; для работы в фоновом режиме используйте дополнительную задачу входа в систему.
Встроенная поддержка Linux/macOS sh start.sh Нет; для работы в фоновом режиме используйте systemd/launchd.
Docker на любом поддерживаемом хосте docker compose up -d --build --wait Да, при условии, что работает демон Docker.
Помощник по работе с Docker в Windows scripts\Docker.cmd Да; помощник отслеживает работоспособность веб-сервера.
Помощник по работе с Docker в Linux/macOS sh scripts/docker-start.sh Да; помощник отслеживает работоспособность веб-сервера.

Что касается облачного сервера, доступ к которому должна иметь возможность проверить третья сторона — созданного с помощью API провайдера, без использования SSH, доступ к которому осуществляется исключительно через Cloudflare Tunnel — см. раздел «Развертывание с высоким уровнем надежности».

При запуске создаётся частный файл .venv и устанавливаются закреплённые зависимости. Docker собирает их внутри образа, не требуя наличия Python на хосте. Для первоначальной настройки необходим доступ к Интернету. Если Python версии 3.11 или выше не обнаружен, Start.cmd запрашивает разрешение перед установкой Python 3.12 для текущего пользователя Windows (с помощью winget, в противном случае — с помощью установщика с сайта python.org после проверки подписи Python Software Foundation); при этом никогда не запрашиваются права администратора. Docker и службы операционной системы остаются обязательными предварительными условиями.

При установке на локальном компьютере и в переносимом режиме используется папка «data/live» внутри соответствующей директории. В Docker используется том с именем «tgwitness-data», расположенный в «/data». Эти установки являются отдельными, пока вы сознательно не перенесёте весь каталог данных. Не ожидайте, что новый контейнер Docker автоматически обнаружит локальные учётные записи.

Требования к установке#

Для установки из исходного кода требуется Python 3.11 или более поздней версии с модулями venv и ensurepip, доступ к Интернету для установки первых зависимостей, а также каталог проекта с правами на запись для .venv. Для работы панели, входящей в комплект, не требуется Node.js или сборка интерфейса. Запустите программу запуска из вашей обычной учётной записи в ОС; TgWitness не требует прав администратора или root.

  • Windows: Start.cmd проверяет py -3, затем python, далее — папки по умолчанию для каждого пользователя и установочные папки «Program Files», при этом требуется версия 3.11 или более поздняя. Если ни один из вариантов не сработает, предлагается автоматическая установка для каждого пользователя, описанная выше. Также работает py -3 start.py. Портативный пакет не требует установки Python.
  • Linux: start.sh пробует python3.13, python3.12, python3.11, python3 и python, а также выводит команду установки для apt, dnf, pacman, zypper, apk или Homebrew, если ни одна из них не подходит. Для установки в Debian/Ubuntu может потребоваться пакет python3-venv, соответствующий выбранному интерпретатору. Устаревшую версию Python, установленную по умолчанию в дистрибутиве, необходимо заменить или дополнить версией Python 3.11+.
  • macOS: установите актуальный дистрибутив Python версии 3.11 или выше; не следует полагать, что интерпретатор, поставляемый с операционной системой, соответствует требованиям. Используйте файл python3 start.py из каталога проекта.
  • Docker: используйте Docker Engine/Desktop с Compose версии 2.20 или более поздней. Docker Desktop должен использовать контейнеры Linux в среде Windows. Контейнер устанавливает свои собственные зависимости Python; на хосте не требуется отдельная установка Python.

Используйте постоянное локальное хранилище для каталога данных. Планируйте объём с учётом объёма сообщений, мультимедиа, роста WAL, экспорта и резервного копирования; не существует основанных на фактических данных универсальных минимальных требований к дисковому пространству и оперативной памяти для всех рабочих нагрузок. Архитектуры процессоров и версии Python, не имеющие совместимых колес зависимостей, могут потребовать дополнительных инструментов сборки и их отдельной квалификации. Термин «портативный» не означает универсальной поддержки операционных систем или аппаратного обеспечения.

Работа на Windows 11 с Python 3.12 проверена локально. Описания для Linux, macOS и контейнеров, а также конфигурации CI предоставлены, однако на данном хосте разработки они не запускались. Точный объем работ см. в файле VERIFICATION.md.

Локальный компьютер#

Используйте Start.cmd в Windows или sh start.sh в Linux/macOS. Команды scripts\Setup.cmd или sh start.sh --setup-only обеспечивают подготовку среды. При первом запуске программа-запуска устанавливает необходимые зависимости; при последующих запусках используется уже подготовленная среда. Для настройки и сбора данных из Telegram требуется доступ к Интернету, однако просмотр существующих записей и создание экспортов возможны в автономном режиме.

После настройки запустите команду python start.py --check, чтобы проверить локальные зависимости, алгоритм Ed25519, хранилище, конфигурацию ключей и адрес прослушивания без запуска сборщика данных. Используйте команду --json для получения структурированного вывода. Передайте соответствующие команды --data-dir, --host и --port. Данная проверка не предусматривает установку пакетов, создание журнала или подключение к Telegram; она не является проверкой целостности или полноты охвата. При запуске отдельно проверяются существующие журналы. Команда python start.py --help также позволяет избежать установки.

Варианты:

После запуска start.py выполните вспомогательные команды с параметром .venv\Scripts\python.exe в Windows или .venv/bin/python в Linux/macOS, либо сначала активируйте эту среду. Приведенные ниже примеры с параметром python -m ... предполагают, что среда уже активна.

python -m tgwitness --data-dir /path/to/private/data --host 127.0.0.1 --port 8787

Переменные среды: TGWITNESS_DATA, TGWITNESS_HOST, TGWITNESS_PORT, TGWITNESS_TOKEN. TGWITNESS_VAULT_KEY_FILE выбирает режим внешнего ключа для новой установки; см. ниже. TGWITNESS_TOKEN, если указан, должен содержать не менее 24 символов; используйте криптографически случайное значение. При его отсутствии приложение генерирует 256-битный случайный токен в файле panel-token.txt. Переопределение переменных среды не приводит к перезаписи этого файла. Перезапустите систему для смены учетных данных.

Каталог данных может принадлежать ровно одному процессу. Кроссплатформенная блокировка файлов на уровне ОС предотвращает случайные одновременные записи. Используйте один рабочий процесс Uvicorn. Панель управления может управлять любым количеством рабочих пространств, при этом дополнительные каталоги рабочих пространств располагаются в папке profiles/<id>/. Для отдельных экземпляров службы используйте отдельные каталоги и порты. Файлы WAL базы данных SQLite должны храниться в локальном постоянном хранилище, а не в сетевой файловой системе. Не используйте один том совместно для нескольких реплик.

Портативный пакет для Windows#

Каждый релиз на GitHub содержит TgWitness-<version>-windows-amd64-portable.zip и его .sha256. Он включает официальную встраиваемую среду выполнения Python 3.12 с сайта python.org (контрольная сумма зафиксирована в tools/build_portable.py), TgWitness и его зафиксированные зависимости, а также три программы запуска:

Файл Цель
TgWitness.cmd Запустите панель; дополнительные параметры передаются напрямую, например, TgWitness.cmd --port 8790
TgWitness-Demo.cmd Запустите синтетическую демонстрацию по ссылке data\demo
TgWitness-Check.cmd Запустите проверку готовности, не запуская программу

Распакуйте весь архив в папку с правами на запись, например Documents\TgWitness; не запускайте программу из ZIP-архива или из папки «Program Files». Среда выполнения использует изолированный путь к модулям, поэтому другие установки Python и PYTHONPATH не влияют на её работу. Данные хранятся в папке «data» данного пакета. Для обновления остановите TgWitness, распакуйте новую версию в новую папку и скопируйте туда папку «data».

Скомпилируйте его самостоятельно на 64-разрядной версии Windows с использованием Python 3.12:

python tools/build_portable.py

Сборщик проверяет контрольную сумму на этапе выполнения, устанавливает ограниченные зависимости в пакет, запускает проверку готовности с помощью встроенного интерпретатора и записывает ZIP-архив и контрольную сумму в файл dist/.

Контейнер#

docker compose up -d --build --wait

При этом создаётся именованный постоянный том для каталога /data. Веб-порт сопоставляется с адресом 127.0.0.1:8787. Процесс запускается с UID 10001 с ограниченными правами, корневой файловой системой, доступной только для чтения, а также доступными для записи каталогами /data и /tmp. --wait проверяет работоспособность веб-сервера перед возвратом результата; он не осуществляет авторизацию в Telegram и не обеспечивает доставку сообщений. Предоставленные вспомогательные программы используют таймаут готовности в 180 секунд после сборки. Первоначальная загрузка зависимостей может занять больше времени.

Оба базовых файла Compose используют название проекта «tgwitness», поэтому при распаковке нового выпуска в другой каталог не происходит автоматического выбора нового тома данных. Сохраняйте активным только одно развертывание для данного проекта. Для независимых установок используйте уникальное имя « docker compose -p NAME ...» и другой порт хоста, а при обновлениях сохраняйте оба. Для более старого развертывания, использующего другое название проекта, продолжайте использовать его исходное название с -p; команда docker compose ls выводит список существующих проектов.

Скопируйте deploy/env.example в .env и измените TGWITNESS_PORT, чтобы использовать другой порт обратной связи. Например, TGWITNESS_PORT=8788 открывает доступ к панели управления по адресу http://127.0.0.1:8788; контейнер по-прежнему прослушивает порт 8787. .env игнорируется в Git.

Получите начальный токен:

docker compose exec tgwitness cat /data/panel-token.txt

Полезные команды:

docker compose ps
docker compose logs --tail 100 -f
docker compose stop
docker compose up -d --wait

restart: unless-stopped перезапускает сборщик данных после сбоя или перезапуска демона Docker. На сервере под управлением Linux включите запуск Docker при загрузке с помощью диспетчера служб вашего дистрибутива, обычно это sudo systemctl enable --now docker. В Windows/macOS включите настройку «Запуск при входе в систему» в Docker Desktop. Выход из системы, переход в режим сна или остановка демон Docker могут прервать сбор данных. Явно остановленный контейнер остаётся остановленным до тех пор, пока вы не запустите его заново.

В приведённой конфигурации размер тома /tmp ограничен 512 MiB. При экспорте вместо этого используется temporary-exports/ каждого рабочего пространства в постоянном каталоге /data. Зарезервируйте место там для одновременных экспортов, роста журнала/WAL, мультимедиа и резервных копий. Программа запуска использует файл deploy/constraints.txt для фиксации соответствующих версий зависимостей среды выполнения. Установка Docker и серверов с высоким уровнем надежности осуществляется на основе файлов deploy/requirements.lock и deploy/build.lock с использованием команды pip --require-hashes: каждый файл пакета должен соответствовать значению SHA-256, зафиксированному в коммите, поэтому файл, заменённый на PyPI или в зеркале, будет отклонен. Базовый образ Python и пакеты операционной системы по-прежнему требуют независимой квалификации выпуска.

Не используйте команду `docker compose down -v`, если только вы не намерены уничтожить журнал и ключи. Отчеты о работоспособности контейнера отражают доступность веб-сервера, а не успешность сбора данных из Telegram. Проверьте состояние коллектора на панели управления, наличие сигналов о работоспособности, ошибки и события, связанные с охватом.

Профиль независимого свидетеля#

Дополнительный сервис witness запускает независимый «свидетель» в собственном контейнере с собственным ключом и журналом в томе witness-data, а для сборщика предоставляется только токен «свидетеля» с правом только на чтение. Создайте токен на странице «Witness» панели управления, добавьте его вместе с токеном бота и каналом в .env, а затем запустите профиль:

docker compose --profile witness up -d          # deploy/compose/compose.image.yaml: same flag
docker compose logs witness                     # witness key fingerprint

Сервис подключается к сборщику внутри сети Compose по адресу http://tgwitness:8787 (TGWITNESS_WITNESS_COLLECTOR переопределяет его; например, /profiles/<workspace ID> для другого рабочего пространства). Для свидетеля на отдельном сервере, управляемом другим лицом, используйте deploy/compose/compose.witness.yaml , указав в TGWITNESS_WITNESS_COLLECTOR HTTPS-адрес сборщика; этот файл содержит только свидетель.

Установите опубликованный образ#

Данная информация становится доступной после успешного завершения рабочего процесса выпуска и публичной настройки пакета GHCR. Имя владельца репозитория не закреплено в данном дереве исходного кода. Используйте изображение, представленное в сводке рабочего процесса данного выпуска.

Скопируйте deploy/env.example в .env. Установите TGWITNESS_IMAGE в значение опубликованной версии, используя путь к репозиторию в нижнем регистре, например:

TGWITNESS_IMAGE=ghcr.io/your-owner/your-repository:0.7.0
TGWITNESS_PORT=8787

Запустите этот файл самостоятельно вместо compose.yaml:

docker compose --project-directory . -f deploy/compose/compose.image.yaml pull
docker compose --project-directory . -f deploy/compose/compose.image.yaml up -d --wait
docker compose --project-directory . -f deploy/compose/compose.image.yaml exec tgwitness cat /data/panel-token.txt

На хосте не требуется сборка исходного кода, Python или компилятор. Процесс выпуска предназначен для контейнеров Linux AMD64 и ARM64, включая виртуальную машину Linux в Docker Desktop. Используйте тег версии или ghcr.io/owner/repository@sha256:... из сводки рабочего процесса. Не настроено ни перемещение тега latest, ни автоматическое обновление приложения. Образ и варианты исходного кода используют один и тот же том данных, если их названия проектов совпадают.

Автоматическая активация HTTPS на сервере#

Используйте сервер с Docker, домен, находящийся под вашим контролем, и постоянное локальное хранилище. Настройте записи A/AAAA домена на сервер; публикуйте запись AAAA только в том случае, если к серверу осуществляется доступ по протоколу IPv6. Разрешите входящий трафик по портам TCP 80 и 443, а также исходящий трафик DNS/HTTPS для выдачи сертификатов. Эти порты не должны быть заняты другими службами.

Скопируйте deploy/env.example в .env и укажите имя хоста без схемы или пути:

TGWITNESS_DOMAIN=watch.your-domain.org

Запустите сборку исходного кода с использованием HTTPS-оверлея:

docker compose -f compose.yaml -f deploy/compose/compose.https.yaml up -d --build --wait
docker compose -f compose.yaml -f deploy/compose/compose.https.yaml exec tgwitness cat /data/panel-token.txt
docker compose --project-directory . -f deploy/compose/compose.image.yaml -f deploy/compose/compose.https.yaml up -d --wait

Для опубликованного изображения вместо этого используйте deploy/compose/compose.image.yaml в качестве первого файла. Сохраните оба аргумента -f для последующих команд status, logs, update и stop.

Caddy получает и обновляет сертификат, перенаправляет HTTP-соединения на HTTPS и пересылает запросы коллектору в частной сети Compose. Состояние сертификата хранится в отдельном постоянном томе. Порт хоста коллектора, к которому осуществляется прямое подключение, остается доступным только для локального цикла. В предоставленной конфигурации Caddy регистрация доступа не включена.

Откройте https://watch.your-domain.org и введите токен панели. Готовность к работе не подтверждает выдачу сертификата или доступность извне. Если HTTPS не готов, проверьте DNS, правила брандмауэра, а также:

docker compose -f compose.yaml -f deploy/compose/compose.https.yaml logs --tail 100 caddy

Предоставленный образ Caddy соответствует тегу 2-alpine. При выполнении команды «pull» этот образ обновляется; если вам требуются фиксированные версии инфраструктуры, закрепите проверенный дайджест в своей среде развертывания.

Обновления и резервное копирование#

Сохраните название проекта Compose и объём данных при обновлениях. Сначала остановите коллектор и создайте полную резервную копию. Для развёртывания по умолчанию на основе исходного кода:

docker compose stop
docker compose cp tgwitness:/data ../tgwitness-backup-before-update

Каждый раз используйте новое место для резервного копирования, находящееся за пределами репозитория, и защищайте его как материал, требующий доступа к учетной записи. Приведённый пример пути носит иллюстративный характер; используйте своё собственное место для резервного копирования. Скопируйте весь каталог, включая скрытые файлы, все рабочие пространства, ключи, журналы и мультимедийные файлы. Если настроен, отдельно создайте резервную копию главного ключа внешнего хранилища. ZIP-архив с доказательствами не является восстанавливаемой резервной копией приложения. В случае использования HTTPS также сохраните тома Caddy, если вам необходимо сохранить состояние его сертификата или учётной записи.

Для развёртывания исходного кода загрузите файлы новой версии и выполните следующую команду:

docker compose up -d --build --wait

Для развёртки образа замените TGWITNESS_IMAGE на нужную версию, а затем выполните:

docker compose --project-directory . -f deploy/compose/compose.image.yaml pull
docker compose --project-directory . -f deploy/compose/compose.image.yaml up -d --wait

Используйте файл(ы) Compose вашей установки также для приведённых выше команд stop/copy. Сохраните .env, пользовательскую конфигурацию и то же название проекта. down сохраняет именованные тома; down -v удаляет их. Не копируйте .venv между операционными системами или версиями Python. Для обновления исходного кода остановите TgWitness, создайте резервную копию всего каталога данных , замените исходные файлы и запустите python start.py --setup-only перед запуском.

Проверьте доступ к панели управления, идентификационные данные учётной записи, статус наблюдения и охват данных после обновления. Перезапуск не восстанавливает пропущенные обновления Telegram. Для отката может потребоваться резервная копия, созданная до обновления, если в будущей версии будут изменены форматы хранения данных.

Автоматические релизы на GitHub#

Рабочий процесс выпуска готов к использованию после того, как данный проект будет запущен в репозиторий GitHub с включенной функцией Actions. Он запускается при публикации выпуска на GitHub, включая предварительные версии. Сами по себе черновики и отправка тегов не приводят к публикации пакетов.

  1. Укажите версию пакета и журнал изменений, а затем опубликуйте релиз с тегом «v» в сочетании с точной версией «pyproject.toml», например «v0.7.0».
  2. Данный рабочий процесс проверяет тег и запускает общие проверки для Windows/Linux/macOS с использованием Python, проверки general/account-import/QR в браузере, проверки исходного пакета и проверки Docker. Также проводится тестирование новой установки с использованием Python 3.12 на всех трёх операционных системах.
  3. После успешного прохождения этих проверок выполняется тестирование образа ARM64 в среде QEMU, публикуются образы AMD64/ARM64 на ghcr.io/<lowercase-owner>/<lowercase-repository>:<version>, а также к релизу прилагаются исходный ZIP-файл, контрольная сумма и пакет Python wheel. Отдельная задача для Windows собирает и прилагает переносимый ZIP-файл и его контрольную сумму.
  4. После первой публикации откройте настройки пакета GHCR и установите видимость на «Публичная», если предполагается анонимная загрузка изображений. Наличие публичного репозитория исходного кода само по себе не гарантирует публичность пакета контейнера. Политики организации должны разрешать публикацию пакетов. В рабочем процессе используется GITHUB_TOKEN; в репозитории не должны содержаться пароли реестра или учетные данные VPS.

Успех удалённого рабочего процесса не подтверждён в ходе данной локальной подготовки. Эмуляция ARM64 представляет собой предварительную проверку, а не тестирование на нативном оборудовании или в реальных условиях работы Telegram. Это автоматизирует создание пакетов релизов; для запуска сервера по-прежнему требуется команда Compose и наличие необходимых домена/хоста. Существующие серверы не обновляются и не перезапускаются в фоновом режиме при публикации нового релиза.

Удалённый сервер#

Обеспечьте, чтобы сервис работал в режиме loopback и использовал SSH-туннель, либо завершайте соединение HTTPS на обратном прокси-сервере. Базовый файл Compose предназначен исключительно для локального использования; дополнительный оверлей deploy/compose/compose.https.yaml предоставляет Caddy для настроенного домена. Не допускайте появления токена bearer в URL-адресах и журналах прокси-сервера. Обратный прокси-сервер должен ограничивать размер запросов и частоту подключений. Не допускайте открытого доступа к простому HTTP из Интернета.

Примеры для systemd, задачи входа в Windows, пользовательского агента macOS и Caddy находятся в deploy/. Перед установкой проверьте и настройте пути. Это готовые шаблоны, а не подтверждение проверки на каждой из этих платформ. Обычный запуск приложения не регистрирует фоновые службы или задачи.

В Windows при запуске pythonw.exe без окон диагностические данные о запуске и работе сервера сохраняются в logs/server.log в каталоге данных (5 МБ на файл, две сменяющиеся резервные копии). При запуске в консольном режиме сохраняются консольные журналы. Регистрация доступа по HTTP отключена в обоих режимах. Защищайте журналы вместе с каталогом данных и проверяйте их перед передачей.

Перезапуск и пробелы#

Сохраняется последнее запрошенное состояние наблюдения. Если наблюдение было активным, при запуске происходит попытка повторного подключения и возобновления работы с выбранными источниками. Ручная пауза отменяет это намерение. Неудачная попытка перезапуска регистрируется и отображается на панели.

StringSession сохраняет авторизацию, но не сохраняет устойчивое состояние обновлений/сущностей Telethon. Диалоги перезагружаются при запуске. Telegram/Telethon могут восстанавливать некоторые сбои в передаче данных во время работы, однако TgWitness не гарантирует устойчивого воспроизведения данных после перезапуска процесса. При каждом запуске записывается предыдущая начальная точка журнала и граница автономного режима. Монитор проверяет подключение каждые 10 секунд и добавляет сигнал активности каждую минуту (Параметры → «Запись активности каждые»). Кратковременные перебои могут быть пропущены; наличие подключения не гарантирует полной доставки обновлений. Снимки представляют собой явные наблюдения текущей истории, а не восстановление пропусков.

Очередь медиафайлов хранится в базе данных SQLite каждого рабочего пространства. Сообщение и соответствующее задание фиксируются атомарно. Прерванные выполняющиеся задания восстанавливаются для повторной попытки при запуске. Каждая загрузка имеет базовый таймаут в 120 секунд плюс время, рассчитанное исходя из скорости 256 КиБ/с в зависимости от размера файла, а также ограничение в 1–2 000 МиБ на каждый тип вложения; настройки таймаута, скорости и повторных попыток находятся в разделе «Параметры». Коллектор пропускает файлы с неизвестным размером. При приостановке работы задания в очереди сохраняются. При повторной попытке используется исходный наблюдаемый дескриптор файла, а не последняя версия сообщения, отредактированная впоследствии. Временные сбои имеют ограниченное количество попыток; паузы FloodWait для мультимедиа сохраняются после перезапуска. Восстановление мультимедиа осуществляется отдельно от восстановления обновлений Telegram и не позволяет воссоздать исчезнувшие файлы.

Резервное копирование, восстановление и емкость#

Остановите процесс до того, как будет скопирован весь каталог данных, включая файлы vault.key, signing.enc, credentials.enc, базу данных SQLite и файлы WAL, мультимедиа, токен, контрольные точки, а также все профили и подкаталоги. Восстановите полную копию, пока целевой сервис остановлен. Отсутствие ключей хранилища или несоответствие ключей подписи приводят к сбою запуска; не генерируйте ключи заново, чтобы принудительно получить доступ.

Храните секретные резервные копии в зашифрованном виде с контролем доступа. ZIP-архивы с доказательствами представляют собой переносимые артефакты для анализа, а не резервные копии приложения или сеансов Telegram. Автоматического удаления данных по истечении срока хранения не предусмотрено. Запланируйте дисковое пространство для всех сообщений, исходных метаданных, мультимедиа, временных экспортов и резервных копий.

При запуске осуществляется проверка и экспорт записей потока вместо загрузки всего журнала целиком. Экспорт фиксирует моментальный снимок прочитанных данных, в то время как запись новых данных в WAL может продолжаться; при длительном экспорте страницы WAL могут сохраняться, поэтому объём дискового пространства по-прежнему имеет значение. Размер ZIP-архивов ограничен 4 ГиБ в несжатом виде в соответствии со значением по умолчанию независимого верификатора; Параметры → «Наибольший подписанный ZIP-архив» позволяет увеличить этот предел, и такие архивы проверяются с помощью verify.py --max-gib N. Для других форматов ограничения по количеству событий отсутствуют. Поддерживаемые браузеры передают фрагменты ответа в потоковом режиме в файл, выбранный пользователем. Другие браузеры буферизуют не более 128 MiB и направляют более объёмные передачи в авторизованный CLI:

python -m tgwitness.download --token-file data/live/panel-token.txt --out evidence.zip

Используйте --profile ID из меню «Экспорт» → «Идентификатор рабочей области» для другой рабочей области, --format zip|jsonl|csv|html, --url https://your-server для удалённого сервера или --max-mib, чтобы изменить ограничение на передачу данных в 5 ГиБ. Использование простого HTTP допускается только для петлевого соединения. Токены передаются в заголовках, перенаправления не допускаются, существующие файлы не перезаписываются, а незавершённые загрузки не публикуются как завершённые файлы. Если TGWITNESS_TOKEN переопределяет сгенерированный токен, используйте отдельно защищённый файл, содержащий это активное значение: файл panel-token.txt не перезаписывается при переопределении. SHA-256 команды является лишь контрольной суммой передачи; независимо проверьте подписанный ZIP-архив.

Файлы экспорта с сервера хранятся в частном каталоге temporary-exports/ каждого рабочего пространства. При успешном выполнении запроса файлы удаляются. Прерванные экспорты удаляются при следующем запуске рабочей области с сохранением эксклюзивной блокировки экземпляра. Данный каталог является частью модели угроз и емкости хранилища; используйте зашифрованный том данных. Передача данных объемом в несколько гигабайт в производственных условиях по-прежнему требует проверки на вашей целевой системе.

На панели отображаются медиафайлы в очереди или с ошибками, самые старые медиафайлы в ожидании, свободное место на диске, паузы в запросах Telegram, а также источники, доступ к которым не подтверждён. Данные диагностические показатели не являются полноценным средством сквозного мониторинга доставки. Рабочие пространства используют общий процесс; активность одного аккаунта может всё же повлиять на работу других. Сохраняются отдельные рабочие процессы, хранение/ротация данных, надежное восстановление обновлений и полная квалификация развертывания. Доступ к панели с ограниченным охватом задокументирован в разделе «Доступ и разрешения»; независимые контрольные точки описаны в руководстве для свидетелей.

Параметры подключения и защиты#

Маршруты подключения настраиваются для каждого рабочего пространства и должны быть сконфигурированы до авторизации. Для SOCKS5/HTTP CONNECT используется закреплённая зависимость python-socks. MTProxy использует экспериментальный рандомизированный промежуточный транспорт Telethon; поддельные секретные ключи TLS не поддерживаются. Прямой резервный маршрут зависит от выбранного режима IP: режим «Скрыть IP» его не допускает; режим явного резервирования разрешает его с задержкой. Режим «Туннель/VPN» допускает прямые маршруты, но не создаёт VPN. Это не является общесистемной сетевой политикой.

При новой установке переменная TGWITNESS_VAULT_KEY_FILE указывает на отдельно защищённый файл со случайным главным ключом. Смонтируйте его в режиме «только для чтения» вне каталога /data в контейнере. Сохраняйте открытые метаданные salt из файла vault.external.json отдельно для каждой рабочей области и для главного ключа. Существующие локальные хранилища требуют плановой миграции; установка этой переменной не осуществляет их автоматическое преобразование. Хранение и экспорт сообщений/мультимедиа не шифруются на уровне приложения. При необходимости используйте зашифрованные тома и достаточное объёмное частное временное хранилище.

Подробные инструкции: подключение/безопасность и режимы работы.