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

On-prem парковочная система в закрытом контуре

Чек-лист для объекта, где система должна устанавливаться, обновляться и восстанавливаться без скрытой зависимости от внешнего облака.

Инженерный материал5 минутПроверено 01.09.2026

Коротко

Фраза «работает локально» может означать очень разные вещи. Приложение установлено на сервере, но при старте скачивает контейнеры из внешнего registry. Лицензия проверяется в облаке. CAPTCHA или почта обязательны. Backup существует только как команда в инструкции и никогда не восстанавливался.

Настоящий on-prem-контур нужно проверять по зависимостям, сетевым поверхностям и процедурам отказа.

Уровни автономности

Локальное хранение, облачная зависимость

Данные находятся на объекте, но runtime требует внешнюю авторизацию, обновления или сервис. Это on-prem по размещению, но не автономный контур.

Закрытая сеть с контролируемым выходом

Основные функции работают внутри, а обновления/почта/внешний мониторинг проходят через согласованные шлюзы.

Air-gap

Рабочий контур физически или логически изолирован. Дистрибутив, зависимости, ключи и обновления переносятся контролируемым способом; runtime не должен пытаться обращаться к внешним сервисам.

До закупки выберите нужный уровень. Требовать air-gap для обычного коммерческого объекта может быть избыточно; считать простой локальный Docker air-gap — опасно.

Из каких компонентов состоит локальная парковка

Типовой CShark-контур включает:

  • Web UI;
  • Core API;
  • Device Gateway;
  • PostgreSQL;
  • NATS JetStream;
  • S3-совместимое хранилище;
  • reverse proxy/edge surfaces;
  • опциональные Prometheus/Grafana/Tempo;
  • драйверы/эмуляторы.

Матрица сетевых поверхностей

Не публикуйте БД и NATS на пользовательскую сеть. Разделите:

Поверхность Потребитель Пример Политика
пользовательская браузер оператора Web/API TLS, auth, firewall
device камеры/табло HTTP/MQTT/TCP ACL, vendor constraints
integration АПС/СКУД REST/webhook TLS, API key, allowlist
management администратор SSH/metrics отдельный сегмент
private Core/DB/NATS/S3 внутренние сети не публиковать наружу

CShark offline profile описывает network zones и генерирует edge-конфигурацию. Физические VLAN/ACL остаются задачей инфраструктуры объекта.

Поставка без внешнего registry

Проверяемый offline kit должен содержать:

  • точные application images;
  • системные зависимости/локальный repository, если установка на чистую ОС;
  • compose/config templates;
  • manifest файлов и image digests;
  • checksum;
  • подпись;
  • публичный ключ, переданный независимым каналом;
  • source commit/version;
  • installation/preflight scripts;
  • demo/clean variant identity.

Demo и clean

Demo нужен для воспроизводимого показа: синтетический объект, места и эмуляторы.

Clean — для клиента: тот же runtime и контракты, но без демонстрационных сущностей.

Различие должно быть машинно проверяемым. В документации CShark demo seed создаёт вымышленный объект на 50 мест, а clean — ноль.

Нельзя устанавливать demo в production и затем «чистить вручную»: это оставляет неизвестные артефакты.

Секреты и production defaults

Критические параметры:

  • auth signing secret;
  • admin password;
  • DB runtime/migrator credentials;
  • S3 access/secret;
  • webhook token;
  • integration keys;
  • SMTP/ONVIF/MQTT credentials;
  • TLS private keys.

CShark validate_runtime_security останавливает защищённый контур при dev secrets, слабом admin password или небезопасной публичной конфигурации. Offline installer генерирует отдельные случайные DB-секреты и root-only env.

Но проверка приложения не заменяет secret management объекта. Нужно определить rotation, backup ключей, emergency access и аудит.

TLS и trusted proxy

Локальная сеть не автоматически доверенная. Web/API и integration surface нуждаются в TLS или обоснованной изоляции. Reverse proxy должен корректно передавать IP только по доверенной цепочке.

В CShark resolve_client_ip принимает X-Forwarded-For только от сетей trusted_proxy_ips. Стендовая инструкция прямо предупреждает: текущий HTTP без TLS использовать только в закрытом сегменте.

Раздельные роли базы и миграции

Приложение не должно иметь постоянное DDL-право. Безопаснее:

  1. preflight проверяет target schema;
  2. backup фиксируется и проверяется;
  3. одноразовый migrator накатывает Alembic;
  4. runtime работает ограниченной ролью;
  5. schema gate не запускает несовместимый код.

CShark следует этой модели в offline/deploy инструментах.

Backup — это восстановление, а не файл

Для парковки нужно разделить:

  • PostgreSQL business/config/audit;
  • S3 media;
  • конфигурацию и секреты;
  • release identity;
  • при необходимости NATS/outbox state.

Проверяемый процесс:

  1. создаёт PostgreSQL custom dump;
  2. считает checksum;
  3. восстанавливает во временную БД;
  4. сверяет контрольные счётчики;
  5. копирует media в новый пустой bucket;
  6. сравнивает manifest/fingerprint;
  7. фиксирует отчёт и время.

Обновление и возврат

Откат к старому контейнеру после новой миграции может не работать. Поэтому миграции должны быть expand-contract, а процедура — учитывать совместимость старого кода с новой схемой.

Минимальный upgrade workflow:

  • проверить подписанный target kit;
  • preflight platform/space/ports;
  • сделать и проверить backup;
  • применить миграцию;
  • запустить exact images;
  • выполнить smoke;
  • при ошибке использовать предусмотренный recovery, а не импровизированный docker compose down;
  • сохранить operation manifest.

Наблюдаемость без phone-home

Закрытый контур всё равно нуждается в:

  • health endpoints;
  • container health;
  • метриках очередей и consumer lag;
  • журнале ошибок;
  • трассировках;
  • алертах;
  • контроле диска outbox/S3/PostgreSQL.

В CShark доступны OpenTelemetry, Prometheus, Grafana и Tempo. Offline профиль отключает внешнюю продуктовую телеметрию. Наличие дашборда не заменяет локальный процесс реагирования.

Чек-лист приёмки

  • installation with network denied;
  • no image pull/runtime phone-home;
  • listeners соответствуют матрице;
  • dev secrets отсутствуют;
  • auth enforce включён;
  • DB runtime не имеет DDL;
  • backup восстановлен в отдельную БД;
  • media manifest совпал;
  • reboot host и restart services;
  • NATS outage и Gateway outbox recovery;
  • disk pressure alert;
  • upgrade и rollback/recovery rehearsal;
  • exact version/commit видимы;
  • demo/clean identity проверена.

FAQ

Нужен ли интернет для работы CShark?

Offline профиль предназначен для работы без внешнего registry/runtime-зависимости. Конкретная конфигурация публичной PWA, CAPTCHA, email и интеграций может требовать внешних сервисов — их нужно отключить или локализовать.

Нужен ли TLS внутри локальной сети?

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

Как обновлять air-gap систему?

Переносить подписанный полный kit, проверять checksum/signature, делать проверяемый backup, применять controlled migration и smoke с operation доказательные материалы.

Поддерживается ли ARM64?

Текущая основная поставка и инструкция — Ubuntu 24.04 AMD64. ARM64 нельзя обещать без отдельного принятого профиля/артефакта.

Какие RPO/RTO у CShark?

Поставка содержит эксплуатационные инструменты, но численные RPO/RTO определяются инфраструктурой, расписанием резервного копирования и восстановительным учением конкретного объекта. Подставьте RPO/RTO после теста.

Граница применимости к CShark

Материал описывает проверяемый инженерный подход. Конкретный состав CShark зависит от версии, подключённых источников данных, прав, конфигурации и приёмки оборудования на объекте.

Посмотрите, какие возможности CShark доступны водителю и оператору и как они применяются на парковке, на странице возможностей системы.

Возможности CShark

Выберите возможности для вашего объекта

Посмотрите, как CShark помогает водителю, оператору и управляющей компании на парковке.

Посмотреть возможности