Produktöversikt
En server mellan nätverket och din applikation.
Webship är en självhystad Rust edge- och statisk webbserver. En runtime hanterar moderna protokoll, tillämpar edge-policy, serverar filer och proxar applikationsförfrågningar.
Modern transport
Acceptera HTTP/1.1, HTTP/2 och HTTP/3, med TLS 1.3 och en frivillig WebTransport endpoint.
Statisk och proxyd leverans
Servera statiska filer med validatorer och förkomprimerade sidobilar, eller proxya applikationstrafik genom begränsade upstream-pooler.
Säkra standardinställningar
Börja med att aktivera WAF, DDoS-kontroller, bot-utmaning, säkerhetsrubriker i svar, API Shield och skydd av punktfiler.
Observerbara operationer
Använd autentiserad statistik, Prometheus-metriker, förfrågnings-ID:n, smidiga omladdningar, och det frivilliga MCP kontrollplanet.
Snabbstart
Från release-binär till hälsosam lyssnare.
Starta på loopback, validera allt innan bindning, och verifiera det inbyggda hälso-svaret innan du lägger till offentlig trafik.
Förbered filer
Placera release-binären, dess TOML-konfiguration, den statiska roten och eventuella konfigurerade TLS-certifikat- och nyckelfiler på värden.
Validera och inspektera
Kör båda konfigurationskommandona. Åtgärda det första felet och inspektera det raderade effektiva resultatet innan start.
Starta privat
Starta Webship med den valda TOML-filen. Lägg till ett komplett certifikatpar eller automatisk TLS när webbplatsen är redo för säker offentlig trafik.
Verifiera körningen
Anropa GET /health lokalt. Testa sedan statiska sökvägar, TLS, proxyrutter, säkerhetsregler och autentiserad övervakning.
listen = "127.0.0.1:4433"
workers = 4
root = "./public"/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/healthSnabbstartsguide för AI-agenter
Anslut en AI-agent till Webship på fem rader.
Anslut Claude Code, OpenAI, DeepSeek eller någon kompatibel MCP-klient genom en privat SSH-tunnel. Agenten får en autentiserad operationsyta utan att dela den offentliga lyssnaren eller exponera kontrolluppgifter för internettrafik.
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }Statisk leverans
Servera en katalog med protokollmedvetna standarder.
Ställ in en rot globalt eller per webbplats. TLS-webbplatser använder som standard endast HTTP/3; klartextwebbplatser använder som standard HTTP/1.1 och H2C. Åsidosätt HTTP/1.1, HTTP/2 och HTTP/3 oberoende för varje webbplats.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueDen inbyggda routern stöder GET och HEAD, byte-intervall, villkorliga förfrågningar, validatorer och .br, .zst och .gz sidvagnar. Dot-filvägar nekar som standard; .well-known förblir tillgängligt.
Applikationstrafik
Rikta begäranden till en eller flera upstreams.
Aktivera omvänd proxy, matcha en värd och väg, och definiera sedan en slutlig ovillkorlig policy. Webship stöder begränsade pooler, hälsokontroller, lastbalansering, kretsbrytare, säkra återförsök utan kropp, WebSockets och caching.
[reverse_proxy]
enabled = true
[[reverse_proxy.routes]]
domain = "app.example.com"
path_prefix = "/api"
strip_path_prefix = true
upstreams = ["127.0.0.1:8080", "127.0.0.1:8081"]
[[reverse_proxy.policies]]
name = "default"
hosts = []
path_prefixes = ["/"]
methods = []
max_body_bytes = 1048576
total_timeout_ms = 30000TLS och HTTP/3
Använd manuella certifikat eller låt Webship hantera dem.
Webship accepterar TLS 1.3. HTTP/3 körs över den matchande UDP-lyssnaren; aktivera HTTP/1.1 eller HTTP/2 uttryckligen när en TLS-webbplats också behöver TCP-kompatibilitet.
listen = "0.0.0.0:443"
[automatic_tls]
enabled = true
directory_url = "https://acme-v02.api.letsencrypt.org/directory"
cache_dir = "/var/lib/webship/acme"
contacts = ["mailto:ops@example.com"]
accept_terms_of_service = true
[[sites]]
domain = "app.example.com"
root = "/srv/app"Edge-policy
Behåll den säkra baslinjen intakt.
Webship aktiverar sina huvudsakliga skyddslager som standard. Justera gränser för din arbetsbelastning och validera efter varje regel- eller header-policyändring.
[ddos]
enabled = true
mode = "normal"
requests_per_minute = 600
burst = 100
block_seconds = 300
[security.response_headers]
enabled = true
nosniff = true
frame_deny = true
referrer_no_referrer = true
hsts = "max-age=31536000; includeSubDomains"
content_security_policy = "default-src 'self'; frame-ancestors 'none'"Använd normalt läge för vanlig trafik, under_attack för striktare hantering av aktiva attacker, och lockdown när endast sonder och uttryckligen tillåtna vägar ska vara tillgängliga.
Privat diagnostik
Inspektera kanten utan att exponera kontrollplanet.
Statistik och Prometheus-metriker körs på en separat autentiserad lyssnare. Instrumentering måste vara aktiverad när någon av ändpunkterna är aktiva.
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"Säkra operationer
Ladda om medvetet. Håll återställning nära.
Konfigurationsomladdning
Skicka SIGHUP efter att ha redigerat en filbaserad konfiguration. Webship validerar ersättningen innan den installeras och behåller den körande konfigurationen när valideringen misslyckas.
Uppgradera och återställ
Installera den nya binären bredvid den tidigare versionen, validera produktionskonfigurationen med den, och verifiera sedan hälsa, TLS, proxy och mätvärden. Behåll den tidigare binären tills alla kontroller är godkända.
kill -HUP "$(pidof webship)"
/usr/local/bin/webship update --config /etc/webship/production.toml
sudo systemctl daemon-reload
sudo systemctl enable --now webship
sudo systemctl status webshipKommando-rad referens
Liten yta, tydlig start.
webship [OPTIONS] | webship update [OPTIONS]
-c, --config PATH- Välj TOML-filen. Om den inte finns, skapar Webship den med en privat localhost TLS-identitet.
--check-config- Validera den kompletta konfigurationen och avsluta utan att starta lyssnare.
--print-effective-config- Skriv ut den sammanslagna effektiva konfigurationen med borttagna hemligheter.
uppdatera- Verifiera det signerade communitymanifestet, välj detta exakta plattforms mål, och installera en nyare version när en finns.
--help / --version- Skriv ut kommandohjälp eller den installerade Webship-versionen.
Vanliga felmod
Börja med konfigurationen, sedan gå utåt.
- Kör --check-config och korrigera det första rapporterade felet; okända TOML-fält avvisas.
- Bekräfta att de konfigurerade TCP- och UDP-portarna är tillgängliga och tillåtna av brandväggen.
- Bekräfta att certifikatet och nyckeln finns, kan läsas av tjänstekontot och bildar ett matchande par.
- För automatisk TLS, bekräfta att varje konfigurerad domän pekar på Webship-värden.
- Anropa /health på den lokala applikationslyssnaren innan testning via DNS eller en extern lastväg.
- Aktivera autentiserad observerbarhet tillfälligt när runtime-bevis krävs.