Grzybcio Wiki
Marketplace website

Zmienne środowiskowe

Wszystkie zmienne z .env — połączenie z mostem, aktualizacje na żywo i branding.

Pełny plik przykładowy

.env.example
# Adres pluginu GrzybcioRynekWeb.
# Ta sama maszyna: 127.0.0.1. Docker na hoście: host.docker.internal
MARKET_API_URL=http://127.0.0.1:8765

# Klucz z plugins/GrzybcioRynekWeb/config.yml.
# Zostaje na serwerze Next.js, nigdy nie trafia do przeglądarki.
MARKET_API_KEY=

# Aktualizacje na żywo przez SSE. Zostaw true przy własnym hostingu.
# Ustaw false tylko na krótkotrwałych hostingach serverless.
NEXT_PUBLIC_MARKET_SSE=true

# Co ile milisekund odpytywać, gdy SSE jest wyłączone.
NEXT_PUBLIC_MARKET_POLL_MS=15000

# Branding. Pusty SITE_TAGLINE = wbudowane teksty EN/PL.
NEXT_PUBLIC_SITE_NAME=GrzybcioRynek
NEXT_PUBLIC_SITE_TAGLINE=
NEXT_PUBLIC_DOCS_URL=
NEXT_PUBLIC_DISCORD_URL=
NEXT_PUBLIC_GITHUB_URL=https://github.com/Grzybcios/GrzybcioRynekWeb-strona

Zasada, która ratuje przed wyciekiem klucza

Wszystko z przedrostkiem NEXT_PUBLIC_ jest wmurowane w kod wysyłany do przeglądarki i widoczne dla każdego odwiedzającego.

Dlatego MARKET_API_KEY nigdy nie może dostać tego przedrostka. Jeśli kiedykolwiek zobaczysz NEXT_PUBLIC_MARKET_API_KEY — to błąd, który wystawia twoje API na świat.

Połączenie z mostem

MARKET_API_URL

Adres, pod którym działa plugin GrzybcioRynekWeb.

SytuacjaWartość
Strona i serwer na tej samej maszyniehttp://127.0.0.1:8765
Strona w Dockerze, most na hościehttp://host.docker.internal:8765
Most na innej maszyniehttp://192.168.1.50:8765 albo domena

Bez ukośnika na końcu

http://127.0.0.1:8765, nie http://127.0.0.1:8765/. Doklejony ukośnik potrafi wyprodukować adresy z podwójnym // i błędy 404.

MARKET_API_KEY

Klucz z plugins/GrzybcioRynekWeb/config.yml. Czytany po stronie serwera Next.js i doklejany do zapytań do mostu.

Klucz potrzebuje uprawnień:

permissions:
  - "listings.read"
  - "categories.read"
  - "stats.read"
  - "history.read"
  - "players.read"

Aktualizacje na żywo

NEXT_PUBLIC_MARKET_SSE

WartośćZachowanie
trueStrona podłącza się do strumienia zdarzeń mostu
falseStrona odpytuje API co NEXT_PUBLIC_MARKET_POLL_MS

Zostaw true przy własnym hostingu. Ustaw false tylko tam, gdzie długie połączenia są ucinane — patrz Hosting.

NEXT_PUBLIC_MARKET_POLL_MS

Odstęp między odpytaniami, gdy SSE jest wyłączone. Domyślnie 15000 (15 sekund).

Nie schodź zbyt nisko

Most ma limit 300 zapytań na minutę na klucz. Przy NEXT_PUBLIC_MARKET_POLL_MS=1000 i kilku odwiedzających naraz limit skończy się w kilkanaście sekund, a strona zacznie dostawać 429.

Jeśli potrzebujesz naprawdę świeżych danych, włącz SSE zamiast skracać polling.

Branding

ZmiennaDomyślnieOpis
NEXT_PUBLIC_SITE_NAMEGrzybcioRynekNazwa w nagłówku i tytule karty
NEXT_PUBLIC_SITE_TAGLINEpustePodtytuł. Puste = wbudowane teksty EN/PL
NEXT_PUBLIC_DOCS_URLpusteLink do dokumentacji w stopce
NEXT_PUBLIC_DISCORD_URLpusteLink do Discorda w stopce
NEXT_PUBLIC_GITHUB_URLrepo projektuLink do GitHuba w stopce

Puste wartości oznaczają, że dany link po prostu się nie pokaże.

Zostaw pusty tagline, jeśli chcesz dwujęzyczność

Wbudowane teksty mają wersję angielską i polską, przełączaną razem z językiem interfejsu. Własny NEXT_PUBLIC_SITE_TAGLINE będzie ten sam w obu językach.

Przykład konfiguracji produkcyjnej

.env.local
MARKET_API_URL=http://127.0.0.1:8765
MARKET_API_KEY=dlugi-losowy-klucz

NEXT_PUBLIC_MARKET_SSE=true
NEXT_PUBLIC_MARKET_POLL_MS=15000

NEXT_PUBLIC_SITE_NAME=Rynek TwojSerwer
NEXT_PUBLIC_SITE_TAGLINE=
NEXT_PUBLIC_DOCS_URL=https://wiki.twojadomena.pl
NEXT_PUBLIC_DISCORD_URL=https://discord.gg/twoj-kod
NEXT_PUBLIC_GITHUB_URL=

Kiedy trzeba przebudować

ZmianaCo wystarczy
MARKET_API_URLRestart procesu
MARKET_API_KEYRestart procesu
Dowolna NEXT_PUBLIC_*Pełny rebuild (npm run build albo docker compose up -d --build)

To dlatego, że zmienne NEXT_PUBLIC_* są wstawiane do kodu w trakcie budowania, a nie czytane przy starcie.

Pliki .env a bezpieczeństwo

PlikKiedyDo repozytorium?
.env.exampleWzór bez wartościTak
.env.localUruchomienie przez NodeNie
.envUruchomienie przez DockeraNie

Oba pliki z wartościami zawierają klucz API i muszą zostać w .gitignore.

On this page