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.
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.
Convalida e controlla
Esegui entrambi i comandi di configurazione. Correggi il primo errore e controlla il risultato effettivo oscurato prima dell'avvio.
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.
Verifica il runtime
Chiama GET /health localmente. Poi testa percorsi statici, TLS, rotte proxy, regole di sicurezza e monitoraggio autenticato.
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/healthGuida 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.
{
"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.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueIl 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.
[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 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.
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.
[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.
[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.
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 webshipRiferimento 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.
- Eseguire --check-config e correggere il primo errore segnalato; i campi TOML sconosciuti vengono rifiutati.
- Confermare che le porte TCP e UDP configurate siano disponibili e consentite dal firewall.
- Confermare che il certificato e la chiave esistano, siano leggibili dall'account di servizio e formino una coppia corrispondente.
- Per il TLS automatico, confermare che ogni dominio configurato risolva all'host Webship.
- Chiamare /health sul listener dell'applicazione locale prima di testare tramite DNS o un percorso di carico esterno.
- Abilitare temporaneamente l'osservabilità autenticata quando sono necessari dati di runtime.