Ikhtisar produk
Satu server di antara jaringan dan aplikasi Anda.
Webship adalah server web edge dan statis Rust yang dihosting sendiri. Satu runtime menangani protokol modern, menerapkan kebijakan edge, menyajikan file, dan memproxy permintaan aplikasi.
Transportasi modern
Terima HTTP/1.1, HTTP/2, dan HTTP/3, dengan TLS 1.3 dan endpoint opsional WebTransport.
Pengiriman statis dan melalui proxy
Sajikan file statis dengan validator dan sidecar terkompresi sebelumnya, atau proxy lalu lintas aplikasi melalui pool hulu yang terbatas.
Default yang aman
Mulailah dengan WAF, kontrol DDoS, tantangan bot, header keamanan respons, API Shield, dan perlindungan file titik diaktifkan.
Operasi yang dapat diamati
Gunakan statistik yang diautentikasi, metrik Prometheus, ID permintaan, pemuatan ulang yang lembut, dan plane kontrol opsional MCP.
Mulai cepat
Dari binary rilis ke listener yang sehat.
Mulai pada loopback, validasi semuanya sebelum mengikat, dan periksa respons kesehatan bawaan sebelum menambahkan lalu lintas publik.
Siapkan file
Letakkan binari rilis, konfigurasi TOML-nya, root statis, dan file sertifikat TLS serta kunci yang dikonfigurasi pada host.
Validasi dan periksa
Jalankan kedua perintah konfigurasi. Perbaiki kesalahan pertama dan periksa hasil efektif yang telah disunting sebelum memulai.
Mulai secara pribadi
Mulai Webship dengan file TOML yang dipilih. Tambahkan pasangan sertifikat lengkap atau TLS otomatis ketika situs siap untuk lalu lintas publik yang aman.
Verifikasi runtime
Panggil GET /health secara lokal. Lalu uji jalur statis, TLS, rute proxy, aturan keamanan, dan pemantauan yang diautentikasi.
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 Memulai Cepat untuk Agen AI
Hubungkan agen AI ke Webship dalam lima baris.
Hubungkan Claude Code, OpenAI, DeepSeek, atau klien MCP yang kompatibel melalui tunnel SSH pribadi. Agen menerima permukaan operasi yang terotentikasi tanpa membagikan listener publik atau mengekspos kredensial kontrol ke lalu lintas internet.
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }Pengiriman statis
Layani direktori dengan default yang sesuai dengan protokol.
Tetapkan root secara global atau per situs. Situs TLS default ke HTTP/3 saja; situs cleartext default ke HTTP/1.1 dan H2C. Timpa HTTP/1.1, HTTP/2, dan HTTP/3 secara independen untuk setiap situs.
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueRouter bawaan mendukung GET dan HEAD, rentang byte, permintaan kondisi, validator, serta file samping .br, .zst, dan .gz. Jalur file titik ditolak secara default; .well-known tetap tersedia.
Lalu lintas aplikasi
Rutekan permintaan ke satu atau lebih upstream.
Aktifkan proxy balik, cocokkan host dan jalur, lalu tentukan kebijakan final tanpa syarat. Webship mendukung pool terbatas, pengecekan kesehatan, penyeimbangan beban, pemutus sirkuit, percobaan ulang aman tanpa tubuh, WebSockets, dan 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 dan HTTP/3
Gunakan sertifikat manual atau biarkan Webship mengelolanya.
Webship menerima TLS 1.3. HTTP/3 berjalan di atas listener UDP yang cocok; aktifkan HTTP/1.1 atau HTTP/2 secara eksplisit ketika sebuah situs TLS juga membutuhkan kompatibilitas 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"Kebijakan edge
Pertahankan baseline aman tetap utuh.
Webship mengaktifkan lapisan perlindungan utamanya secara default. Sesuaikan batas untuk beban kerja Anda dan lakukan validasi setelah setiap perubahan aturan atau kebijakan header.
[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 mode normal untuk lalu lintas biasa, under_attack untuk penanganan serangan aktif yang lebih ketat, dan lockdown ketika hanya probe dan jalur yang diizinkan secara eksplisit yang harus tetap tersedia.
Diagnostik pribadi
Periksa edge tanpa mengekspos control plane.
Statistik dan metrik Prometheus dijalankan pada pendengar terotentikasi terpisah. Instrumentasi harus diaktifkan kapan pun salah satu endpoint 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 aman
Muat ulang dengan sengaja. Pertahankan rollback tetap dekat.
Memuat ulang konfigurasi
Kirim SIGHUP setelah mengedit konfigurasi berbasis file. Webship memvalidasi pengganti sebelum menginstalnya dan mempertahankan konfigurasi yang berjalan ketika validasi gagal.
Tingkatkan dan kembalikan
Pasang binari baru di samping versi sebelumnya, validasi konfigurasi produksi dengan binari tersebut, kemudian verifikasi kesehatan, TLS, proxy, dan metrik. Simpan binari sebelumnya sampai setiap prosedur lolos.
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 webshipOptimisasi berbasis profil
Kumpulkan profil target-native tanpa membingungkan pelatihan dan produksi.
Setiap target Webship 1.1 memiliki CLI terinstrumentasi terpisah untuk mengumpulkan data profil LLVM target-native di bawah lalu lintas representatif Anda. Gunakan versi dan target triple yang tepat, jalankan rute dan protokol yang penting, dan hentikan proses dengan cara yang tepat sehingga dapat mengosongkan setiap file .profraw.
Pilih target yang tepat
Unduh CLI pelatihan PGO yang versi rilis dan triple target Rust-nya tepat sama dengan runtime yang ingin Anda optimalkan. Verifikasi SHA-256 yang diterbitkan terlebih dahulu.
Tangkap lalu lintas perwakilan
Tetapkan LLVM_PROFILE_FILE ke direktori yang dapat ditulis, mulai CLI pelatihan dengan salinan konfigurasi nyata yang telah divalidasi, putar ulang lalu lintas perwakilan langsung dan melalui proxy terbalik, kemudian hentikan Webship dengan aman.
Gabungkan profil mentah
Gunakan llvm-profdata dari generasi compiler yang direkam untuk rilis. Gabungkan setiap file .profraw yang dikeluarkan menjadi satu file sparse webship.profdata.
Buat ulang dan lakukan pemeriksaan
Terapkan profil yang digabungkan hanya pada sumber, kompiler, penyedia kripto, set fitur, dan target yang tepat yang menghasilkannya. Jalankan pemeriksaan korektansi dan kinerja 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.profdataReferensi baris perintah
Permukaan kecil, startup eksplisit.
webship [OPTIONS] | webship update [OPTIONS]
-c, --config JALUR- Pilih file TOML. Jika tidak ada, Webship akan membuatnya dengan identitas TLS localhost pribadi.
--periksa-konfigurasi- Validasi konfigurasi lengkap dan keluar tanpa memulai listener.
--print-efektif-config- Cetak konfigurasi efektif yang digabungkan dengan rahasia dihapus.
memperbarui- Verifikasi manifest komunitas yang ditandatangani, pilih target platform ini secara tepat, dan instal versi lebih baru ketika ada.
--membantu / --versi- Cetak bantuan perintah atau versi Webship yang terpasang.
Mode kegagalan umum
Mulailah dengan konfigurasi, kemudian bergerak ke luar.
- Jalankan --check-config dan perbaiki kesalahan pertama yang dilaporkan; field TOML yang tidak dikenal akan ditolak.
- Pastikan port TCP dan UDP yang dikonfigurasi tersedia dan diizinkan oleh firewall.
- Konfirmasi bahwa sertifikat dan kunci ada, dapat dibaca oleh akun layanan, dan membentuk pasangan yang cocok.
- Untuk TLS otomatis, pastikan setiap domain yang dikonfigurasi mengarah ke host Webship.
- Panggil /health pada listener aplikasi lokal sebelum menguji melalui DNS atau jalur beban eksternal.
- Aktifkan observabilitas yang diautentikasi sementara ketika bukti runtime diperlukan.