Wróć do narzędzi

N3XMarket

Self-hosted centrum analizy rynku USA, dokumentów SEC, alertów i badań wspomaganych przez AI.

SELF-HOSTED MARKET INTELLIGENCEv0.5.2

Rynek USA pod kontrolą. Na Twoim serwerze.

N3XMarket łączy notowania, zespołowe watchlisty, dokumenty SEC, alerty i analizę AI w modułowym panelu z osobnymi stronami oraz pulpitem dopasowanym do użytkownika. Każda osoba ma własne konto i rolę, a portfel oraz sekrety pozostają na Twoim serwerze.

Szyfrowane klucze konfigurowane przez WWW · PostgreSQL bez publicznego portu · brak telemetrii

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

Centrum badawcze, nie kolejny kolorowy wykres

Research Copilot AI

Symetryczna analiza scenariusza wzrostowego i spadkowego, katalizatorów, ryzyk oraz braków w danych — bez udawania gwarantowanej rekomendacji.

Technical Lab

SMA, EMA, RSI, MACD, Bollinger, ATR, ADX/DMI, Stochastic, OBV, relative volume, poziomy i stopy zwrotu liczone lokalnie z OHLCV.

SEC Intelligence

Najnowsze 8-K, 10-Q, 10-K, Form 4 i inne zgłoszenia bezpośrednio z oficjalnego EDGAR.

Screener i warsztat tradera

Wieloczynnikowy screener watchlisty, portfel z P/L i ryzykiem do stopów, dziennik z R:R oraz kalendarz wyników i własnych zdarzeń.

Alerty 24/7

Osobny worker kontroluje warunki cenowe i dostarcza powiadomienia przez 10 integracji, m.in. Telegram, Discord, Slack, Teams, ntfy i Gotify.

Zespół i bezpieczny self-hosting

Osobne konta właściciela, administratorów, analityków i osób tylko do odczytu, scrypt, sesje serwerowe, AES-256-GCM i kontenery non-root.

DOCKER COMPOSE

Gotowy stos pod własne proxy

Aplikacja nie narzuca certyfikatów ani dostawcy DNS. Po uruchomieniu panel działa od razu na porcie 8790 hosta i jest gotowy dla dowolnego reverse proxy.

1N3XMarket Web — panel, pierwszy setup, autoryzacja i szyfrowana konfiguracja
2N3XMarket Worker — alerty działające 24/7
3PostgreSQL 17 — prywatne dane i historia analiz
4Twoje reverse proxy — HTTPS i własna domena

KONFIGURATOR DOCKER

Compose dopasowany do Twojego serwera

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

Domena musi już wskazywać na Twój reverse proxy. Nie wpisuj https:// ani ścieżki.

Domyślne 0.0.0.0 zapewnia dostęp z LAN i proxy. Użyj 127.0.0.1 tylko wtedy, gdy proxy działa bezpośrednio na hoście i port nie ma być dostępny z sieci.

Port aplikacji dostępny dla reverse proxy. Domyślnie 8790.

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

Konfiguracja aplikacji pozostaje w panelu WWW. Po starcie otwórz http://IP_SERWERA:8790 i od razu utwórz konto właściciela. Przed wystawieniem portu do Internetu ogranicz go zaporą lub podłącz HTTPS przez reverse proxy. Dostawcę danych, AI, powiadomienia, strefę czasową i publiczny URL ustawisz później przez WWW.
Adres publiczny
https://market.example.com
Pierwsze uruchomienie
http://IP_SERWERA_DOCKER:8790
Cel reverse proxy
http://IP_SERWERA_DOCKER:8790
Test stanu
http://127.0.0.1:8790/api/health

Gotowy docker-compose.yml

name: n3xmarket

# Infrastructure settings that cannot be changed safely by a running web app
# live in this file: image versions, host bind/port, Docker networks, volumes
# and database service identity. Provider keys, AI, alerts, public URL and time
# zone are configured after first start in the authenticated web panel.
# No .env values are referenced or required by this stack.

x-app-environment: &app-environment
  N3XMARKET_DATABASE_PASSWORD_FILE: /run/n3xmarket/database_password

x-app-security: &app-security
  read_only: true
  security_opt:
    - no-new-privileges:true
  cap_drop:
    - ALL
  tmpfs:
    - /tmp:size=64m,mode=1777
    # Next.js image optimization writes a runtime cache even with a read-only
    # root filesystem. Keep it writable, private and ephemeral.
    - /app/.next/cache:size=128m,mode=0700,uid=1001,gid=1001

services:
  bootstrap:
    image: alpine:3.22
    restart: "no"
    environment:
      # Upgrade from N3XMarket 0.1 only: put the former PostgreSQL password
      # between these single quotes for the first upgraded start, then change
      # it back to an empty string. New installations must leave this empty.
      LEGACY_POSTGRES_PASSWORD: ''
    command:
      - /bin/sh
      - -ec
      - |
        umask 077
        if [ -n "$${LEGACY_POSTGRES_PASSWORD:-}" ]; then
          printf '%s' "$$LEGACY_POSTGRES_PASSWORD" > /run/n3xmarket/database_password
        elif [ ! -s /run/n3xmarket/database_password ]; then
          od -An -N32 -tx1 /dev/urandom | tr -d ' \n' > /run/n3xmarket/database_password
        fi
        if [ ! -s /run/n3xmarket/settings_key ]; then
          od -An -N32 -tx1 /dev/urandom | tr -d ' \n' > /run/n3xmarket/settings_key
        fi
        chmod 0444 /run/n3xmarket/database_password /run/n3xmarket/settings_key
    volumes:
      - runtime_secrets:/run/n3xmarket
    networks:
      - backend
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL

  web:
    image: ghcr.io/nexitpl/n3xmarket: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/n3xmarket:ro
    ports:
      # Ready for first-run access from the LAN and for a reverse proxy in
      # another container or host. Restrict 8790 with the host firewall and
      # create the owner account before exposing this port to the Internet.
      - "0.0.0.0:8790: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/n3xmarket: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/n3xmarket: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: n3xmarket
      POSTGRES_USER: n3xmarket
      POSTGRES_PASSWORD_FILE: /run/n3xmarket/database_password
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - runtime_secrets:/run/n3xmarket:ro
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U n3xmarket -d n3xmarket"]
      interval: 5s
      timeout: 5s
      retries: 12
    networks:
      - backend

networks:
  frontend:
  backend:
    internal: true

volumes:
  postgres_data:
  runtime_secrets:

Uruchomienie i kontrola stanu

mkdir -p n3xmarket
cd n3xmarket
# Zapisz skopiowaną konfigurację jako docker-compose.yml
docker compose up -d
docker compose ps
curl -fsS http://127.0.0.1:8790/api/health
Ważne: N3XMarket jest narzędziem badawczym, nie doradcą inwestycyjnym. Zakres, opóźnienie i prawa do użycia danych zależą od planu wybranego dostawcy. AI może się mylić — każdą tezę należy potwierdzić w źródłach pierwotnych.