Documentazione di Webship

Installa, configura e automatizza Webship.

Configura, convalida, distribuisci e automatizza il server edge AI-Native Webship con esempi TOML concisi e linee guida operative versionate.

Versione della documentazione

Webship 1.1.0Corrente

Rilasciato 2026-08-23. Questo URL è fissato alla release selezionata.

Listener predefinito
127.0.0.1:4433
Configurazione
TOML
TLS
TLS 1.3

Panoramica del prodotto

Un server tra la rete e la tua applicazione.

Webship è un server web self-hosted Rust edge e statico. Un runtime gestisce i protocolli moderni, applica la policy edge, serve i file e fa da proxy per le richieste delle applicazioni.

Trasporto moderno

Accetta HTTP/1.1, HTTP/2 e HTTP/3, con TLS 1.3 e un endpoint WebTransport opzionale.

Distribuzione statica e tramite proxy

Servire file statici con validatori e sidecar precompressi, o fare da proxy per il traffico applicativo tramite pool upstream limitati.

Impostazioni sicure predefinite

Iniziare con WAF, controlli DDoS, challenge per bot, header di sicurezza per le risposte, API Shield e protezione dei file con punto abilitati.

Operazioni osservabili

Usare statistiche autenticate, metriche Prometheus, ID delle richieste, ricariche graduali e il piano di controllo opzionale MCP.

Avvio rapido

Dal binary di rilascio al listener sano.

Avvia sul loopback, valida tutto prima di effettuare il binding e verifica la risposta integrata di salute prima di aggiungere il traffico pubblico.

  1. Prepara i file

    Posiziona il binario di rilascio, la sua configurazione TOML, la root statica e eventuali file di certificato e chiave TLS configurati sull'host.

  2. Convalida e controlla

    Esegui entrambi i comandi di configurazione. Correggi il primo errore e controlla il risultato effettivo oscurato prima dell'avvio.

  3. Inizia in privato

    Avvia Webship con il file TOML selezionato. Aggiungi una coppia completa di certificati o TLS automatico quando il sito è pronto per il traffico pubblico sicuro.

  4. Verifica il runtime

    Chiama GET /health localmente. Poi testa percorsi statici, TLS, rotte proxy, regole di sicurezza e monitoraggio autenticato.

config.toml minima
listen = "127.0.0.1:4433"
workers = 4
root = "./public"
Convalida prima dell'avvio
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
Avvia e verifica
/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/health

Guida rapida per agenti AI

Collega un agente AI a Webship in cinque linee.

Collega Claude Code, OpenAI, DeepSeek o qualsiasi client compatibile MCP attraverso un tunnel SSH privato. L'agente riceve una superficie operativa autenticata senza condividere il listener pubblico o esporre le credenziali di controllo al traffico Internet.

Configurazione client MCP in cinque linee
{
  "mcpServers": {
    "webship": { "url": "https://localhost:19443/mcp",
      "headers": { "Authorization": "Bearer <token>" } }
  } }

Distribuzione statica

Servi una directory con impostazioni predefinite consapevoli del protocollo.

Imposta una root globalmente o per sito. I siti TLS impostano di default solo HTTP/3; i siti in testo semplice impostano di default HTTP/1.1 e H2C. Sovrascrivi HTTP/1.1, HTTP/2 e HTTP/3 indipendentemente per ciascun sito.

Sito statico specifico del dominio
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"

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

Il router integrato supporta GET e HEAD, intervalli di byte, richieste condizionali, validatori e sidecar .br, .zst e .gz. I percorsi dei file con punto sono rifiutati per impostazione predefinita; .well-known rimane disponibile.

Traffico dell'applicazione

Instrada le richieste verso uno o più upstream.

Abilita il proxy inverso, abbina un host e un percorso, quindi definisci una politica finale incondizionata. Webship supporta pool limitati, controlli di integrità, bilanciamento del carico, interruttori di circuito, retry sicuri senza corpo, WebSocket e caching.

Rotta API a due upstream
[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

TLS e HTTP/3

Usare certificati manuali o lasciare che Webship li gestisca.

Webship accetta TLS 1.3. HTTP/3 viene eseguito sul listener UDP corrispondente; abilita HTTP/1.1 o HTTP/2 esplicitamente quando un sito TLS necessita anche della compatibilità TCP.

TLS automatico con TLS-ALPN-01
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"

Policy di edge

Mantieni intatto il baseline di sicurezza.

Webship abilita i suoi principali livelli di protezione per impostazione predefinita. Regola i limiti in base al tuo carico di lavoro e valida dopo ogni modifica di regola o policy di intestazione.

Politica DDoS e intestazioni di risposta
[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'"

Usa la modalità normale per il traffico regolare, under_attack per una gestione più severa degli attacchi attivi, e lockdown quando devono rimanere disponibili solo sonde e percorsi esplicitamente consentiti.

Diagnostica privata

Ispeziona il bordo senza esporre il piano di controllo.

Statistiche e metriche Prometheus vengono eseguite su un listener autenticato separato. L'instrumentazione deve essere abilitata ogni volta che uno dei due endpoint è attivo.

Osservabilità locale autenticata
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"

Operazioni sicure

Ricarica deliberatamente. Mantieni il rollback a portata di mano.

Ricarica della configurazione

Invia SIGHUP dopo aver modificato una configurazione basata su file. Webship valida la sostituzione prima di installarla e mantiene la configurazione in esecuzione quando la validazione fallisce.

Aggiorna e ripristina

Installa il nuovo binario accanto alla versione precedente, convalida la configurazione di produzione con esso, quindi verifica la salute, TLS, proxying e metriche. Mantieni il binario precedente fino a quando tutti i controlli non saranno superati.

Comandi di ricarica e 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

Ottimizzazione guidata dal profilo

Raccogli profili nativi per l’obiettivo senza confondere addestramento e produzione.

Ogni target Webship 1.1 ha una CLI strumentata separata per raccogliere i dati del profilo LLVM nativo del target sotto il tuo traffico rappresentativo. Usa la versione esatta e il triple target, esercita le rotte e i protocolli che contano, e arresta il processo in modo sicuro in modo che possa scrivere ogni file .profraw.

  1. Seleziona l’obiettivo esatto

    Scarica il CLI di addestramento PGO la cui versione di rilascio e il triple target Rust corrispondano esattamente all’ambiente di runtime che intendi ottimizzare. Verifica prima il suo SHA-256 pubblicato.

  2. Catturare il traffico rappresentativo

    Impostare LLVM_PROFILE_FILE su una directory scrivibile, avviare il CLI di addestramento con una copia verificata della configurazione reale, riprodurre il traffico rappresentativo diretto e tramite proxy inverso, quindi fermare Webship con calma.

  3. Unire i profili raw

    Usare llvm-profdata dalla generazione del compilatore registrata per la release. Unire ogni file .profraw emesso in un unico file sparse webship.profdata.

  4. Ricostruisci e verifica

    Applica il profilo unificato solo alla sorgente, al compilatore, al provider crittografico, all'insieme di funzionalità e all'obiettivo esatti che lo hanno generato. Esegui controlli di correttezza e prestazioni prima della promozione.

Linux, macOS e OpenHarmony
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.1.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.1.0-<target>.exe --config .\webship.toml
Unire con la toolchain LLVM corrispondente
llvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdata

Riferimento da linea di comando

Superficie piccola, avvio esplicito.

webship [OPTIONS] | webship update [OPTIONS]

-c, --config PATH
Seleziona il file TOML. Se non esiste, Webship lo crea con un'identità TLS localhost privata.
--check-config
Convalida la configurazione completa ed esci senza avviare i listener.
--print-effective-config
Stampa la configurazione effettiva unita con i segreti rimossi.
update
Verifica il manifesto comunitario firmato, seleziona esattamente questo target di piattaforma e installa una versione più recente quando disponibile.
--help / --version
Stampa la guida ai comandi o la versione installata di Webship.

Modalità di errore comuni

Iniziare con la configurazione, quindi procedere verso l'esterno.

  1. Eseguire --check-config e correggere il primo errore segnalato; i campi TOML sconosciuti vengono rifiutati.
  2. Confermare che le porte TCP e UDP configurate siano disponibili e consentite dal firewall.
  3. Confermare che il certificato e la chiave esistano, siano leggibili dall'account di servizio e formino una coppia corrispondente.
  4. Per il TLS automatico, confermare che ogni dominio configurato risolva all'host Webship.
  5. Chiamare /health sul listener dell'applicazione locale prima di testare tramite DNS o un percorso di carico esterno.
  6. Abilitare temporaneamente l'osservabilità autenticata quando sono necessari dati di runtime.