Produkty
Sites — ochrona, reguły, A/B, komentarze i migracja
Hasło/SSO dla podglądów, tryb konserwacji, redirecty i reguły geo/A-B, ochrona przed rozjazdem wersji, obrazy i OG, komentarze, zamrożenia, import z Vercel/Netlify/Cloudflare i przenoszenie między regionami.
Poza budowaniem i hostingiem Sites ma warstwę „platformową” znaną z Vercel i Netlify. Wszystko konfigurujesz w zakładkach witryny: Ochrona, Reguły, Komentarze, Alerty (oraz Ustawienia → przenoszenie), przez API, CLI i MCP.
Ochrona wdrożeń
- Wspólne hasło — odwiedzający podaje hasło, dostaje ciasteczko na 7 dni. Przechowujemy tylko skrót scrypt; po 8 błędnych próbach z jednego IP logowanie blokuje się na 10 minut.
- Logowanie HostBase (SSO) — wchodzą tylko zalogowani członkowie organizacji projektu; reszta widzi ekran odmowy.
- Zakres: tylko podglądy (wdrożenia
-dN-i PR) albo także produkcja i domeny własne. Witryny SSR są chronione przez Traefik forwardAuth. - Podglądy zawsze mają
X-Robots-Tag: noindex, nofollow— nie trafiają do wyszukiwarek.
Tryb konserwacji i zamrożenie wdrożeń
Tryb konserwacji zwraca na produkcji HTTP 503 z Retry-After i Twoim komunikatem (token obejścia pozwala zespołowi testować). Zamrożenie blokuje wdrożenia produkcyjne (push, hook, redeploy, CLI) — ręcznie lub w oknach (np. piątek 15:00–23:59, albo jednorazowo na czas wyprzedaży). Rollback i podglądy działają zawsze.
Przekierowania, rewrites, nagłówki i reguły brzegowe
Edytor w panelu waliduje wzorce (:param, :rest*, *) i ma tester — pokazuje decyzję bramki dla ścieżki, kraju, urządzenia i ciasteczek na niezapisanej konfiguracji. Plik _redirects/_headers z buildu nadal działa.
- Geo — kraj z nagłówka
CF-IPCountry(włącz CDN Cloudflare). - Warunki — ścieżka, kraj, cookie, nagłówek, parametr zapytania, urządzenie mobilne/desktop.
- Akcje — przekierowanie, rewrite, blokada, dodanie nagłówków, podział ruchu A/B między wdrożeniami lub ścieżkami z ciasteczkiem
hb_ab_<nazwa>(30 dni) i nagłówkiemx-hostbase-ab. - Własne strony błędów 404 i 500 (HTML).
{
"redirects": [{ "source": "/old/:slug*", "destination": "/new/:slug", "status": 308 }],
"rewrites": [{ "source": "/team", "destination": "/about" }],
"headers": [{ "source": "/*", "headers": { "x-frame-options": "DENY" } }],
"rules": [
{ "name": "PL", "when": { "path": "/", "country": ["PL"] }, "then": { "type": "redirect", "to": "/pl", "status": 302 } },
{ "name": "Hero A/B", "when": { "path": "/" },
"then": { "type": "split", "name": "hero", "variants": [
{ "label": "A", "weight": 50, "deployment": "d4" },
{ "label": "B", "weight": 50, "deployment": "d5" } ] } }
],
"skew_hours": 24,
"images": { "enabled": true, "domains": ["images.example.com"] },
"og": { "enabled": true, "brand": "moja.pl", "accent": "#3ecf8e" }
}
Ochrona przed rozjazdem wersji (skew protection)
Po nowym wdrożeniu produkcyjnym zasoby poprzedniej wersji (np. /_next/static/…, /assets/…) są nadal serwowane przez skew_hours godzin (domyślnie 24, 0 = wyłączone, maks. 720), więc otwarte karty nie dostają 404 na starych chunkach. Dotyczy witryn statycznych.
Obrazy, OG i rewalidacja
/_hb/image?url=/hero.jpg&w=800&q=75&f=webp— skalowanie i konwersja (imgproxy: JPEG/PNG/WebP/AVIF).urlto ścieżka w witrynie albo https z listy dozwolonych hostów./_hb/og?title=…&subtitle=…&theme=dark|light— obraz Open Graph 1200×630 PNG (z&format=svgdostajesz SVG).- Rewalidacja na żądanie dla Next.js (ISR):
POST …/revalidate {"paths":["/blog"]}czyści cache CDN dla ścieżek i wywołuje endpoint aplikacji (z nagłówkiemx-revalidate-secret), w którym wołaszrevalidatePath/revalidateTag.
Komentarze w podglądach
Każdy podgląd ma pasek narzędzi (dodaj komentarz → kliknij w miejsce na stronie). Wątki z odpowiedziami, „rozwiąż”, lista w panelu i powiadomienia dla zespołu. Zalogowani (SSO) komentują pod swoim imieniem; goście podają imię (limit 40 komentarzy/h/IP). Dotyczy podglądów witryn statycznych.
Powiadomienia i alerty
Wdrożenie gotowe / nieudane, zmiana wersji produkcyjnej, nowy komentarz oraz alert transferu (80% i 100% limitu GB / 30 dni) trafiają do powiadomień i kanałów organizacji: Slack, Discord, webhook, e-mail.
Import z Vercel, Netlify i Cloudflare Pages
Kreator Sites → Importuj (lub CLI/API/MCP): podajesz token API dostawcy, wybierasz projekt i dostajesz witrynę z repozytorium, komendami budowania, zmiennymi (wartości ukrytych sekretów uzupełniasz ręcznie), domenami oraz przekierowaniami/rewrites/nagłówkami z vercel.json i netlify.toml. Token jest szyfrowany, trzymany najwyżej 30 minut i usuwany po imporcie. Domeny są dodane od razu, ale ruch przełączasz dopiero zmianą DNS: panel pokazuje rekordy i weryfikuje stan (Zweryfikuj).
hostbase sites import vercel --token $VERCEL_TOKEN # lista projektów
hostbase sites import vercel --token $VERCEL_TOKEN --project prj_123 --name sklep
hostbase sites cutover sklep # rekordy DNS + weryfikacja
# API: POST /api/v1/projects/{ref}/sites/import/{list|preview|run} # MCP: site_import
Uprawnienia tokenu: Vercel — token konta/zespołu (odczyt projektów); Netlify — Personal Access Token; Cloudflare — Account → Cloudflare Pages → Read. Repozytoria prywatne importujesz, gdy projekt ma połączenie GitHub z dostępem do repo.
Przenoszenie między projektami i regionami
Ustawienia → Przenieś witrynę kopiuje witrynę do innego projektu — także w innym regionie (np. Warszawa ↔ Sztokholm): ustawienia, zmienne, grupy zmiennych, potok, reguły i ochronę (razem ze skrótem hasła), opcjonalnie domeny, oraz ostatnie 1–5 wdrożeń (budowane od nowa ze źródeł; produkcja ostatnia). Źródło zostaje do czasu Twojej decyzji.
hostbase sites move sklep --to abcdefghijklmnopqrst --keep 2 --domains
# API: POST /api/v1/projects/{ref}/sites/{name}/move # MCP: site_move
Przycisk „Deploy to HostBase”
Do README publicznego repo: [](https://host.ulewicz.space/new/site?repo=https://github.com/o/r). Parametry: repo, branch, name. Po zalogowaniu i wyborze projektu kreator analizuje repozytorium (animacja wykrywania frameworka) i prowadzi do wdrożenia.
API
GET|PUT /api/v1/projects/{ref}/sites/{name}/platform POST …/platform/test
GET|PUT …/freeze GET|PUT …/notifications POST …/revalidate
GET|POST …/comments POST|DELETE …/comments/{id}
POST …/move GET …/cutover POST /sites/import/{list|preview|run}
# MCP: site_platform, site_rules_test, site_freeze, site_notifications, site_comments, site_revalidate, site_import, site_cutover, site_move