Hosting
Własny serwer, reverse proxy z HTTPS, oraz co zmienić przy wdrożeniu na Vercelu.
Wariant zalecany — własny serwer
Strona i serwer Minecraft na tej samej maszynie to najprostszy i najbezpieczniejszy układ:
Internet
│ :443 HTTPS
▼
nginx / Caddy ← certyfikat, reverse proxy
│ :3000
▼
Next.js (ta strona)
│ 127.0.0.1:8765 ← ruch nie opuszcza maszyny
▼
GrzybcioRynekWebZalety:
- port 8765 nie musi być otwarty na świat,
- klucz API nie przechodzi przez sieć publiczną,
- SSE działa bez ograniczeń.
W takim układzie w config.yml mostu ustaw:
api:
host: "127.0.0.1"Reverse proxy z HTTPS
nginx
server {
listen 443 ssl http2;
server_name rynek.twojadomena.pl;
ssl_certificate /etc/letsencrypt/live/rynek.twojadomena.pl/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rynek.twojadomena.pl/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Bez tego SSE nie działa
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
}
}proxy_buffering off to nie jest opcja
Nginx domyślnie buforuje odpowiedzi, czyli czeka, aż serwer skończy odpowiadać. Strumień SSE nigdy nie „kończy się", więc bez wyłączenia buforowania aktualizacje na żywo po prostu nie dochodzą — i wygląda to jak błąd strony.
Caddy
Caddy sam załatwia certyfikat i domyślnie nie buforuje:
rynek.twojadomena.pl {
reverse_proxy 127.0.0.1:3000
}Vercel i inne hostingi serverless
Da się, ale z jednym ustępstwem.
SSE trzeba wyłączyć
Funkcje serverless mają limit czasu wykonania. Strumień SSE, który ma trwać godzinami, zostanie ucięty. Na Vercelu ustaw:
NEXT_PUBLIC_MARKET_SSE=false
NEXT_PUBLIC_MARKET_POLL_MS=15000Dodatkowo, przy hostingu poza twoją maszyną:
Most musi być dostępny z internetu
MARKET_API_URL nie może wskazywać na 127.0.0.1 — Vercel nie ma dostępu do twojego
localhosta. Potrzebujesz publicznego adresu i otwartego portu.
Postaw most za HTTPS
Ruch z kluczem API poleci przez internet. Wystaw most za reverse proxy z certyfikatem, zamiast otwierać goły port 8765.
Ustaw zmienne w panelu Vercela
MARKET_API_KEY wpisz jako zmienną środowiskową projektu, nie w repozytorium.
Uważaj na limity zapytań
Przy pollingu co 15 sekund i większym ruchu limit 300 zapytań na minutę kończy się
szybciej niż przy SSE. W razie potrzeby podnieś
authenticated-requests-per-minute w konfiguracji mostu.
Firewall
| Port | Otwierać na świat? |
|---|---|
443 (HTTPS) | Tak |
80 (HTTP → przekierowanie) | Tak |
3000 (Next.js) | Nie — tylko przez reverse proxy |
8765 (most) | Nie, chyba że strona stoi na innej maszynie |
25565 (Minecraft) | Tak, jak zwykle |
Aktualizacja strony
git pull
npm install
npm run build
pm2 restart rynekMonitoring
Najprostszy sensowny zestaw:
| Co sprawdzać | Jak |
|---|---|
| Czy most żyje | GET /api/v1/health — bez klucza, nie obciąża serwera gry |
| Czy strona odpowiada | GET / na domenie strony |
| Czy certyfikat nie wygasa | Alert z Let's Encrypt albo zewnętrzny monitor |
Nie monitoruj endpointów z danymi
Ustawienie monitora na /api/v1/listings co minutę zjada limit zapytań i niepotrzebnie
odpytuje serwer gry. Od tego jest /api/v1/health.