Wróć do narzędzi

N3X Remiza

Self-hosted panel dla OSP do ewidencji członków, sprzętu, pojazdów, terminów, działań i dokumentacji zdjęciowej.

SELF-HOSTED OSPv0.1.3

Porządek w jednostce. Dostęp z każdego urządzenia.

N3X Remiza przenosi codzienną ewidencję OSP do nowoczesnego panelu WWW. Każda osoba korzysta z indywidualnego konta, a członkowie, sprzęt, terminy i wyjazdy pozostają w prywatnej bazie PostgreSQL uruchomionej na serwerze jednostki.

Dane na serwerze jednostki · PostgreSQL bez publicznego portu · brak telemetrii aplikacji

Hosting zarządzany przez N3X

Chcesz korzystać, ale nie zajmować się serwerem?

N3X może przygotować i utrzymywać tę aplikację: od uruchomienia i SSL po aktualizacje, monitoring oraz kopie zapasowe.

Zapytaj o hosting N3X

Fundament cyfrowej remizy

Członkowie i gotowość

Kartoteki członków, status, rodzaj członkostwa oraz terminy badań bez przechowywania diagnoz i zbędnych danych wrażliwych.

Sprzęt i pojazdy

Wyposażenie, własność, lokalizacja, numery inwentarzowe, stan gotowości i terminy przeglądów w jednej ewidencji.

Działania i wyjazdy

Pożary, miejscowe zagrożenia, alarmy fałszywe, ćwiczenia, szkolenia i wyjazdy gospodarcze z czytelną historią.

Kalendarz i raporty

Wspólny kalendarz łączy wydarzenia z badaniami i przeglądami, a gotowe raporty PDF i CSV można pobrać z aktualnych danych.

Zdjęcia i dokumentacja

Prywatne zdjęcia oraz pliki PDF można przypisać do wyjazdu lub wydarzenia, opisać, pobrać i zweryfikować sumą SHA-256.

Komputer, tablet i telefon

Responsywny interfejs i manifest PWA pozwalają korzystać z panelu w remizie, pojeździe i poza stanowiskiem komputerowym.

Konta, role i audyt

Indywidualne konta, bezpieczne sesje HttpOnly, role przygotowane pod zespół i rejestr najważniejszych operacji.

DOCKER COMPOSE

Prywatny stos dla jednostki

Jedna konfiguracja uruchamia panel, worker i PostgreSQL. Hasło bazy oraz materiały pozostają w prywatnych wolumenach, a na zewnątrz wystawiany jest wyłącznie port aplikacji.

N3X Remiza Web — panel, konfigurator pierwszego uruchomienia i uwierzytelnianie
N3X Remiza Worker — terminy administracyjne i porządkowanie sesji
PostgreSQL 17 — prywatna ewidencja jednostki i historia audytu
Twoje reverse proxy — HTTPS, własna domena lub dostęp tylko z VPN/LAN

KONFIGURATOR DOCKER

Compose dopasowany do remizy

Ustaw domenę, adres nasłuchu, port i wersję obrazu. Konfigurator przygotuje gotowy plik Docker Compose oraz komendy startowe — bez pliku .env.

Domena musi wskazywać na reverse proxy jednostki. Nie wpisuj https:// ani ścieżki.

0.0.0.0 zapewnia dostęp z LAN i proxy. Użyj 127.0.0.1, gdy proxy działa na tym samym hoście i port ma pozostać lokalny.

Port panelu dostępny dla LAN lub reverse proxy. Domyślnie 8791.

Zostaw latest dla najnowszego wydania albo przypnij konkretną wersję.

Pierwsze konto powstaje w panelu WWW. Po starcie otwórz http://IP_SERWERA:8791 i od razu utwórz konto właściciela. Przed dostępem z Internetu ogranicz port zaporą i włącz HTTPS przez reverse proxy. Wykonuj spójne kopie wolumenów postgres_data, runtime_secrets oraz attachments_data.
Adres publiczny
https://remiza.example.com
Pierwsze uruchomienie
http://IP_SERWERA_DOCKER:8791
Cel reverse proxy
http://IP_SERWERA_DOCKER:8791
Test stanu
http://127.0.0.1:8791/api/health

Gotowy docker-compose.yml

name: n3xremiza

x-app-environment: &app-environment
  N3XREMIZA_DATABASE_PASSWORD_FILE: /run/n3xremiza/database_password
  N3XREMIZA_GEOCODING_BASE_URL: ${N3XREMIZA_GEOCODING_BASE_URL:-https://photon.komoot.io}
  N3XREMIZA_GEOCODING_BBOX: ${N3XREMIZA_GEOCODING_BBOX:-14.122,49.002,24.145,54.835}
  N3XREMIZA_TRUST_PROXY_HOPS: ${N3XREMIZA_TRUST_PROXY_HOPS:-0}
  N3XREMIZA_AUTH_AUDIT_RETENTION_DAYS: ${N3XREMIZA_AUTH_AUDIT_RETENTION_DAYS:-365}
  TZ: Europe/Warsaw

x-app-security: &app-security
  read_only: true
  security_opt:
    - no-new-privileges:true
  cap_drop:
    - ALL
  tmpfs:
    - /tmp:size=64m,mode=1777
    - /app/.next/cache:size=128m,mode=0700,uid=1001,gid=1001

services:
  bootstrap:
    image: alpine:3.22
    restart: "no"
    command:
      - /bin/sh
      - -ec
      - |
        umask 077
        if [ ! -s /run/n3xremiza/database_password ]; then
          od -An -N32 -tx1 /dev/urandom | tr -d ' \n' > /run/n3xremiza/database_password
        fi
        chmod 0444 /run/n3xremiza/database_password
    volumes:
      - runtime_secrets:/run/n3xremiza
    networks:
      - backend
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL

  web:
    image: ghcr.io/nexitpl/n3xremiza:latest
    pull_policy: always
    restart: unless-stopped
    depends_on:
      bootstrap:
        condition: service_completed_successfully
      postgres:
        condition: service_healthy
    environment: *app-environment
    volumes:
      - runtime_secrets:/run/n3xremiza:ro
      - attachments_data:/app/data/attachments
    ports:
      # Keep this port behind a host firewall until the owner account exists.
      # For Internet access, place the app behind an HTTPS reverse proxy.
      - "0.0.0.0:8791:3000"
    healthcheck:
      test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:3000/api/health"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    networks:
      - frontend
      - backend
    <<: *app-security

  worker:
    image: ghcr.io/nexitpl/n3xremiza:latest
    pull_policy: always
    restart: unless-stopped
    depends_on:
      bootstrap:
        condition: service_completed_successfully
      postgres:
        condition: service_healthy
      web:
        condition: service_healthy
    environment: *app-environment
    volumes:
      - runtime_secrets:/run/n3xremiza:ro
    command: ["node", "dist/worker.mjs"]
    networks:
      - backend
    <<: *app-security

  postgres:
    image: postgres:17-alpine
    restart: unless-stopped
    depends_on:
      bootstrap:
        condition: service_completed_successfully
    environment:
      POSTGRES_DB: n3xremiza
      POSTGRES_USER: n3xremiza
      POSTGRES_PASSWORD_FILE: /run/n3xremiza/database_password
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - runtime_secrets:/run/n3xremiza:ro
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U n3xremiza -d n3xremiza"]
      interval: 5s
      timeout: 5s
      retries: 12
    networks:
      - backend

networks:
  frontend:
  backend:
    internal: true

volumes:
  postgres_data:
  runtime_secrets:
  attachments_data:

Uruchomienie i kontrola stanu

mkdir -p n3xremiza
cd n3xremiza
# Zapisz skopiowaną konfigurację jako docker-compose.yml
docker compose up -d
docker compose ps
curl -fsS http://127.0.0.1:8791/api/health

Historia zmian

    • NowośćZdjęcia i dokumenty PDF przypisane do wyjazdów oraz wydarzeń, z kontrolą dostępu, limitami plików i sumą SHA-256.
    • NowośćInteraktywna mapa wyjazdów z podpowiadaniem adresów, lokalizacją urządzenia oraz ręcznym wskazywaniem miejsca zdarzenia.
    • NowośćLokalizacja własnej jednostki i warstwa remiz strażackich na mapie wraz z legendą rodzajów zdarzeń.
    • NowośćŚwięta i daty istotne dla OSP w kalendarzu oraz możliwość archiwizacji błędnie dodanych działań.
    • UlepszenieDopracowany układ mobilny, stałe menu boczne na komputerze oraz ujednolicony opis bieżącego wydania na stronie produktu.
    • UlepszenieDedykowana ikona aplikacji oraz strażacki wariant interfejsu N3X z czytelnym oznaczeniem aktywnej sekcji na komputerze i telefonie.
    • NowośćIndywidualne konta użytkowników, role i osobne uprawnienia do modułów.
    • NowośćPanel administracyjny użytkowników, reset haseł, blokowanie kont i zarządzanie aktywnymi sesjami.
    • NowośćDziennik aktywności obejmujący logowania, zmiany danych, usuwanie i eksporty raportów.
    • NowośćKalendarz miesięczny z wydarzeniami jednorazowymi i cyklicznymi oraz przypomnieniami o terminach.
    • NowośćRaporty PDF i eksporty CSV dla członków, majątku i działań.
    • UlepszeniePełny polski i angielski interfejs oraz nawigacja dopasowana do telefonu.
    • WydaniePierwsze wydanie self-hosted uruchamiane przez Docker Compose: panel WWW, worker i PostgreSQL.
    • NowośćPodstawowa ewidencja jednostki, członków, sprzętu, pojazdów, terminów oraz działań.
Nie jest systemem alarmowania. Powiadomienia dotyczą terminów administracyjnych. N3X Remiza nie zastępuje PSP, SWD, alarmowania SMS ani innych kanałów dysponowania jednostki.