Documentación de Webship

Instalar, configurar y automatizar Webship.

Configura, valida, despliega y automatiza el servidor de borde AI-Native Webship con ejemplos concisos en TOML y orientación operativa con versiones fijadas.

Versión de la documentación

Webship 1.0.0

Lanzado 2026-08-22. Esta URL está fijada a la versión seleccionada.

Escucha predeterminada
127.0.0.1:4433
Configuración
TOML
TLS
TLS 1.3

Resumen del producto

Un servidor entre la red y su aplicación.

Webship es un Rust de borde y servidor web estático autohospedado. Un runtime termina protocolos modernos, aplica políticas de borde, sirve archivos y realiza proxy de solicitudes de aplicaciones.

Transporte moderno

Acepta HTTP/1.1, HTTP/2 y HTTP/3, con TLS 1.3 y un endpoint opcional WebTransport.

Entrega estática y a través de proxy

Servir archivos estáticos con validadores y acompañantes precomprimidos, o enrutar el tráfico de la aplicación a través de grupos limitados de upstream.

Valores predeterminados seguros

Comienza con el WAF, controles DDoS, desafío de bots, cabeceras de seguridad de respuesta, API Shield y protección de archivos de puntos habilitada.

Operaciones observables

Utiliza estadísticas autenticadas, métricas de Prometheus, IDs de solicitud, recargas suaves y el plano de control opcional MCP.

Inicio rápido

Desde el binario de lanzamiento hasta un oyente saludable.

Inicia en loopback, valida todo antes de enlazar y verifica la respuesta de salud incorporada antes de agregar tráfico público.

  1. Preparar archivos

    Coloque el binario de la versión, su configuración TOML, la raíz estática y cualquier archivo de certificado y clave TLS configurados en el host.

  2. Validar e inspeccionar

    Ejecute ambos comandos de configuración. Corrija el primer error e inspeccione el resultado efectivo redactado antes del inicio.

  3. Iniciar de forma privada

    Inicie Webship con el archivo TOML seleccionado. Agregue un par completo de certificados o TLS automático cuando el sitio esté listo para tráfico público seguro.

  4. Verifica el tiempo de ejecución

    Llama a GET /health localmente. Luego prueba rutas estáticas, TLS, rutas de proxy, reglas de seguridad y monitoreo autenticado.

config.toml mínima
listen = "127.0.0.1:4433"
workers = 4
root = "./public"
Validar antes del inicio
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
Iniciar y verificar
/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/health

Guía de inicio rápido para agentes de IA

Conecta un agente de IA a Webship en cinco líneas.

Conecta Claude Code, OpenAI, DeepSeek o cualquier cliente compatible con MCP a través de un túnel SSH privado. El agente recibe una superficie de operaciones autenticada sin compartir el listener público ni exponer credenciales de control al tráfico de Internet.

Configuración del cliente MCP en cinco líneas
{
  "mcpServers": {
    "webship": { "url": "https://localhost:19443/mcp",
      "headers": { "Authorization": "Bearer <token>" } }
  } }

Entrega estática

Servir un directorio con valores predeterminados conscientes del protocolo.

Establece una raíz de manera global o por sitio. Los sitios TLS por defecto usan HTTP/3 solamente; los sitios en texto claro usan por defecto HTTP/1.1 y H2C. Sobrescribe HTTP/1.1, HTTP/2 y HTTP/3 de manera independiente para cada sitio.

Sitio estático específico de dominio
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"

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

El router incorporado soporta GET y HEAD, rangos de bytes, solicitudes condicionales, validadores y archivos auxiliares .br, .zst y .gz. Por defecto se rechazan las rutas de archivos con punto (dot-files); .well-known permanece disponible.

Tráfico de la aplicación

Enrutar solicitudes a uno o más upstreams.

Habilita el proxy inverso, coincide con un host y ruta, y luego define una política final incondicional. Webship admite grupos limitados, comprobaciones de salud, balanceo de carga, disyuntores, reintentos seguros sin cuerpo, WebSockets y almacenamiento en caché.

Ruta API de dos 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 y HTTP/3

Utilice certificados manuales o deje que Webship los gestione.

Webship acepta TLS 1.3. HTTP/3 se ejecuta sobre el listener UDP correspondiente; activa HTTP/1.1 o HTTP/2 explícitamente cuando un sitio TLS también necesita compatibilidad con TCP.

TLS automático 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"

Política de borde

Mantén la línea base de seguridad intacta.

Webship activa sus principales capas de protección por defecto. Ajuste los límites para su carga de trabajo y valide después de cada cambio de regla o política de encabezado.

Política de DDoS y cabecera de respuesta
[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 el modo normal para el tráfico regular, bajo_ataque para un manejo más estricto de ataques activos, y bloqueo cuando solo deberían permanecer disponibles las sondas y las rutas explícitamente permitidas.

Diagnósticos privados

Inspeccione el borde sin exponer el plano de control.

Las estadísticas y métricas de Prometheus se ejecutan en un receptor autenticado separado. La instrumentación debe estar habilitada siempre que cualquiera de los endpoints esté activo.

Observabilidad local autenticada
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"

Operaciones seguras

Recargue deliberadamente. Mantenga cerca la reversión.

Recarga de configuración

Envíe SIGHUP después de editar una configuración respaldada por archivo. Webship valida el reemplazo antes de instalarlo y mantiene la configuración en ejecución cuando la validación falla.

Actualización y reversión

Instale el nuevo binario junto a la versión anterior, valide la configuración de producción con él, luego verifique la salud, TLS, proxy y métricas. Mantenga el binario anterior hasta que todas las pruebas se aprueben.

Recargar y comandos de 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

Referencia de línea de comandos

Superficie pequeña, inicio explícito.

webship [OPTIONS] | webship update [OPTIONS]

-c, --config RUTA
Seleccione el archivo TOML. Si no existe, Webship lo crea con una identidad TLS privada de localhost.
--check-config
Valida la configuración completa y finaliza sin iniciar los listeners.
--print-efectivo-config
Imprima la configuración efectiva combinada con los secretos eliminados.
actualizar
Verifique el manifiesto de la comunidad firmado, seleccione este objetivo de plataforma exacto e instale una versión más reciente cuando exista.
--ayuda / --versión
Imprima la ayuda del comando o la versión instalada de Webship.

Modos de falla comunes

Comience con la configuración, luego expándase hacia afuera.

  1. Ejecute --check-config y corrija el primer error informado; los campos TOML desconocidos son rechazados.
  2. Confirme que los puertos TCP y UDP configurados estén disponibles y permitidos por el firewall.
  3. Confirme que el certificado y la clave existen, son legibles por la cuenta de servicio y forman un par coincidente.
  4. Para TLS automático, confirme que cada dominio configurado se resuelve al host Webship.
  5. Llame a /health en el oyente de la aplicación local antes de probar a través de DNS o una ruta de carga externa.
  6. Habilitar la observabilidad autenticada temporalmente cuando se requiera evidencia en tiempo de ejecución.