NA ŻYWO · ŁAŃCUCH AUDYTU · UE
SYSTEM · 99,99% DOSTĘPNOŚĆ
v 1.0 ↗ WYPRODUKOWANO W UE

Self-hosting NexBasira

Ten sam stack Docker, który obsługuje nasz zarządzany SaaS, dostarczamy w wersji on-prem. Ten sam backend Django, ta sama React SPA, ten sam łańcuch audytu. Dostępne w warstwie Enterprise wraz z DPA i pakietem kwestionariusza InfoSec.

Podsumowanie strony. Ta strona odzwierciedla ogólny kształt wdrożenia on-prem. Autorytatywny, gotowy do skopiowania runbook znajduje się docs/SELF_HOST.md w repozytorium źródłowym — dostarczamy go klientom Enterprise wraz z pakietem instalacyjnym. Skontaktuj się przez Kontakt (Enterprise), aby rozpocząć rozmowę.

Dlaczego self-hosting

  • Wymóg regulacyjny — sektor lub jurysdykcja wymaga, aby materiał dowodowy znajdował się we własnej infrastrukturze.
  • Izolacja sieciowa — inspektorzy działają wewnątrz VPN; ruch wychodzący do SaaS nie wchodzi w grę.
  • Niestandardowa rezydencja danych — dane muszą trafić do określonego regionu lub chmury suwerennej.
  • Przewidywalność kosztów przy skali — przy >5 tys. inspekcji/miesiąc dedykowana infrastruktura jest często tańsza niż warstwa rozliczana za inspekcję.

Architektura

Sześć usług (plus istniejący dostawca tożsamości dla SSO):

UsługaCo robiObraz
caddyTerminacja TLS, routing HTTP, serwowanie zasobów statycznychcaddy:2
backendAplikacja Django — REST API, łańcuch audytu, SCIM, podpisywanieghcr.io/codelounge-io/certivisiopro/api (your tag)
frontendNginx serwujący zbudowaną SPA + statyczne zasoby marketingoweghcr.io/codelounge-io/certivisiopro/web
postgresGłówna baza danych, izolacja tenantów wymuszana przez RLSpostgres:16
redisBroker Celery + cache + magazyn sesjiredis:7
celery-worker + celery-beatZadania w tle (odpytywanie TSA, przetwarzanie nagrań, przeglądanie retencji)jak backend
livekitWebRTC SFU dla warstwy wideo na żywolivekit/livekit-server
minio (optional)Magazyn obiektowy zgodny z S3 dla materiału dowodowego + nagrańminio/minio

W zakresie magazynu obiektowego można również wskazać dowolną usługę zgodną z S3 (AWS S3, Wasabi, OVH Object Storage, istniejący klaster on-prem Ceph). MinIO jest dołączony jako domyślny wybór dla prawdziwie odizolowanych (air-gap) instalacji.

Minimalne wymagania

ZagadnienieMinimumKomfortowo
OSLinux x86_64 (Ubuntu 22.04 LTS or Debian 12)tak samo
Docker / ComposeDocker 24 + Compose v2tak samo
CPU4 vCPU8 vCPU
RAM8 GB16 GB
Disk200 GB SSD (DB + początkowy materiał dowodowy)500 GB + magazyn obiektowy zgodny z S3 dla nagrań
NetworkStatyczny adres IP, dostępne porty 443 + WebRTC (LiveKit)tak samo
TLSCaddy automatycznie provisionuje przez Let's EncryptWłasny certyfikat (BYO) dla sieci zamkniętych

Bootstrap

Z grubsza kształt tego, co automatyzuje skrypt instalacyjny:

# 1. Clone the released bundle
git clone --depth 1 https://github.com/codelounge-io/nexbasira-onprem.git
cd nexbasira-onprem

# 2. Fill in env from the example
cp .env.example .env
$EDITOR .env   # set DOMAIN, SECRET_KEY, DB password, S3 creds, LiveKit keys

# 3. Pull pinned images
docker compose pull

# 4. Run migrations + create the platform superuser
docker compose run --rm backend python manage.py migrate
docker compose run --rm backend python manage.py createsuperuser

# 5. Start everything
docker compose up -d

# 6. Tail the logs until you see the audit-chain self-test pass
docker compose logs -f backend | grep "audit chain self-test"

Na czystym VPS Ubuntu 22.04 cała sekwencja wykonuje się w około 5 minut.

Co otrzymujesz od razu (out of the box)

  • Zarówno app.<your-domain> (SPA) jak i <your-domain> (strona marketingowa, opcjonalnie) na jednym Caddy.
  • Automatyczny TLS przez Let's Encrypt — lub przypięcie do prywatnego CA w sieciach zamkniętych.
  • Migracje RLS Postgres + zaseedowane cztery role systemowe.
  • Trigger łańcucha audytu w Postgres (append-only).
  • Seeder sesji demonstracyjnej, aby administratorzy mogli za pierwszym razem eksplorować realistyczne dane.

Operacje Day-2

  • Kopie zapasowe — nocny logiczny zrzut Postgres + cykl życia S3 dla obiektów. Runbook docs/SELF_HOST.md zawiera testy dymne przywracania z kopii zapasowej, w tym audit-chain verify.
  • Aktualizacje — pobierz nowy tag obrazu, docker compose up -d. Migracje schematu są wyłącznie w przód i testowane w CI; rollback jest udokumentowany na wypadek ostateczności.
  • Obserwowalność — Django emituje ustrukturyzowane logi JSON z etykietami tenant_id + session_id; kieruj je do istniejącego agregatora logów.
  • Metryki — endpoint eksportera Prometheus na backendzie; scrapuj ze swojego stacku monitoringu.

Czym różni się od zarządzanego SaaS

ZagadnienieZarządzany SaaSSelf-hosting
Backendy TSAYodaLedger + FreeTSA + OpenTimestamps skonfigurowane domyślnieKonfigurowalne. Można wyłączyć dowolny; można podpiąć płatny QTSP (DataSure) bezpośrednio.
Magazyn nagrańS3 w UE z cyklem życia do GlacierTwój bucket zgodny z S3; cykl życia po Twojej stronie.
Dostarczanie e-mailiSendgrid w naszej infrastrukturzeSkonfiguruj zmienne środowiskowe SMTP dla własnego przekaźnika.
Dostarczanie SMSTwilio w naszej infrastrukturze (opt-in)Twilio z własnym kontem lub backend null, jeśli nieużywane.
Rozliczenia StripeWbudowaneDomyślnie wyłączone — self-hosting oznacza własną umowę rozliczeniową.
AktualizacjeMy wdrażamyPobierasz tagi obrazów we własnym rytmie.

Wsparcie

Klienci self-hostingu w wersji Enterprise otrzymują dedykowany kanał Slack + Connect, SLA na poziomie 1 godziny, zaplanowane przewodniki po aktualizacjach oraz bezpośredni dostęp do naszego dyżuru on-call w przypadku incydentów produkcyjnych.

Co dalej