Webship dokumentáció

Telepítse, konfigurálja és automatizálja a Webship-t.

Konfigurálja, érvényesítse, telepítse és automatizálja az AI-native Webship élő szervert tömör TOML példákkal és verzióhoz kötött üzemeltetési útmutatással.

Dokumentáció verzió

Webship 1.5.0Jelenlegi

Kibocsátva 2026-09-21. Ez a URL a kiválasztott kiadáshoz van rögzítve.

Alapértelmezett hallgató
127.0.0.1:4433
Konfiguráció
TOML
TLS
TLS 1.3

Termék áttekintés

Egy szerver a hálózat és az alkalmazásod között.

Webship egy saját hostolt Rust edge és statikus web szerver. Egy futtatókörnyezet modern protokollokat kezel, alkalmazza az edge szabályzatot, fájlokat szolgál ki, és proxyként működik az alkalmazás kéréseihez.

Modern adatátvitel

Fogadja el a HTTP/1.1, HTTP/2 és HTTP/3 értékeket, TLS 1.3-vel és egy opcionális WebTransport végponttal.

Statikus és proxizott kiszolgálás

Statikus fájlok kiszolgálása érvényesítőkkel és előre tömörített mellékszoftverekkel, vagy az alkalmazásforgalom proxizása korlátos upstream poolokon keresztül.

Biztonságos alapértelmezett beállítások

Kezdje a WAF, DDoS-vezérlés, bot kihívás, válaszbiztonsági fejlécek, API Shield és pontfájl-védelem engedélyezésével.

Megfigyelhető műveletek

Használjon hitelesített statisztikákat, Prometheus-mutatókat, kérések azonosítóit, fokozatos újratöltéseket és az opcionális MCP vezérlési síkot.

Gyors kezdés

A kiadott bináristól az egészséges hallgatóig.

Indítás loopback-en, mindent ellenőrizzen a kötés előtt, és ellenőrizze a beépített egészségválaszt, mielőtt nyilvános forgalmat adna hozzá.

  1. Fájlok előkészítése

    Helyezze el a kiadott bináris fájlt, annak TOML konfigurációját, a statikus gyökérkönyvtárat, valamint bármely beállított TLS tanúsítványt és kulcsfájlt a gazdagépen.

  2. Érvényesítés és ellenőrzés

    Futtassa mindkét konfigurációs parancsot. Javítsa az első hibát, és ellenőrizze a szűrt hatékony eredményt az indítás előtt.

  3. Indítás privát módban

    Indítsa el a Webship-t a kiválasztott TOML fájl segítségével. Adjon hozzá egy teljes tanúsítványpárost, vagy használjon automatikus TLS-t, amikor az oldal készen áll a biztonságos nyilvános forgalomra.

  4. Ellenőrizze a futási környezetet

    Hívja a GET /health-t helyben. Ezután tesztelje a statikus útvonalakat, TLS-t, proxy útvonalakat, biztonsági szabályokat és az autentikált monitorozást.

Minimális config.toml
listen = "127.0.0.1:4433"
workers = 4
root = "./public"
Érvényesítés indítás előtt
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
Indítás és ellenőrzés
/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/health

Gyors indítási útmutató AI ügynökök számára

Csatlakoztass egy AI ágenst Webship-hoz öt sorban.

Csatlakoztassa a Claude Code-ot, OpenAI-t, DeepSeek-et vagy bármely kompatibilis MCP klienst egy privát SSH alagúton keresztül. Az ügynök egy hitelesített működési felületet kap anélkül, hogy megosztaná a nyilvános hallgatót vagy kiteszi az irányító hitelesítő adatokat az internetes forgalomnak.

Ötsoros MCP kliens konfiguráció
{
  "mcpServers": {
    "webship": { "url": "https://localhost:19443/mcp",
      "headers": { "Authorization": "Bearer <token>" } }
  } }

Statikus kiszolgálás

Szolgáltasson egy könyvtárat protokollismerő alapértékekkel.

Állítson be egy gyökérkönyvtárat globálisan vagy oldalanként. A TLS oldalak alapértelmezés szerint csak HTTP/3-t használnak; a tiszta szöveges oldalak alapértelmezettje HTTP/1.1 és H2C. Felülírhatja a HTTP/1.1, HTTP/2 és HTTP/3 beállításokat minden oldalon külön-külön.

Domain-specifikus statikus oldal
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"

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

A beépített útválasztó támogatja a GET és HEAD kéréseket, a bájttartományokat, a feltételes kéréseket, a validátorokat, valamint a .br, .zst és .gz kiegészítő fájlokat. A ponttal kezdődő fájlútvonalak alapértelmezetten elutasításra kerülnek; a .well-known továbbra is elérhető marad.

Alkalmazásforgalom

Irányítsa a kéréseket egy vagy több upstreamhez.

Engedélyezze a visszairányító proxyt, egyeztesse a hosztot és az elérési utat, majd határozzon meg egy végső feltétel nélküli házirendet. A Webship támogatja a korlátozott medencéket, az egészségellenőrzéseket, a terheléselosztást, az áramkör-megszakítókat, a biztonságos, test nélküli újrapróbálkozásokat, a WebSocketeket és a gyorsítótárazást.

Két-upstream API útvonal
[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 4. réteg

Proxy TCP és UDP forgalom HTTP útvonal nélkül.

A 4. réteg alapértelmezés szerint le van tiltva. Definiáljon névvel ellátott upstream-eket, független TCP és UDP szabályokat, hallgatókat és útvonalakat. A TCP támogatja a kapcsolati korlátokat, az állapotellenőrzéseket, a terheléselosztást, opcionálisan a PROXY protokollt, valamint a TLS továbbítást vagy megszüntetést. Az UDP korlátozott folyamokat és csoportosított fogadó munkásokat használ.

TCP és UDP proxy hallgatók
[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"]

Útvonalankénti kiszolgálás

Hozz létre határolt, CDN-stílusú gyorsítótárat a webhelyek közötti átlépés nélkül.

A gyorsítótár minden visszairányító proxy útvonalon van konfigurálva, nem globálisan. Válassz biztonságos módszereket és státuszokat, TTL-határokat, CDN-Cache-Control viselkedést, valamint a lekérdezéskulcs normalizálását az adott webhelyhez és útvonalhoz. A hitelesített, személyre szabott, privát és no-store válaszok alapértelmezés szerint nem gyorsítótárazhatók.

Útvonalankénti CDN-stílusú gyorsítótár politika
[[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"]

Helyi forgalmi kontextus

Alkalmazza a GeoIP szabályokat hosztolt keresési szolgáltatás nélkül.

Töltse be az ország, város és ASN adatokat helyi MaxMind-kompatibilis adatbázisokból. A GeoIP alapértelmezés szerint le van tiltva; tartsa naprakészen az adatbázis fájlokat, és döntse el, hogy a keresési hibák megtagadják-e vagy megkerülik a geo-függő szabályzatot, mielőtt engedélyezné.

Helyi GeoIP adatbázis konfiguráció
[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"

Levelezési protokollok

Útvonalazzon levelezési munkameneteket protokolltudatos ellenőrzésekkel.

Használja a külön e-mail adatplane-t az SMTP küldéshez, IMAP-hoz, POP3-hoz és a kapcsolódó protokolltudatos útválasztáshoz. A hallgatók használhatják a pass-through-t, implicit TLS-t vagy egy korlátozott STARTTLS frissítést. Tartsa az új hallgatókat loopback-en, amíg az upstream identitást, tanúsítványt, hitelesítést és TLS szabályzatot nem ellenőrizték.

SMTP beküldési átviteli (pass-through)
[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 és HTTP/3

Használjon kézi tanúsítványokat, vagy hagyja, hogy Webship kezelje azokat.

A Webship 1.4.0 óta minden webhely függetlenül kiválaszthatja a tanúsítvány üzemmódját. A HTTP/3 a megfelelő UDP hallgatót használja; engedélyezze a HTTP/1.1 vagy HTTP/2 opciót, ha ugyanazon TLS 1.3 webhelynek TCP kompatibilitásra is szüksége van.

Nyilvános, oldalankénti alapértelmezett régi megosztott oldallal
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

Webhelyenkénti tanúsítvány-architektúra

Válassz tanúsítvány-trustot és skálát minden webhelyhez külön-külön.

Webship 1.4.0 a certificate_mode-t minden [[sites]] bejegyzésre áthelyezi. Nyilvános per-site ACME, nyilvános DNS-01 flottamegosztott példányok, a beágyazott privát CA, a régi megosztott tanúsítvány és a manuális tanúsítványfájlok egy önálló folyamatban együtt létezhetnek.

on_site — nyilvános tanúsítvány

Az alapértelmezett. Rendelj egy böngésző által megbízhatónak tekintett nyilvános ACME tanúsítványt a webhely pontos nevére TLS-ALPN-01 segítségével.

flotta — nyilvános DNS-01 darabok

Használj nyilvános DNS-01 kiadást sok harmadik- és negyedik szintű névhez a kifejezetten regisztrált domainek alatt. A nevek stabil, csoportosított tanúsítványdarabokban maradnak.

beágyazott — privát CA

Adj ki külön tanúsítványt a folyamatban a Webship privát CA-jából. Nincs szükség nyilvános ACME fiókra, DNS-kihívásra, regisztrátori integrációra vagy bejövő 443-as portra.

megosztott — régi multi-SAN

Tartsd meg a régi nyilvános multi-SAN csoportot azokhoz a telepítésekhez, amelyekhez szükséges. Ez nem az alapértelmezett, és továbbra is a nyilvános CA azonosító korlátokra vonatkozik.

Önálló, nyilvános DNS-01 flott
[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"
Privát beágyazott CA webhely
[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"

Szélei irányelv

Őrizze meg a biztonságos alapbeállítást.

Webship alapértelmezés szerint engedélyezi fő védelmi rétegeit. Állítsa be a korlátokat a munkaterheléshez, és ellenőrizze minden szabály- vagy fejléc-politika változás után.

DDoS és válaszfejléc szabályzat
[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'"

Használja a normál módot a szokásos forgalomhoz, az under_attack módot a szigorúbb aktív támadás kezeléshez, és a lockdown módot, amikor csak próba kérések és kifejezetten engedélyezett útvonalak legyenek elérhetők.

Privát diagnosztika

Vizsgálja az edge-t anélkül, hogy felfedné a vezérlő síkot.

A statisztikák és a Prometheus metrikák külön hitelesített hallgatón futnak. Az instrumentációt mindig engedélyezni kell, amikor bármelyik végpont aktív.

Hitelesített helyi megfigyelhetőség
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"

Biztonságos műveletek

Töltse újra szándékosan. Tartsa közel a visszaállítást.

Konfiguráció újratöltése

SIGHUP küldése fájl-alapú konfiguráció szerkesztése után. Webship ellenőrzi a cserét telepítés előtt, és megtartja a futó konfigurációt, ha az ellenőrzés sikertelen.

Frissítés és visszagörgetés

Telepítse az új binárist a korábbi verzió mellé, ellenőrizze a termelési konfigurációt vele, majd ellenőrizze az egészséget, TLS-t, proxyzást és a metrikákat. Tartsa meg a korábbi binárist, amíg minden ellenőrző pont át nem megy.

Újratöltési és systemd parancsok
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

Profil-vezérelt optimalizáció

Gyűjtsön cél-őshonos profilokat anélkül, hogy összekeverné a képzést és a termelést.

Minden Webship 1.5.0 célpontnak külön, instrumentált CLI-je van a célpont natív LLVM profiladatainak gyűjtésére a képviselő forgalmad alatt. Használd a pontos verziót és céltriplettet, hajtsd végre a fontos útvonalakat és protokollokat, és állítsd le a folyamatot szépen, hogy minden .profraw fájl ki tudjon ürülni.

  1. Válassza ki a pontos célt

    Töltse le a PGO képzési CLI-t, amelynek kiadási verziója és Rust céltriplája pontosan megegyezik azzal a környezettel, amelyet optimalizálni kíván. Először ellenőrizze a közzétett SHA-256-ot.

  2. Rögzítsen reprezentatív forgalmat

    Állítsd az LLVM_PROFILE_FILE-t írható könyvtárra, indítsd el a tréning CLI-t egy ellenőrzött, valós konfigurációs példánnyal, játssz le reprezentatív közvetlen és fordított proxy forgalmat, majd állítsd le Webship-t ésszerű módon.

  3. Egyesítse a nyers profilokat

    Használja a kiadásra készült fordító által generált llvm-profdata-t. Egyesítse az összes kibocsátott .profraw fájlt egyetlen sparse webship.profdata fájlba.

  4. Újraépítés és ellenőrzés

    Alkalmazza az egyesített profilt csak azokra a pontos forrásokra, fordítóra, kriptográfiai szolgáltatóra, funkciókészletre és célra, amelyek létrehozták azt. Futtassa a helyességi és teljesítményellenőrzéseket a promóció előtt.

Linux, macOS és 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
Egyesítés a megfelelő LLVM eszközkészlettel
llvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdata

Parancssori hivatkozás

Kis felület, explict indítás.

webship [OPTIONS] | webship update [OPTIONS]

-c, --config PATH
Válassza ki a TOML fájlt. Ha az nem létezik, Webship létrehozza egy privát localhost TLS azonosítóval.
--check-config
Érvényesítse a teljes konfigurációt, és lépjen ki anélkül, hogy elindítaná a hallgatókat.
--print-effective-config
Nyomtassa ki az egyesített érvényes konfigurációt a titkok eltávolításával.
frissítés
Ellenőrizze az aláírt közösségi manifesztumot, válassza ki ezt a pontos platformcélt, és telepítsen egy újabb verziót, ha van.
--help / --version
Nyomtassa ki a parancs súgót vagy az telepített Webship verzióját.

Gyakori hibamódok

Kezdje a konfigurációval, majd haladjon kifelé.

  1. Futtassa a --check-config parancsot, és javítsa az első jelentett hibát; az ismeretlen TOML mezők elutasításra kerülnek.
  2. Ellenőrizze, hogy a konfigurált TCP és UDP portok elérhetők és a tűzfal által engedélyezettek legyenek.
  3. Ellenőrizze, hogy a tanúsítvány és a kulcs létezik-e, olvasható-e a szolgáltatásfiók számára, és egymáshoz illő párt alkotnak.
  4. Az automatikus TLS esetén ellenőrizze, hogy minden konfigurált domain a Webship hosztra oldódik.
  5. Hívja meg a /health útvonalat a helyi alkalmazás hallgatóján keresztül, mielőtt DNS-en vagy külső terhelési úton tesztelne.
  6. Ideiglenesen engedélyezze az hitelesített megfigyelhetőséget, amikor futásidejű bizonyíték szükséges.