Documentation Webship

Installer, configurer et automatiser Webship.

Configurez, validez, déployez et automatisez le serveur de périphérie Webship natif à l'IA avec des exemples TOML concis et des instructions opérationnelles versionnées.

Version de la documentation

Webship 1.0.0

Publié 2026-08-22. Cette URL est liée à la version sélectionnée.

Écouteur par défaut
127.0.0.1:4433
Configuration
TOML
TLS
TLS 1.3

Aperçu du produit

Un serveur entre le réseau et votre application.

Webship est un serveur web statique et borde Rust auto-hébergé. Un runtime termine les protocoles modernes, applique la politique de bord, sert les fichiers et proxy les requêtes d'application.

Transport moderne

Acceptez HTTP/1.1, HTTP/2 et HTTP/3, avec TLS 1.3 et un point de terminaison optionnel WebTransport.

Distribution statique et proxy

Servir des fichiers statiques avec des validateurs et des sidecars précompressés, ou proxyifier le trafic des applications via des pools en amont limités.

Paramètres sécurisés par défaut

Commencez avec le WAF, les contrôles DDoS, le challenge bot, les en-têtes de sécurité des réponses, l'API Shield et la protection des fichiers commençant par un point activés.

Opérations observables

Utilisez des statistiques authentifiées, des métriques Prometheus, des identifiants de requête, des rechargements en douceur et le plan de contrôle optionnel MCP.

Démarrage rapide

Du binaire de version à un écouteur fonctionnel.

Démarrer sur le loopback, valider tout avant la liaison, et vérifier la réponse de santé intégrée avant d'ajouter le trafic public.

  1. Préparer les fichiers

    Placer le binaire de la version, sa configuration TOML, la racine statique et tous les fichiers de certificat et de clé TLS configurés sur l'hôte.

  2. Valider et inspecter

    Exécuter les deux commandes de configuration. Corriger la première erreur et inspecter le résultat effectif masqué avant le démarrage.

  3. Démarrer en privé

    Démarrer Webship avec le fichier TOML sélectionné. Ajouter une paire de certificats complète ou TLS automatique lorsque le site est prêt pour un trafic public sécurisé.

  4. Vérifiez le runtime

    Appelez GET /health localement. Ensuite, testez les chemins statiques, TLS, les routes proxy, les règles de sécurité et la surveillance authentifiée.

config.toml minimal
listen = "127.0.0.1:4433"
workers = 4
root = "./public"
Valider avant le démarrage
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
Démarrer et vérifier
/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/health

Guide de démarrage rapide pour les agents IA

Connectez un agent IA à Webship en cinq lignes.

Connectez Claude Code, OpenAI, DeepSeek ou tout client MCP compatible via un tunnel SSH privé. L'agent reçoit une surface d'opérations authentifiée sans partager l'écouteur public ni exposer les informations d'identification de contrôle au trafic Internet.

Configuration du client MCP en cinq lignes
{
  "mcpServers": {
    "webship": { "url": "https://localhost:19443/mcp",
      "headers": { "Authorization": "Bearer <token>" } }
  } }

Livraison statique

Servir un répertoire avec des paramètres par défaut adaptés au protocole.

Définissez un root globalement ou par site. Les sites TLS utilisent par défaut HTTP/3 uniquement ; les sites en clair utilisent par défaut HTTP/1.1 et H2C. Remplacez HTTP/1.1, HTTP/2 et HTTP/3 indépendamment pour chaque site.

Site statique spécifique au domaine
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"

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

Le routeur intégré prend en charge GET et HEAD, les plages d'octets, les requêtes conditionnelles, les validateurs et les sidecars .br, .zst et .gz. Les chemins vers les fichiers pointés sont refusés par défaut ; .well-known reste disponible.

Trafic applicatif

Acheminer les requêtes vers un ou plusieurs upstreams.

Activer le proxy inverse, faire correspondre un hôte et un chemin, puis définir une politique finale inconditionnelle. Webship prend en charge les pools limités, les vérifications de santé, l'équilibrage de charge, les disjoncteurs, les réessais sûrs sans corps, les WebSockets et la mise en cache.

Route API à deux flux en amont
[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 et HTTP/3

Utilisez des certificats manuels ou laissez Webship les gérer.

Webship accepte TLS 1.3. HTTP/3 s'exécute sur l'écoute UDP correspondante ; activez HTTP/1.1 ou HTTP/2 explicitement lorsqu'un site TLS nécessite également une compatibilité TCP.

TLS automatique avec 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"

Politique de périphérie

Maintenez la ligne de base sécurisée intacte.

Webship active par défaut ses principales couches de protection. Ajustez les limites pour votre charge de travail et validez après chaque modification de règle ou de politique d’en-tête.

Politique DDoS et en-têtes de réponse
[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'"

Utilisez le mode normal pour le trafic régulier, under_attack pour une gestion plus stricte des attaques actives, et lockdown lorsque seuls les sondages et les chemins explicitement autorisés doivent rester disponibles.

Diagnostics privés

Inspectez le bord sans exposer le plan de contrôle.

Les statistiques et les métriques Prometheus s'exécutent sur un écouteur authentifié séparé. L'instrumentation doit être activée chaque fois que l'un des points de terminaison est actif.

Observabilité locale authentifiée
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"

Opérations sûres

Rechargez délibérément. Gardez le retour en arrière proche.

Rechargement de la configuration

Envoyez SIGHUP après avoir modifié une configuration basée sur un fichier. Webship valide le remplacement avant de l’installer et conserve la configuration en cours si la validation échoue.

Mise à niveau et restauration

Installez le nouveau binaire à côté de la version précédente, validez la configuration de production avec celui-ci, puis vérifiez l'état, le TLS, la mise en proxy et les métriques. Gardez l'ancien binaire jusqu'à ce que toutes les étapes soient franchies.

Recharger et commandes 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

Référence de ligne de commande

Surface réduite, démarrage explicite.

webship [OPTIONS] | webship update [OPTIONS]

-c, --config CHEMIN
Sélectionnez le fichier TOML. S'il n'existe pas, Webship le crée avec une identité TLS locale privée.
--check-config
Validez la configuration complète et quittez sans démarrer les écouteurs.
--print-efficace-config
Affiche la configuration effective fusionnée avec les secrets supprimés.
mettre à jour
Vérifiez le manifeste communautaire signé, sélectionnez cette cible de plateforme exacte et installez une version plus récente lorsqu'elle existe.
--help / --version
Affiche l'aide de la commande ou la version installée de Webship.

Modes de défaillance courants

Commencez par la configuration, puis progressez vers l'extérieur.

  1. Exécutez --check-config et corrigez la première erreur signalée ; les champs TOML inconnus sont rejetés.
  2. Confirmez que les ports TCP et UDP configurés sont disponibles et autorisés par le pare-feu.
  3. Confirmez que le certificat et la clé existent, sont lisibles par le compte de service et forment une paire correspondante.
  4. Pour TLS automatique, confirmez que chaque domaine configuré résout vers l'hôte Webship.
  5. Appelez /health sur l’écouteur d’application local avant de tester via le DNS ou un chemin de charge externe.
  6. Activer temporairement l'observabilité authentifiée lorsque des preuves d'exécution sont nécessaires.