Zmienne środowiskowe
Wszystkie zmienne z .env — połączenie z mostem, aktualizacje na żywo i branding.
Pełny plik przykładowy
# 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-stronaZasada, 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.
| Sytuacja | Wartość |
|---|---|
| Strona i serwer na tej samej maszynie | http://127.0.0.1:8765 |
| Strona w Dockerze, most na hoście | http://host.docker.internal:8765 |
| Most na innej maszynie | http://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 |
|---|---|
true | Strona podłącza się do strumienia zdarzeń mostu |
false | Strona 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
| Zmienna | Domyślnie | Opis |
|---|---|---|
NEXT_PUBLIC_SITE_NAME | GrzybcioRynek | Nazwa w nagłówku i tytule karty |
NEXT_PUBLIC_SITE_TAGLINE | puste | Podtytuł. Puste = wbudowane teksty EN/PL |
NEXT_PUBLIC_DOCS_URL | puste | Link do dokumentacji w stopce |
NEXT_PUBLIC_DISCORD_URL | puste | Link do Discorda w stopce |
NEXT_PUBLIC_GITHUB_URL | repo projektu | Link 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
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ć
| Zmiana | Co wystarczy |
|---|---|
MARKET_API_URL | Restart procesu |
MARKET_API_KEY | Restart 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
| Plik | Kiedy | Do repozytorium? |
|---|---|---|
.env.example | Wzór bez wartości | Tak |
.env.local | Uruchomienie przez Node | Nie |
.env | Uruchomienie przez Dockera | Nie |
Oba pliki z wartościami zawierają klucz API i muszą zostać w .gitignore.