Dokumentace Webship

Instalujte, konfigurujte a automatizujte Webship.

Konfigurujte, ověřujte, nasazujte a automatizujte AI-nativní Webship hranový server s stručnými příklady TOML a operačními pokyny s pevně stanovenou verzí.

Verze dokumentace

Webship 1.5.0Aktuální

Uvolněno 2026-09-21. Tato URL je připnuta k vybranému vydání.

Výchozí posluchač
127.0.0.1:4433
Konfigurace
TOML
TLS
TLS 1.3

Přehled produktu

Jeden server mezi sítí a vaší aplikací.

Webship je samostatně hostovaný Rust okrajový a statický webový server. Jeden runtime ukončuje moderní protokoly, aplikuje okrajovou politiku, poskytuje soubory a proxyuje požadavky aplikace.

Moderní doprava

Přijímejte HTTP/1.1, HTTP/2 a HTTP/3, s TLS 1.3 a volitelným koncovým bodem WebTransport.

Statická a proxy distribuce

Podávejte statické soubory s validátory a předkomprimovanými doplňky, nebo směrujte provoz aplikace přes omezené upstream pooly.

Bezpečné výchozí nastavení

Začněte s povoleným WAF, kontrolami DDoS, výzvou pro boty, bezpečnostními hlavičkami odpovědí, API Shield a ochranou souborů s tečkou.

Pozorovatelné operace

Používejte autentizovanou statistiku, Prometheus metriky, ID požadavků, plynulé restartování a volitelnou řídicí rovinu MCP.

Rychlý start

Od vydané binárky k zdravému posluchači.

Spusťte na loopbacku, ověřte vše před připojením a zkontrolujte vestavěnou odpověď o zdraví před přidáním veřejného provozu.

  1. Připravte soubory

    Umístěte spustitelný soubor release, jeho TOML konfiguraci, statický kořen a všechny nakonfigurované TLS certifikáty a klíčové soubory na hostitele.

  2. Ověřte a zkontrolujte

    Spusťte oba konfigurační příkazy. Opravte první chybu a zkontrolujte upravený účinný výsledek před spuštěním.

  3. Začít soukromě

    Spusťte Webship s vybraným TOML souborem. Přidejte kompletní pár certifikátů nebo automatický TLS, když je stránka připravena pro zabezpečený veřejný provoz.

  4. Ověřte runtime

    Zavolejte GET /health lokálně. Poté otestujte statické cesty, TLS, proxy trasy, bezpečnostní pravidla a autentizované monitorování.

Minimální config.toml
listen = "127.0.0.1:4433"
workers = 4
root = "./public"
Ověřte před spuštěním
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
Spuštění a ověření
/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/health

Rychlý návod pro AI agenty

Připojte AI agenta k Webship pěti řádky.

Připojte Claude Code, OpenAI, DeepSeek nebo jakéhokoli kompatibilního MCP klienta přes soukromý SSH tunel. Agent získá autentizovaný operační povrch, aniž by sdílel veřejného posluchače nebo vystavoval přihlašovací údaje kontrole internetovému provozu.

Pět-řádková konfigurace klienta MCP
{
  "mcpServers": {
    "webship": { "url": "https://localhost:19443/mcp",
      "headers": { "Authorization": "Bearer <token>" } }
  } }

Statické doručení

Servírujte adresář s výchozími hodnotami závislými na protokolu.

Nastavte kořen globálně nebo pro jednotlivé stránky. TLS stránky mají ve výchozím nastavení pouze HTTP/3; nešifrované stránky mají ve výchozím nastavení HTTP/1.1 a H2C. Přepište HTTP/1.1, HTTP/2 a HTTP/3 nezávisle pro každou stránku.

Statická stránka specifická pro doménu
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"

[sites.protocols]
h1 = true
h2 = true
h3 = true

Vestavěný router podporuje GET a HEAD, rozsahy bajtů, podmíněné požadavky, validátory a boční soubory .br, .zst a .gz. Cesty k tečkovým souborům jsou ve výchozím nastavení odmítnuty; .well-known zůstává dostupné.

Aplikační provoz

Směřujte požadavky na jednoho nebo více upstreamů.

Povolte reverzní proxy, odpovídejte hostiteli a cestě, a pak definujte konečnou bezpodmínečnou politiku. Webship podporuje omezené pooly, kontrolu zdravotního stavu, vyvažování zátěže, přerušovače obvodů, bezpečné opakované pokusy bez těla požadavku, WebSockets a cachování.

API trasa se dvěma upstreamy
[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 = 30000

Webship 1.5.0 Vrstva 4

Proxy TCP a UDP provoz bez HTTP trasy.

Vrstva 4 je ve výchozím nastavení vypnutá. Definujte pojmenované upstreamy, nezávislé TCP a UDP politiky, posluchače a trasy. TCP podporuje omezení připojení, kontroly zdravotního stavu, vyvažování zátěže, volitelný PROXY protokol a průchod TLS nebo jeho ukončení. UDP používá omezené toky a dávkové přijímací pracovníky.

TCP a UDP proxy posluchače
[layer4]
enabled = true

[[layer4.tcp_policies]]
name = "edge-tcp"
max_connections = 10000
idle_timeout_ms = 300000

[[layer4.udp_policies]]
name = "edge-udp"
max_flows = 20000
receive_batch_size = 32

[[layer4.upstreams]]
name = "origin-a"
address = "127.0.0.1:9443"
weight = 100

[[layer4.tcp]]
name = "tls-tunnel"
listen = "127.0.0.1:10443"
policy = "edge-tcp"
tls_mode = "passthrough"

[[layer4.tcp.routes]]
name = "default"
default = true
upstreams = ["origin-a"]
load_balancing = "weighted-peak-ewma"

[[layer4.udp]]
name = "datagrams"
listen = "127.0.0.1:10443"
policy = "edge-udp"

[[layer4.udp.routes]]
name = "default"
default = true
upstreams = ["origin-a"]

Doručování podle trasy

Vytvořte omezenou cache ve stylu CDN bez překračování hranic webu.

Cache je nakonfigurována na každé trase reverzního proxy, ne globálně. Vyberte bezpečné metody a stavy, limity TTL, chování CDN-Cache-Control a normalizaci klíče dotazu pro tento web a cestu. Autentizované, personalizované, soukromé a odpovědi typu no-store zůstávají ve výchozím nastavení necachovatelné.

Politika cache ve stylu CDN pro každou trasu
[[reverse_proxy.routes]]
domain = "assets.example.com"
path_prefix = "/assets"
upstreams = ["127.0.0.1:8080"]

[reverse_proxy.routes.cache]
enabled = true
cacheable_methods = ["GET", "HEAD", "QUERY"]
cacheable_statuses = [200, 203, 204, 206, 301, 404, 410]
default_ttl_ms = 60000
max_ttl_ms = 86400000
honor_cdn_cache_control = true
query_mode = "ignore-listed"
ignored_query_parameters = ["utm_*", "fbclid"]

Lokální kontext provozu

Používejte pravidla GeoIP bez hostované vyhledávací služby.

Načíst data o zemi, městě a ASN z lokálních databází kompatibilních s MaxMind. GeoIP je ve výchozím nastavení vypnuto; udržujte soubory databáze aktuální a rozhodněte, zda mají selhání vyhledávání zabránit nebo obejít politiku závislou na geo-lokaci před jejím povolením.

Konfigurace lokální databáze GeoIP
[geoip]
enabled = true
country_db = "/var/lib/webship/geo/country.mmdb"
city_db = "/var/lib/webship/geo/city.mmdb"
asn_db = "/var/lib/webship/geo/asn.mmdb"
failure_mode = "deny"

Poštovní protokoly

Směrujte e-mailové relace s protokolem vědomou kontrolou.

Pro SMTP odesílání, IMAP, POP3 a související protokolově orientované směrování použijte samostatnou datovou rovinu pošty. Posluchače mohou používat pass-through, implicitní TLS nebo omezený STARTTLS upgrade. Nové posluchače nechte na loopback až do ověření identity upstreamu, certifikátu, autentizace a TLS politiky.

Přímé procházení odesílání SMTP
[mail]
enabled = true

[[mail.upstreams]]
name = "submission-a"
address = "127.0.0.1:2465"
protocol = "smtp-submission"
security = "plain"

[[mail.listeners]]
name = "submissions"
listen = "127.0.0.1:1465"
protocol = "smtp-submission"
client_security = "passthrough"
upstreams = ["submission-a"]
load_balancing = "weighted-least-requests"

TLS a HTTP/3

Použijte manuální certifikáty nebo nechte Webship je spravovat.

Od verze Webship 1.4.0 si každá stránka může nezávisle zvolit svůj režim certifikátu. HTTP/3 používá odpovídající UDP posluchač; povolte HTTP/1.1 nebo HTTP/2, když stejná stránka TLS 1.3 také potřebuje kompatibilitu s TCP.

Veřejné výchozí nastavení pro každé místo s tradičním sdíleným místem
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"
certificate_mode = "per_site" # default public ACME certificate

[[sites]]
domain = "legacy.example.com"
root = "/srv/legacy"
certificate_mode = "shared" # legacy public multi-SAN certificate

Architektura certifikátů pro jednotlivé stránky

Vyberte důvěru certifikátu a měřítko nezávisle pro každou stránku.

Webship 1.4.0 přesouvá certificate_mode na každý záznam [[sites]]. Veřejné ACME pro jednotlivé stránky, veřejné DNS-01 shardy flotily, vestavěná soukromá CA, starší sdílený certifikát a ručně spravované certifikáty mohou koexistovat v jednom samostatném procesu.

per_site — veřejný certifikát

Výchozí. Objednejte jeden veřejný ACME certifikát důvěryhodný pro prohlížeče pro přesný název webu s TLS-ALPN-01.

flotila — veřejné DNS-01 částečky

Použijte veřejné vydání DNS-01 pro mnoho třetích a čtvrtých úrovní jmen pod explicitně registrovanými doménami. Jména zůstávají ve stabilních, hromadných certifikátových částech.

vložené — privátní CA

Vystavte samostatný certifikát v procesu z privátní CA Webship. Není vyžadován žádný veřejný ACME účet, DNS výzva, integrace registrátora ani příchozí port 443.

shared — starší multi-SAN

Ponechte starší veřejnou skupinu multi-SAN pro nasazení, která ji vyžaduje. Toto není výchozí nastavení a stále podléhá limitům identifikátoru veřejné CA.

Samostatná veřejná flotila DNS-01
[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

[automatic_tls.fleet]
shard_size = 64
batch_window_ms = 300000
weekly_certificate_limit = 50
emergency_certificate_reserve = 5
registered_domains = ["example.com"]

[automatic_tls.fleet.dns]
listen = "0.0.0.0:53"
nameservers = ["ns1.example.net"]
addresses = ["192.0.2.10"]
propagation_timeout_ms = 120000
resolver_url = "https://dns.google/resolve"
challenge_ttl_seconds = 900

[[sites]]
domain = "app.example.com"
root = "/srv/app"
certificate_mode = "fleet"

[[sites]]
domain = "media.app.example.com"
root = "/srv/media"
certificate_mode = "fleet"
Soukromá vestavěná CA pro stránky
[automatic_tls]
enabled = true
cache_dir = "/var/lib/webship/acme"

[acme_ca]
state_dir = "/var/lib/webship/acme-ca"
leaf_validity_days = 90

[[sites]]
domain = "internal.example.com"
root = "/srv/internal"
certificate_mode = "embedded"

Okrajová politika

Udržujte bezpečný základní stav nedotčený.

Webship ve výchozím nastavení aktivuje své hlavní ochranné vrstvy. Upravte limity podle svého zatížení a ověřte po každé změně pravidla nebo zásady hlavičky.

DDoS a politika hlaviček odpovědí
[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'"

Použijte normální režim pro běžný provoz, režim under_attack pro přísnější zpracování aktivních útoků a lockdown, když by měly zůstat k dispozici pouze sondy a výslovně povolené cesty.

Soukromá diagnostika

Prohlédněte okraj, aniž byste vystavili řídicí rovinu.

Statistiky a Prometheus metriky běží na samostatném autentikovaném listeneru. Instrumentace musí být povolena vždy, když je aktivní některý z koncových bodů.

Autentizovaná lokální pozorovatelnost
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"

Bezpečné operace

Záměrně znovu načtěte. Udržujte možnost obnovení blízko.

Přenačtení konfigurace

Po úpravě konfigurace založené na souboru pošlete SIGHUP. Webship ověří náhradu před jejím instalováním a zachová běžící konfiguraci, pokud ověření selže.

Upgrade a návrat zpět

Nainstalujte nový binární soubor vedle předchozí verze, ověřte produkční konfiguraci s ním a poté zkontrolujte stav, TLS, proxy a metriky. Ponechte předchozí binární soubor, dokud všechny kontroly neprojdou.

Příkazy pro reload a systemd
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 webship

Optimalizace řízená profilem

Sbírejte profily specifické pro cílový systém, aniž byste zaměňovali trénink a produkci.

Každý cíl Webship 1.5.0 má oddělené instrumentované CLI pro sběr nativních LLVM profilových dat cíle pod vaším reprezentativním provozem. Použijte přesnou verzi a cílový trojicí, cvičte trasy a protokoly, které jsou důležité, a ukončete proces způsobem, který umožní vyprázdnění každého souboru .profraw.

  1. Vyberte přesný cíl

    Stáhněte si PGO trénovací CLI, jehož vydaná verze a cílová trojice Rust přesně odpovídají runtime, který chcete optimalizovat. Nejprve ověřte jeho publikovaný SHA-256.

  2. Zachytit reprezentativní provoz

    Nastavte LLVM_PROFILE_FILE na zapisovatelný adresář, spusťte trénovací CLI s ověřenou kopií skutečné konfigurace, přehrávejte reprezentativní přímý a reverzní proxy provoz, poté Webship ukončete plynule.

  3. Sloučit surové profily

    Použijte llvm-profdata z kompilátoru vygenerovaného pro release. Sloučte každý vygenerovaný .profraw soubor do jednoho řídkého souboru webship.profdata.

  4. Znovu sestavit a zkontrolovat

    Používejte sloučený profil pouze pro přesný zdroj, kompilátor, poskytovatele kryptografie, sadu funkcí a cílový systém, který ho vytvořil. Před povýšením proveďte kontroly správnosti a výkonu.

Linux, macOS a OpenHarmony
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.5.0-<target> --config ./webship.toml
Windows PowerShell
New-Item -ItemType Directory -Force ./profiles
$env:LLVM_PROFILE_FILE = "$PWD/profiles/webship-%p-%m.profraw"
.\webship-pgo-training-1.5.0-<target>.exe --config .\webship.toml
Sloučit s odpovídajícím toolchainem LLVM
llvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdata

Reference příkazového řádku

Malá plocha, explicitní spuštění.

webship [OPTIONS] | webship update [OPTIONS]

-c, --config PATH
Vyberte soubor TOML. Pokud neexistuje, Webship jej vytvoří s privátním localhost TLS identitním certifikátem.
--check-config
Ověřte kompletní konfiguraci a ukončete bez spouštění posluchačů.
--print-effective-config
Tiskněte sloučenou efektivní konfiguraci bez tajemství.
aktualizace
Ověřte podepsaný komunitní manifest, vyberte tento přesný cílový platformní systém a nainstalujte novější verzi, pokud existuje.
--help / --version
Tiskněte nápovědu příkazu nebo nainstalovanou verzi Webship.

Běžné způsoby selhání

Začněte konfigurací, poté postupujte směrem ven.

  1. Spusťte --check-config a opravte první nahlášenou chybu; neznámé pole TOML jsou zamítnuta.
  2. Potvrďte, že nakonfigurované TCP a UDP porty jsou dostupné a povolené firewallem.
  3. Ověřte, že certifikát a klíč existují, jsou čitelné pro účet služby a tvoří odpovídající pár.
  4. Pro automatické TLS potvrďte, že každý nakonfigurovaný doménový název směřuje na hostitele Webship.
  5. Před testováním přes DNS nebo externí cestu zatížení zavolejte /health na místním posluchači aplikace.
  6. Dočasně povolte autentizovanou pozorovatelnost, když jsou vyžadovány runtime důkazy.