Dokumentasi Webship

Instal, konfigurasikan, dan otomatisasi Webship.

Konfigurasikan, validasi, terapkan, dan otomatisasi server edge Webship AI-Native dengan contoh TOML yang ringkas dan panduan operasi yang di-pinversi.

Versi dokumentasi

Webship 1.0.0

Dirilis 2026-08-22. URL ini ditetapkan pada rilis yang dipilih.

Pendengar default
127.0.0.1:4433
Konfigurasi
TOML
TLS
TLS 1.3

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.

  1. Siapkan file

    Letakkan binari rilis, konfigurasi TOML-nya, root statis, dan file sertifikat TLS serta kunci yang dikonfigurasi pada host.

  2. Validasi dan periksa

    Jalankan kedua perintah konfigurasi. Perbaiki kesalahan pertama dan periksa hasil efektif yang telah disunting sebelum memulai.

  3. 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.

  4. Verifikasi runtime

    Panggil GET /health secara lokal. Lalu uji jalur statis, TLS, rute proxy, aturan keamanan, dan pemantauan yang diautentikasi.

config.toml minimal
listen = "127.0.0.1:4433"
workers = 4
root = "./public"
Validasi sebelum memulai
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
/usr/local/bin/webship --print-effective-config --config /etc/webship/production.toml
Mulai dan verifikasi
/usr/local/bin/webship --config /etc/webship/production.toml
curl --http3-only --insecure https://127.0.0.1:4433/health

Panduan 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.

Konfigurasi klien MCP lima baris
{
  "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.

Situs statis spesifik domain
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"

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

Router 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.

Rute API dua-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 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.

TLS otomatis dengan 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"

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.

Kebijakan DDoS dan header 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 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.

Observabilitas lokal 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 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.

Perintah reload 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

Referensi 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.

  1. Jalankan --check-config dan perbaiki kesalahan pertama yang dilaporkan; field TOML yang tidak dikenal akan ditolak.
  2. Pastikan port TCP dan UDP yang dikonfigurasi tersedia dan diizinkan oleh firewall.
  3. Konfirmasi bahwa sertifikat dan kunci ada, dapat dibaca oleh akun layanan, dan membentuk pasangan yang cocok.
  4. Untuk TLS otomatis, pastikan setiap domain yang dikonfigurasi mengarah ke host Webship.
  5. Panggil /health pada listener aplikasi lokal sebelum menguji melalui DNS atau jalur beban eksternal.
  6. Aktifkan observabilitas yang diautentikasi sementara ketika bukti runtime diperlukan.