Productoverzicht
Één server tussen het netwerk en uw applicatie.
Webship is een zelfgehoste Rust edge- en statische webserver. Eén runtime beëindigt moderne protocollen, past edge-beleid toe, levert bestanden en proxyt applicatieverzoeken.
Moderne transport
Accepteer HTTP/1.1, HTTP/2 en HTTP/3, met TLS 1.3 en een optionele WebTransport-endpoint.
Statische en geproxiede levering
Dien statische bestanden met validators en voorgecomprimeerde zijwagens, of proxy applicatieverkeer via begrensde upstream-pools.
Veilige standaardinstellingen
Begin met de WAF, DDoS-controles, bot-uitdaging, responsbeveiligingsheaders, API Shield en dot-bestand bescherming ingeschakeld.
Observeerbare operaties
Gebruik geauthentiseerde statistieken, Prometheus-metrics, aanvraag-ID's, soepele herlaadacties en de optionele MCP-controlplane.
Snelle start
Van release-binaire naar gezonde listener.
Start op loopback, valideer alles voordat je bindt, en verifieer de ingebouwde health-respons voordat je publiek verkeer toevoegt.
Bereid bestanden voor
Plaats het release-binary, het TOML-configuratiebestand, de statische root, en eventuele geconfigureerde TLS-certificaat- en sleutelbestanden op de host.
Valideer en inspecteer
Voer beide configuratie-opdrachten uit. Los de eerste fout op en controleer het geanonimiseerde effectieve resultaat voordat je start.
Privé starten
Start Webship met het geselecteerde TOML-bestand. Voeg een volledig certificaatpaar of automatische TLS toe wanneer de site klaar is voor veilig openbaar verkeer.
Verifieer de runtime
Roep lokaal GET /health aan. Test daarna statische paden, TLS, proxyroutes, beveiligingsregels en geverifieerde monitoring.
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/healthSnelle startgids voor AI-agents
Verbind een AI-agent met Webship in vijf regels.
Verbind Claude Code, OpenAI, DeepSeek of een andere compatibele MCP-client via een privé SSH-tunnel. De agent ontvangt een geverifieerde operationele interface zonder de openbare luisteraar te delen of controlegegevens bloot te stellen aan internetverkeer.
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }Statische levering
Dien een directory met protocol-bewuste standaardinstellingen.
Stel een root globaal of per website in. TLS-sites standaard naar HTTP/3; niet-versleutelde sites standaard naar HTTP/1.1 en H2C. Overschrijf HTTP/1.1, HTTP/2 en HTTP/3 onafhankelijk voor elke site.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueDe ingebouwde router ondersteunt GET en HEAD, byte-ranges, voorwaardelijke verzoeken, validators en .br, .zst en .gz bijlagen. Paden naar dot-bestanden worden standaard geweigerd; .well-known blijft beschikbaar.
Applicatieverkeer
Routeer aanvragen naar een of meer upstreams.
Schakel reverse proxy in, stem een host en pad af, en definieer vervolgens een uiteindelijke onvoorwaardelijke policy. Webship ondersteunt begrensde pools, health checks, load balancing, circuit breakers, veilige bodyloze retries, WebSockets en 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 en HTTP/3
Gebruik handmatige certificaten of laat Webship ze beheren.
Webship 1.4.0 accepteert TLS 1.3 en laat elke site zijn certificaatmodus onafhankelijk selecteren. HTTP/3 gebruikt de bijbehorende UDP-luisteraar; schakel HTTP/1.1 of HTTP/2 in wanneer dezelfde TLS-site ook TCP-compatibiliteit nodig heeft.
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 certificateWebship 1.4.0 certificaatarchitectuur
Kies certificaatvertrouwen en schaal onafhankelijk voor elke site.
Webship 1.4.0 verplaatst certificate_mode naar elke [[sites]]-vermelding. Publieke per-site ACME, publieke DNS-01 fleet shards, de ingebouwde private CA, het legacy gedeelde certificaat en handmatige certificaatbestanden kunnen naast elkaar bestaan in één zelfstandig proces.
per_site — openbaar certificaat
De standaard. Bestel één browser-vertrouwd openbaar ACME-certificaat voor de exacte naam van de site met TLS-ALPN-01.
vloot — publieke DNS-01 scherven
Gebruik openbare DNS-01-uitgifte voor veel derde- en vierde-niveau namen onder expliciet geregistreerde domeinen. Namen blijven in stabiele, gebatchte certificaatscherven.
ingebouwd — private CA
Geef een afzonderlijk certificaat uit tijdens het proces vanuit de private CA van Webship. Geen openbaar ACME-account, DNS-uitdaging, registrar-integratie of inkomende poort 443 is vereist.
gedeeld — legacy multi-SAN
Behoud de legacy openbare multi-SAN groep voor implementaties die dit vereisen. Dit is niet de standaard en blijft onderhevig aan de limieten van de openbare CA-identificatie.
[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"[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"Edge-beleid
Houd de veilige basislijn intact.
Webship schakelt standaard zijn belangrijkste beschermingslagen in. Stel limieten af voor je workload en valideer na elke wijziging van regels of header-beleid.
[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'"Gebruik normale modus voor regulier verkeer, under_attack voor strengere actieve-aanvalsafhandeling, en lockdown wanneer alleen probes en expliciet toegestane paden beschikbaar moeten blijven.
Privédiagnostiek
Inspecteer de edge zonder het controlevlak bloot te stellen.
Statistieken en Prometheus-metrieken draaien op een aparte geverifieerde listener. Instrumentatie moet worden ingeschakeld wanneer een van de eindpunten actief is.
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"Veilige bewerkingen
Laad bewust opnieuw. Houd rollback dichtbij.
Configuratie herladen
Stuur SIGHUP na het bewerken van een op bestand gebaseerde configuratie. Webship valideert de vervanging voordat deze wordt geïnstalleerd en behoudt de draaiende configuratie wanneer de validatie faalt.
Upgrade en rollback
Installeer de nieuwe binary naast de vorige versie, valideer de productieconfiguratie ermee en verifieer daarna de gezondheid, TLS, proxying en metrics. Houd de vorige binary totdat alle controles slagen.
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 webshipProfielgestuurde optimalisatie
Verzamel doel-native profielen zonder training en productie te verwarren.
Elke Webship 1.4.0 target heeft een aparte geïnstrumenteerde CLI voor het verzamelen van target native LLVM-profielgegevens onder je representatieve verkeer. Gebruik de exacte versie en target triple, oefen de routes en protocollen die ertoe doen, en stop het proces soepel zodat elk .profraw-bestand kan worden gecleard.
Selecteer het exacte target
Download de PGO-trainings-CLI waarvan de releaseversie en Rust target triple exact overeenkomen met de runtime die je wilt optimaliseren. Verifieer eerst de gepubliceerde SHA-256.
Vang representatief verkeer op
Stel LLVM_PROFILE_FILE in op een schrijfbare map, start het trainings-CLI met een gevalideerde kopie van de echte configuratie, speel representatief direct en reverse-proxy verkeer opnieuw af, en stop dan Webship netjes.
Ruwe profielen samenvoegen
Gebruik llvm-profdata van de compiler generatie die is opgenomen voor de release. Voeg elk uitgegeven .profraw-bestand samen tot één sparce webship.profdata-bestand.
Herbouwen en gate
Pas het samengevoegde profiel alleen toe op de exacte bron, compiler, crypto-provider, functieset en target die het heeft gegenereerd. Voer correctheids- en prestaties-gates uit voordat je promoot.
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.4.0-<target> --config ./webship.tomlNew-Item -ItemType Directory -Force ./profiles
$env:LLVM_PROFILE_FILE = "$PWD/profiles/webship-%p-%m.profraw"
.\webship-pgo-training-1.4.0-<target>.exe --config .\webship.tomlllvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdataCommandoreferentie
Kleine oppervlakte, expliciete opstart.
webship [OPTIONS] | webship update [OPTIONS]
-c, --config PATH- Selecteer het TOML-bestand. Als het niet bestaat, maakt Webship het aan met een private localhost TLS-identiteit.
--check-config- Valideer de volledige configuratie en sluit af zonder listeners te starten.
--print-effective-config- Druk de samengevoegde effectieve configuratie af met verwijderde geheimen.
update- Verifieer het ondertekende communitymanifest, selecteer dit exacte platformdoel en installeer een nieuwere versie wanneer deze beschikbaar is.
--help / --version- Druk de hulp bij het commando af of de geïnstalleerde Webship-versie.
Veelvoorkomende foutmodi
Begin met de configuratie en werk dan naar buiten.
- Voer --check-config uit en corrigeer de eerst gemelde fout; onbekende TOML-velden worden geweigerd.
- Controleer of de geconfigureerde TCP- en UDP-poorten beschikbaar zijn en toegestaan door de firewall.
- Bevestig dat het certificaat en de sleutel bestaan, door het serviceaccount leesbaar zijn, en een bij elkaar passend paar vormen.
- Voor automatische TLS, bevestig dat elk geconfigureerd domein naar de Webship host resolveert.
- Bel /health op de lokale applicatieluisteraar voordat je test via DNS of een externe laadroute.
- Schakel tijdelijk geauthenticeerde observeerbaarheid in wanneer runtimebewijs vereist is.