Timestamp GIT Secure your prior art without exposing code

← All posts

2026-08-26

Самодельное Git-датирование с Docker: руководство

Самодельное Git-датирование с Docker: руководство
timestamp git blockchain proof

Самостоятельный хостинг отметок времени для Git с помощью Docker: руководство

Повторяющаяся ручная задача, которую вы устраняете, такова: каждый раз, когда вам нужно криптографически надёжное доказательство того, что коммит Git существовал на определённую дату, вы либо вручную выполняете команды отметки времени, либо передаёте метаданные сервису, который не полностью контролируете. Для стартапов, dev-студий и команд, ориентированных на соответствие требованиям, это создаёт пробел. Ручные шаги пропускаются. Внешние зависимости порождают вопросы суверенитета данных. Регулируемые или изолированные от сети среды часто вообще не могут использовать управляемый SaaS.

Сложный путь — самостоятельно запускать OpenTimestamps и следить за каждой квитанцией. Практичный путь — развернуть Timestamp GIT как самостоятельно размещаемое Docker-приложение: та же автоматизация на основе GitHub App, ежедневная привязка к Bitcoin и значки верификации работают на инфраструктуре, которой владеете вы.

Если перед продолжением вам нужно освежить понимание того, почему доказательство существования важно в программном обеспечении, см. Proof of Existence in Software: A Beginner’s Guide.

Зачем самостоятельно размещать отметки времени для Git?

Самостоятельный хостинг Timestamp GIT — это не про отказ от управляемого сервиса. Это про запуск той же самой автоматизации за вашим собственным файрволом, с вашим собственным томом данных, вашей собственной лицензией и вашими собственными сетевыми правилами. Это важно, когда:

  • Вам нужен суверенитет данных, и вы не хотите, чтобы метаданные коммитов покидали вашу среду дальше шага привязки к Bitcoin.
  • Вы работаете в регулируемой или изолированной от сети среде, где подключения к сторонним SaaS ограничены.
  • Вам нужен полный контроль над учётными данными GitHub App, местом хранения и доступом к логам.
  • Вам нужно удобное для аудита развёртывание, которое остаётся под операционным контролем вашей команды.

Вариант самостоятельного хостинга через Docker даёт вам тот же автоматизированный конвейер: один раз установите GitHub App, подключите репозитории, и инстанс будет каждую ночь группировать хеши коммитов, строить доказательства Merkle и привязывать их к Bitcoin. После однократной настройки ручной шаг отметки времени не требуется.

Однократная настройка: развёртывание Timestamp GIT с помощью Docker

Развёртывание представляет собой единый стек Docker Compose с двумя сервисами: приложением Timestamp GIT и инстансом Valkey, используемым как очередь хешей.

Создайте файл docker-compose.yml с точной конфигурацией из документации продукта:

services:
  timestampgit:
    image: rue1401/timestampgit:prod
    ports:
      - "8080:8080"
    volumes:
      - ./data:/app/data
      - ./license.lic:/app/license.lic:ro
    restart: unless-stopped
  valkey:
    image: valkey/valkey:8
    restart: unless-stopped

Затем выполните:

docker compose pull
docker compose up -d
docker compose logs -f timestampgit

После запуска приложение становится доступно по адресу http://localhost:8080. При первом запуске мастер настройки проведёт вас через подключение вашего GitHub App и конфигурирование инстанса. Именно здесь вы завершаете однократную интеграцию. Вам не нужно ничего устанавливать на машины разработчиков, и в дальнейшем не нужно повторять ручные шаги отметки времени.

Вам нужен файл лицензии, смонтированный по пути ./license.lic. Демонстрационную лицензию с ограниченным сроком действия можно получить, заполнив форму запроса на странице Docker License, указав имя, компанию, email и, при желании, номер телефона. Для промышленного использования применяйте коммерческую лицензию.

После завершения работы мастера текущий процесс отметки времени полностью автоматизирован.

Автоматизированный конвейер: от коммита до привязки к Bitcoin

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

Обнаружение коммитов

Существует два режима обнаружения:

  • Стандартный режим (GitHub App): GitHub App обнаруживает новые коммиты через вебхуки. Он считывает только хеш HEAD-коммита каждого отслеживаемого репозитория и отправляет этот хеш в ваш самостоятельно размещаемый инстанс.
  • Режим Enterprise ZK: GitHub Action из 12 строк выполняется в вашей инфраструктуре и передаёт в API Timestamp GIT только хеш коммита. В этом режиме исходный код никогда не покидает вашу среду, а инстансу Timestamp GIT не требуется доступ на чтение к исходному репозиторию.

Очередь хешей и ночная пакетная обработка

Входящие хеши коммитов хранятся в очереди на базе Valkey. Каждую ночь cron-воркер внутри контейнера Timestamp GIT:

  1. Группирует все ожидающие хеши для каждого репозитория.
  2. Создаёт ежедневный файл-манифест (.txt) для каждого репозитория.
  3. Нативно строит дерево Merkle.
  4. Создаёт доказательства OpenTimestamps с использованием публичных OTS-календарей.
  5. Привязывает корень Merkle к блокчейну Bitcoin.

Доставка доказательств

Манифест и файлы квитанций .ots отправляются обратно в выделенную ветку timestamps или теневой репозиторий — в зависимости от того, как вы настроили GitHub App. Это происходит автоматически после подтверждения привязки к Bitcoin.

Подтверждение Bitcoin обычно занимает несколько часов, поэтому доказательства не появляются мгновенно после полуночи. Если вы делаете коммит в 15:00, этот хеш будет подобран следующим ночным запуском и, как правило, привязан и доставлен несколькими часами позже.

Мониторинг и обработка сбоев

Вы можете отслеживать статус привязки напрямую через API-эндпоинты, предоставляемые вашим самостоятельно размещаемым инстансом.

Эндпоинты статуса

Для любого публичного репозитория можно выполнить запрос:

curl https://timestampgit.example.com/api/statusLast/acme/checkout-service

Это возвращает JSON с информацией о последнем привязанном блоке Bitcoin.

curl https://timestampgit.example.com/api/statusCount/acme/checkout-service

Это возвращает общее количество зафиксированных и отмеченных коммитов.

curl https://timestampgit.example.com/api/statusSummary/acme/checkout-service

Это возвращает сводную информацию, подходящую для значков Shields.io.

Для приватных репозиториев к URL добавляется зашифрованный HMAC, поэтому только авторизованные пользователи могут просматривать их статус. HMAC привязан к вашему конкретному инстансу самостоятельно размещаемого сервера.

Публичная панель

У каждого репозитория также есть публичная панель статуса по адресу:

https://timestampgit.example.com/status/{user}/{repo}

На этой странице отображаются долговечность доказательств, дата самой ранней привязки, ежедневная регулярность, данные о блоках и транзакциях Bitcoin, календарная тепловая карта, скачиваемый CSV для аудита и PDF-сертификат.

Сценарии сбоев

  • Если cron-воркер завершается с ошибкой, проверьте логи контейнера:
docker compose logs -f timestampgit
  • Если сеть Bitcoin задерживает подтверждение, эндпоинты статуса ещё не покажут новую привязку. Обычно это временное явление.
  • Самостоятельно размещаемый инстанс хранит свои данные в томе ./data. Перезапуск или пересоздание контейнеров не приводит к потере поставленных в очередь хешей или конфигурации.
  • Настройте оповещения на основе API статуса или вывода логов. Ежедневной проверки /api/statusLast достаточно для большинства команд. Если дата последней привязки перестаёт обновляться, проверьте контейнер и исходящий сетевой доступ.

Лучшие практики самостоятельного хостинга отметок времени для Git

  • Ограничьте сетевой доступ к Docker-хосту. Используйте правила файрвола и обратные прокси. Открывайте только те порты, которые должны быть доступны для вебхуков GitHub или вашей внутренней сети.
  • Создавайте резервные копии тома ./data и файла license.lic. Том содержит поставленные в очередь хеши и конфигурацию инстанса. Файл лицензии должен оставаться читаемым для контейнера.
  • Используйте выделенный GitHub App с минимальными разрешениями. В стандартном режиме приложению нужен доступ только на чтение к исходным репозиториям и доступ на чтение и запись к целевому репозиторию, где хранятся доказательства. Режим Enterprise ZK требует доступ на чтение и запись только к целевому репозиторию.
  • Предпочитайте теневой репозиторий для доказательств. Это сохраняет ваш основной репозиторий чистым и отделяет историю исходного кода от квитанций отметок времени.
  • Регулярно проверяйте отметки времени. Используйте публичную страницу верификации или API, чтобы убедиться, что квитанции .ots по-прежнему верифицируются по данным блоков Bitcoin. Это особенно важно перед юридическим или комплаенс-событием.
  • Обновляйте образы контейнеров осознанно. Используйте docker compose pull в окно обслуживания и проверяйте новую версию на staging-инстансе перед развёртыванием в production.

FAQ

В: Могу ли я запустить Timestamp GIT в полностью изолированной от сети среде?

О: Да, самостоятельно размещаемая Docker-версия разработана для максимальной безопасности и может работать в изолированных от сети средах. Однако ей по-прежнему нужно привязываться к блокчейну Bitcoin, поэтому инстанс должен иметь исходящий доступ в интернет для связи с узлами Bitcoin или календарями OpenTimestamps. Если требуется полная изоляция от сети, для шага привязки может понадобиться прокси или ретранслятор.

В: Как получить лицензию для самостоятельно размещаемой Docker-версии?

О: Вы можете запросить демонстрационную лицензию с ограниченным сроком действия, заполнив форму на странице Docker License, указав имя, компанию, email и, при желании, номер телефона. Для оценки будет предоставлен файл лицензии. Для промышленного использования обратитесь к поставщику за коммерческой лицензией.

В: Требуется ли для самостоятельно размещаемой версии GitHub App?

О: Да, самостоятельно размещаемый инстанс Timestamp GIT по-прежнему использует GitHub App для обнаружения коммитов и отправки доказательств обратно в ваши репозитории. Во время мастера настройки вы подключите учётные данные вашего GitHub App. Приложению требуется доступ только на чтение к исходным репозиториям и доступ на чтение и запись к целевому репозиторию, где хранятся доказательства.

В: Каковы требования к ресурсам для запуска Timestamp GIT с помощью Docker?

О: В информации о продукте не указаны точные требования к ресурсам, но Docker Compose включает два сервиса: приложение Timestamp GIT и инстанс Valkey (совместимый с Redis) для очереди хешей. Для небольших и средних команд достаточно скромного VPS с 1–2 ГБ ОЗУ. Отслеживайте использование ресурсов и масштабируйтесь по мере необходимости.

Заключение

Самостоятельный хостинг отметок времени для Git с помощью Docker устраняет ручную рутину из защиты приоритета. Вы развёртываете стек один раз, подключаете GitHub App, и каждый коммит в отслеживаемый репозиторий проходит через автоматизированный конвейер: обнаружение хеша, ночная пакетная обработка, создание доказательства Merkle, привязка к Bitcoin и доставка доказательства обратно в ваш репозиторий.

В этом разница между правовой защитой, которой вы действительно пользуетесь, и той, что превращается в обузу. Если вы готовы к развёртыванию, начните со стека Docker Compose выше и запросите демонстрационную лицензию на странице Docker License. Для команд, которые предпочитают не эксплуатировать собственный инстанс, управляемый сервис Timestamp GIT предлагает ту же автоматизацию без самостоятельного хостинга.

Похожие публикации

EU label: AI-generated content