Produkty

Sites — hosting frontendu

Statyczne strony i aplikacje SSR obok bazy: wdrożenia, podglądy, rollback, domeny, GitHub, hook i CLI.

Sites hostuje frontend Twojego projektu w UE, obok bazy. Wgrywasz gotowy build (dist/, .zip) albo kod źródłowy — budujemy go w izolowanym kontenerze gVisor — i wystawiamy pod adresem HTTPS. Obsługiwane: Vite/React/Vue/Svelte, Create React App, Astro, SvelteKit (adapter-static), Next.js z output: 'export' (statyczne) oraz Next.js i dowolne aplikacje Node.js (npm start) jako SSR.

Adresy

  • Produkcja: https://<witryna>-<ref>.host.ulewicz.space
  • Każde wdrożenie: https://<witryna>-d3-<ref>.host.ulewicz.space (niezmienny podgląd)
  • Pull request: https://<witryna>-pr12-<ref>.host.ulewicz.space
  • Własna domena: dodaj ją w zakładce Domeny i ustaw CNAME na <witryna>-<ref>.host.ulewicz.space. Certyfikat Let's Encrypt wystawiamy i odnawiamy automatycznie.

Nazwa witryny: małe litery, cyfry i „-”, maks. 41 znaków; nie może kończyć się na -d<liczba> ani -pr<liczba> i nie może być db, cache ani search.

Wdrażanie

# CLI
hostbase sites deploy ./dist --site sklep            # gotowy build (tryb dist)
hostbase sites deploy . --site sklep --mode source   # kod źródłowy, budowany u nas
hostbase sites deploy . --site sklep --preview       # podgląd, produkcja bez zmian
hostbase sites rollback sklep d11                    # natychmiastowy powrót
hostbase sites logs sklep --build --deployment d12
  • Panel — kreator: wgraj .zip lub folder, wybierz framework, ustaw zmienne.
  • GitHub — po podłączeniu repozytorium (Integracje → GitHub) powiąż witrynę z gałęzią: push wdraża produkcję, PR z tego samego repozytorium dostaje podgląd, status commita hostbase/sites/<witryna> i komentarz z adresem. PR z forków nie są budowane.
  • Hook wdrożeniowy — adres POST https://host.ulewicz.space/api/hooks/sites/<token> uruchamia nowe wdrożenie produkcyjne (z CI lub CMS). Rotacja w panelu lub hostbase sites hook sklep --rotate.
  • API / MCP — POST /api/v1/projects/{ref}/sites/{name}/deployments z archive_base64; narzędzia MCP deploy_site, promote_site_deployment i inne.

Budowanie i zmienne środowiskowe

Framework wykrywamy po package.json (lub ustawiasz ręcznie, razem z komendą instalacji, budowania i katalogiem wynikowym). Budowanie trwa maks. 15 minut, w kontenerze gVisor z 2 vCPU i 3 GB RAM, z cache npm między budowami. Do builda i do SSR wstrzykujemy automatycznie: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY, PUBLIC_SUPABASE_*, REACT_APP_SUPABASE_*, SUPABASE_URL, SUPABASE_ANON_KEY, HOSTBASE_SITE_URL. Klucz service_role i DATABASE_URL trafiają wyłącznie do działających aplikacji SSR — nigdy do builda ani do plików statycznych. Własne zmienne nadpisują automatyczne; zmiany budowania działają od następnego wdrożenia (sites redeploy).

Serwer statyczny

  • Fallback SPA (index.html), czyste adresy (/o-nas → o-nas.html lub o-nas/index.html), własne 404.html.
  • Brotli i gzip (pliki kompresujemy przy wdrożeniu), ETag/304, Range.
  • Zasoby z hashem w nazwie (/assets/index-Ab12Cd34.js, /_next/static/…) dostają Cache-Control: immutable na rok; HTML jest zawsze rewalidowany.
  • _redirects w katalogu wynikowym:
/stara-strona   /nowa-strona   301
/blog/:slug     /artykuly/:slug  302
/api/*          /index.html  200
/sklep/*        /produkty/:splat  301!
/zniknelo       /404.html    404

Reguły działają, gdy nie ma pliku o danej ścieżce; wykrzyknik po statusie wymusza regułę mimo istniejącego pliku. 200 to przepisanie (bez zmiany adresu).

# _headers
/*
  X-Frame-Options: DENY
  Referrer-Policy: same-origin
/assets/*
  Cache-Control: public, max-age=31536000, immutable

Wdrożenia, rollback i SSR

Każde wdrożenie jest niezmienne i ma własny adres. Awans (promote) i rollback przełączają produkcję na wybrane gotowe wdrożenie bez przebudowy i bez przestoju. Zachowujemy 10 ostatnich wdrożeń i produkcyjne. Nieudane wdrożenie nie zmienia produkcji, a powiadomienie o błędzie trafia do centrum powiadomień. Aplikacje SSR działają w kontenerach (gVisor, użytkownik bez uprawnień, system plików tylko do odczytu, sieć prywatna do Twojej bazy); produkcyjny i dwa ostatnie podglądy są uruchomione, starsze usypiają i można je obudzić.

Statystyki i limity

Zakładka Statystyki pokazuje żądania, transfer, kody statusu i najpopularniejsze ścieżki z logów brzegowych. Transfer liczy się do egress planu; budowanie do limitu minut (Free 100, Pro 1000, Team 6000 / mies., ponad limit 0,12 zł / min); kontenery SSR rozliczamy jak godziny Workers (Small/Medium/Large) i wymagają planu Pro+. Limity: 10 witryn na projekt, 10 domen na witrynę, archiwum do 24 MB, witryna do 500 MB i 20 000 plików.

Management API

GET    /api/v1/projects/{ref}/sites
PUT    /api/v1/projects/{ref}/sites/{name}                      # ustawienia
POST   /api/v1/projects/{ref}/sites/{name}/deployments           # {mode, target, archive_base64, settings}
POST   /api/v1/projects/{ref}/sites/{name}/deployments/{id}/promote
GET    /api/v1/projects/{ref}/sites/{name}/logs?build=1&deployment=d3
PUT    /api/v1/projects/{ref}/sites/{name}/env                   # {env: {K: "v"}}
POST   /api/v1/projects/{ref}/sites/{name}/domains               # {hostname}
GET    /api/v1/projects/{ref}/sites/{name}/analytics?range=7d
POST   /api/v1/projects/{ref}/sites/{name}/hook