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.
Sediakan fail
Letakkan binari pelepasan, konfigurasi TOMLnya, akar statik, dan mana-mana fail sijil dan kunci TLS yang disediakan pada hos.
Sahkan dan periksa
Jalankan kedua-dua arahan konfigurasi. Betulkan ralat pertama dan periksa hasil berkesan yang disunting sebelum permulaan.
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.
Sahkan runtime
Panggil GET /health secara tempatan. Kemudian uji laluan statik, TLS, laluan proksi, peraturan keselamatan, dan pemantauan yang disahkan.
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/healthPanduan 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.
{
"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.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = truePenghala 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.
[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 dan HTTP/3
Gunakan sijil manual atau biarkan Webship mengurusnya.
Webship menerima TLS 1.3. HTTP/3 berjalan melalui pendengar UDP yang sepadan; aktifkan HTTP/1.1 atau HTTP/2 secara eksplisit apabila tapak TLS juga memerlukan keserasian 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"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.
[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.
[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.
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 webshipPengoptimuman berpandukan profil
Kumpul profil sasaran-asli tanpa mengelirukan latihan dan pengeluaran.
Setiap Webship sasaran 1.1 mempunyai CLI yang diperalatan secara berasingan untuk mengumpul data profil LLVM asli sasaran di bawah trafik wakil anda. Gunakan versi dan triple sasaran yang tepat, latihan laluan dan protokol yang penting, dan hentikan proses dengan cara yang teratur supaya ia dapat menulis setiap fail .profraw.
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.
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.
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.
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.
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.1.0-<target> --config ./webship.tomlNew-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.tomlllvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdataRujukan 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.
- Jalankan --check-config dan betulkan ralat pertama yang dilaporkan; medan TOML yang tidak dikenali ditolak.
- Sahkan porta TCP dan UDP yang dikonfigurasi adalah tersedia dan dibenarkan oleh firewall.
- Sahkan sijil dan kunci wujud, boleh dibaca oleh akaun perkhidmatan, dan membentuk pasangan yang sepadan.
- Untuk TLS automatik, sahkan setiap domain yang dikonfigurasikan menyelesaikan kepada hos Webship.
- Panggil /health pada pendengar aplikasi tempatan sebelum menguji melalui DNS atau laluan beban luaran.
- Dayakan keterlihatan yang diautentikasi secara sementara apabila bukti masa nyata diperlukan.