Dokumentasi Webship

Pasang, konfigurasikan, dan automasikan Webship.

Konfigurasikan, sahkan, terapkan, dan automasikan pelayan tepi AI-Native Webship dengan contoh TOML yang ringkas dan panduan operasi yang diperingkat versi.

Versi dokumentasi

Webship 1.4.0Semasa

Dikeluarkan 2026-09-13. URL ini dipasangkan dengan pelepasan yang dipilih.

Pendengar lalai
127.0.0.1:4433
Konfigurasi
TOML
TLS
TLS 1.3

Gambaran keseluruhan produk

Satu pelayan antara rangkaian dan aplikasi anda.

Webship ialah Rust tepi dan pelayan web statik yang hos sendiri. Satu runtime menamatkan protokol moden, menerapkan polisi tepi, menyajikan fail, dan memajukan permintaan aplikasi.

Pengangkutan moden

Terima HTTP/1.1, HTTP/2, dan HTTP/3, dengan TLS 1.3 dan titik akhir WebTransport pilihan.

Penghantaran statik dan proksi

Hidangkan fail statik dengan validator dan sidecar yang terkompresi terlebih dahulu, atau proxikan trafik aplikasi melalui kolam huluan yang terbatas.

Tetapan selamat

Mula dengan WAF, kawalan DDoS, cabaran bot, header keselamatan respons, Perisai API, dan perlindungan fail titik diaktifkan.

Operasi yang boleh diperhatikan

Gunakan statistik yang disahkan, metrik Prometheus, ID permintaan, muat semula secara teratur, dan kawalan MCP pilihan.

Mula pantas

Daripada binari pelepasan kepada pendengar yang sihat.

Mula pada loopback, sahkan segala-galanya sebelum mengikat, dan sahkan respons kesihatan terbina sebelum menambahkan lalu lintas awam.

  1. Sediakan fail

    Letakkan binari pelepasan, konfigurasi TOMLnya, akar statik, dan mana-mana fail sijil dan kunci TLS yang disediakan pada hos.

  2. Sahkan dan periksa

    Jalankan kedua-dua arahan konfigurasi. Betulkan ralat pertama dan periksa hasil berkesan yang disunting sebelum permulaan.

  3. Mulakan secara peribadi

    Mulakan Webship dengan fail TOML yang dipilih. Tambah pasangan sijil lengkap atau TLS automatik apabila laman web bersedia untuk trafik awam yang selamat.

  4. Sahkan runtime

    Panggil GET /health secara tempatan. Kemudian uji laluan statik, TLS, laluan proksi, peraturan keselamatan, dan pemantauan yang disahkan.

Config.toml minimum
listen = "127.0.0.1:4433"
workers = 4
root = "./public"
Sahkan sebelum permulaan
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
Mula dan sahkan
/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/health

Panduan Mula Pantas untuk Ejen AI

Sambungkan ejen AI ke Webship dalam lima baris.

Sambungkan Claude Code, OpenAI, DeepSeek, atau mana-mana klien MCP yang serasi melalui terowong SSH peribadi. Ejen menerima permukaan operasi yang disahkan tanpa berkongsi pendengar awam atau mendedahkan kelayakan kawalan kepada trafik internet.

Konfigurasi klien MCP lima baris
{
  "mcpServers": {
    "webship": { "url": "https://localhost:19443/mcp",
      "headers": { "Authorization": "Bearer <token>" } }
  } }

Penghantaran statik

Melayani direktori dengan lalai yang menyedari protokol.

Tetapkan root secara global atau per tapak. Tapak TLS lalai kepada HTTP/3 sahaja; tapak teks jelas lalai kepada HTTP/1.1 dan H2C. Gantikan HTTP/1.1, HTTP/2, dan HTTP/3 secara bebas untuk setiap tapak.

Laman statik khusus domain
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"

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

Penghala terbina dalam menyokong GET dan HEAD, julat bait, permintaan bersyarat, validator, serta fail sisi .br, .zst, dan .gz. Laluan fail titik ditolak secara lalai; .well-known kekal tersedia.

Lalu lintas aplikasi

Hantar permintaan ke satu atau lebih huluan.

Dayakan pemajuan proksi terbalik, padankan host dan laluan, kemudian tetapkan polisi muktamad tanpa syarat. Webship menyokong kolam terhad, pemeriksaan kesihatan, pengimbangan beban, pemutus litar, cubaan semula selamat tanpa badan, WebSockets, dan penimbunan.

Rute API dua aliran hulu
[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 dan HTTP/3

Gunakan sijil manual atau biarkan Webship mengurusnya.

Webship 1.4.0 menerima TLS 1.3 dan membenarkan setiap laman memilih mod sijilnya secara bebas. HTTP/3 menggunakan pendengar UDP yang sepadan; aktifkan HTTP/1.1 atau HTTP/2 apabila laman TLS yang sama juga memerlukan keserasian TCP.

Default per-laman awam dengan laman kongsi warisan
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 certificate

Seni bina sijil Webship 1.4.0

Pilih kepercayaan sijil dan skala secara bebas untuk setiap laman.

Webship 1.4.0 memindahkan certificate_mode ke setiap entri [[sites]]. ACME awam setiap laman, serpihan armada DNS-01 awam, CA peribadi terbina dalam, sijil dikongsi warisan, dan fail sijil manual boleh wujud bersama dalam satu proses bersendirian.

setiap_laman — sijil awam

Lalai. Pesan satu sijil ACME awam yang dipercayai pelayar untuk nama tepat laman dengan TLS-ALPN-01.

armada — kepingan DNS-01 awam

Gunakan penerbitan DNS-01 awam untuk banyak nama peringkat ketiga dan keempat di bawah domain berdaftar yang jelas. Nama kekal dalam kepingan sijil berkumpulan yang stabil.

terbenam — CA peribadi

Keluarkan sijil berasingan dalam proses dari CA peribadi Webship. Tiada akaun ACME awam, cabaran DNS, integrasi pendaftar, atau port masuk 443 diperlukan.

bersama — multi-SAN warisan

Kekalkan kumpulan multi-SAN awam warisan untuk pengedaran yang memerlukannya. Ini bukan lalai dan tetap tertakluk kepada had pengecam CA awam.

Armada DNS-01 awam yang berdiri sendiri
[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"
Laman CA peribadi terbina dalam
[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"

Polisi tepi

Kekalkan garis asas keselamatan.

Webship mengaktifkan lapisan perlindungan utamanya secara lalai. Laraskan had untuk beban kerja anda dan sahkan selepas setiap perubahan peraturan atau polisi tajuk.

Dasar DDoS dan pengepala-respons
[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'"

Gunakan mod normal untuk trafik biasa, under_attack untuk pengendalian serangan aktif yang lebih ketat, dan lockdown apabila hanya probe dan laluan yang dibenarkan secara eksplisit yang harus tersedia.

Diagnostik peribadi

Periksa tepi tanpa mendedahkan pesawat kawalan.

Statistik dan metrik Prometheus dijalankan pada pendengar yang diautentikasi secara berasingan. Instrumentasi mesti diaktifkan setiap kali salah satu titik akhir aktif.

Kesedaran tempatan yang diautentikasi
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"

Operasi selamat

Muat semula dengan sengaja. Kekalkan kembali dengan dekat.

Muat semula konfigurasi

Hantar SIGHUP selepas mengedit konfigurasi berpandukan fail. Webship mengesahkan penggantian sebelum memasangnya dan mengekalkan konfigurasi yang sedang berjalan apabila pengesahan gagal.

Kemas kini dan kembalikan

Pasang binari baru di sebelah versi sebelumnya, sahkan konfigurasi pengeluaran dengannya, kemudian periksa kesihatan, TLS, proksi, dan metrik. Simpan binari sebelumnya sehingga setiap pintu lulus.

Arahan muat semula dan 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

Pengoptimuman berpandukan profil

Kumpul profil sasaran-asli tanpa mengelirukan latihan dan pengeluaran.

Setiap Webship 1.4.0 sasaran mempunyai CLI yang bersenjatakan berasingan untuk mengumpul data profil LLVM asli sasaran di bawah trafik wakil anda. Gunakan versi dan triple sasaran yang tepat, gunakan laluan dan protokol yang penting, dan hentikan proses dengan cara yang betul supaya ia boleh mengosongkan setiap fail .profraw.

  1. Pilih sasaran yang tepat

    Muat turun CLI latihan PGO yang versi rilisan dan Rust target triplennya sepadan dengan tepat dengan runtime yang anda ingin optimalkan. Sahkan SHA-256 yang diterbitkan terlebih dahulu.

  2. Tangkap trafik perwakilan

    Tetapkan LLVM_PROFILE_FILE ke direktori yang boleh ditulis, mulakan CLI latihan dengan salinan konfigurasi sebenar yang disahkan, ulang semula trafik wakil langsung dan proksi terbalik, kemudian hentikan Webship dengan cara yang teratur.

  3. Gabungkan profil mentah

    Gunakan llvm-profdata dari generasi penyusun yang direkodkan untuk rilis. Gabungkan setiap fail .profraw yang dikeluarkan menjadi satu fail webship.profdata yang jarang.

  4. Bina semula dan periksa

    Terapkan profil yang digabungkan hanya pada sumber, penyusun, penyedia kripto, set ciri, dan sasaran yang tepat yang menghasilkannya. Jalankan pintu kebenaran dan prestasi sebelum promosi.

Linux, macOS, dan OpenHarmony
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.4.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.4.0-<target>.exe --config .\webship.toml
Gabungkan dengan rantaian alat LLVM yang sepadan
llvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdata

Rujukan baris arahan

Permukaan kecil, permulaan yang jelas.

webship [OPTIONS] | webship update [OPTIONS]

-c, --config PATH
Pilih fail TOML. Jika ia tidak wujud, Webship akan menciptanya dengan identiti TLS localhost peribadi.
--check-config
Sahkan konfigurasi lengkap dan keluar tanpa memulakan pendengar.
--print-effective-config
Cetak konfigurasi berkesan gabungan dengan rahsia dibuang.
kemaskini
Sahkan manifest komuniti yang ditandatangani, pilih sasaran platform yang tepat, dan pasang versi yang lebih baru apabila ada.
--help / --version
Cetak arahan bantuan atau versi Webship yang dipasang.

Mod kegagalan biasa

Mula dengan konfigurasi, kemudian bergerak ke luar.

  1. Jalankan --check-config dan betulkan ralat pertama yang dilaporkan; medan TOML yang tidak dikenali ditolak.
  2. Sahkan porta TCP dan UDP yang dikonfigurasi adalah tersedia dan dibenarkan oleh firewall.
  3. Sahkan sijil dan kunci wujud, boleh dibaca oleh akaun perkhidmatan, dan membentuk pasangan yang sepadan.
  4. Untuk TLS automatik, sahkan setiap domain yang dikonfigurasikan menyelesaikan kepada hos Webship.
  5. Panggil /health pada pendengar aplikasi tempatan sebelum menguji melalui DNS atau laluan beban luaran.
  6. Dayakan keterlihatan yang diautentikasi secara sementara apabila bukti masa nyata diperlukan.