ภาพรวมผลิตภัณฑ์
เซิร์ฟเวอร์หนึ่งตัวระหว่างเครือข่ายและแอปพลิเคชันของคุณ
Webship เป็น Rust ขอบเขตที่โฮสต์ด้วยตนเองและเซิร์ฟเวอร์เว็บสแตติก หนึ่งรันไทม์ยุติโปรโตคอลสมัยใหม่ ใช้นโยบายขอบเขต ให้บริการไฟล์ และโปรกซีคำขอแอปพลิเคชัน
การขนส่งสมัยใหม่
ยอมรับ HTTP/1.1, HTTP/2, และ HTTP/3, พร้อมกับ TLS 1.3 และจุดปลายทาง WebTransport ทางเลือก
การจัดส่งแบบคงที่และแบบพร็อกซี
ให้บริการไฟล์สถิติด้วยตัวตรวจสอบและตัวเสริมที่บีบอัดล่วงหน้า หรือพร็อกซี่การจราจรของแอปพลิเคชันผ่านกลุ่มต้นน้ำที่จำกัด
ค่าเริ่มต้นที่ปลอดภัย
เริ่มต้นด้วย WAF, การควบคุม DDoS, การทดสอบบ็อต, เฮดเดอร์ความปลอดภัยของการตอบสนอง, API Shield, และการป้องกันไฟล์จุดที่เปิดใช้งาน
การดำเนินงานที่สามารถสังเกตได้
ใช้สถิติที่ยืนยันแล้ว, เมตริกของ Prometheus, รหัสคำขอ, การรีโหลดอย่างนุ่มนวล, และแผงควบคุม MCP ทางเลือก
เริ่มต้นอย่างรวดเร็ว
จากไบนารีเวอร์ชันที่ปล่อยไปสู่ผู้ฟังที่ทำงานปกติ
เริ่มต้นบน loopback, ตรวจสอบทุกอย่างก่อนผูก, และยืนยันการตอบกลับสุขภาพในตัวก่อนเพิ่มทราฟฟิกสาธารณะ
เตรียมไฟล์
วางไฟล์ไบนารีสำหรับการปล่อย, ไฟล์การตั้งค่า TOML, รากสถิติคงที่ และไฟล์ใบรับรอง TLS และคีย์ที่ตั้งค่าไว้ใด ๆ บนโฮสต์
ตรวจสอบและตรวจสอบ
เรียกใช้คำสั่งการตั้งค่าทั้งคู่ แก้ไขข้อผิดพลาดแรกและตรวจสอบผลลัพธ์ที่แก้ไขแล้วก่อนเริ่มต้น
เริ่มใช้งานแบบส่วนตัว
เริ่ม Webship ด้วยไฟล์ TOML ที่เลือก ใส่คู่ใบรับรองครบถ้วนหรือ TLS อัตโนมัติเมื่อไซต์พร้อมสำหรับการจราจรสาธารณะที่ปลอดภัย
ตรวจสอบ runtime
เรียก GET /health ภายในเครื่อง จากนั้นทดสอบเส้นทางคงที่, TLS, เส้นทางพร็อกซี่, กฎความปลอดภัย และการตรวจสอบที่ต้องมีการยืนยันตัวตน
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/healthคู่มือเริ่มต้นด่วนสำหรับตัวแทน AI
เชื่อมต่อเอเจนต์ AI กับ Webship ในห้าบรรทัด
เชื่อมต่อ Claude Code, OpenAI, DeepSeek, หรือไคลเอนต์ MCP ที่เข้ากันได้ผ่านช่องทาง SSH ส่วนตัว ตัวแทนจะได้รับพื้นผิวการดำเนินการที่ได้รับการตรวจสอบสิทธิ์โดยไม่ต้องแชร์ตัวฟังสาธารณะหรือเปิดเผยข้อมูลการควบคุมต่อการจราจรอินเทอร์เน็ต
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }การส่งแบบคงที่
ให้บริการไดเรกทอรีด้วยค่าเริ่มต้นที่รับรู้โปรโตคอล
ตั้งค่า root ทั้งแบบทั่วโลกหรือเฉพาะแต่ละไซต์. ไซต์ TLS จะใช้ HTTP/3 เป็นค่าเริ่มต้นเท่านั้น; เว็บไซต์ที่ใช้ข้อความชัดเจนจะใช้ HTTP/1.1 และ H2C เป็นค่าเริ่มต้น. สามารถตั้งค่า HTTP/1.1, HTTP/2, และ HTTP/3 แยกกันสำหรับแต่ละไซต์ได้
[[sites]]
domain = "app.example.com"
root = "/srv/app"
listen = "0.0.0.0:443"
[sites.protocols]
h1 = true
h2 = true
h3 = trueเราเตอร์ในตัวรองรับ GET และ HEAD, ช่วงไบต์, คำร้องขอตามเงื่อนไข, ตัวตรวจสอบ, และไฟล์เสริม .br, .zst, และ .gz โดยค่าเริ่มต้นเส้นทางไฟล์จุด (dot-file) จะถูกปฏิเสธ; .well-known ยังคงสามารถใช้งานได้
ทราฟฟิกของแอปพลิเคชัน
เส้นทางคำขอไปยังอัพสตรีมหนึ่งหรือมากกว่า
เปิดใช้การทำรีเวิร์สพร็อกซี่, จับคู่โฮสต์และเส้นทาง จากนั้นกำหนดนโยบายสุดท้ายที่ไม่มีเงื่อนไข Webship รองรับพูลที่จำกัด, การตรวจสอบสุขภาพ, การปรับสมดุลโหลด, เบรกเกอร์วงจร, การลองอีกครั้งแบบไม่มีเนื้อหาปลอดภัย, WebSockets, และการแคช
[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 และ HTTP/3
ใช้ใบรับรองด้วยตนเองหรือปล่อยให้ Webship จัดการ
Webship รองรับ TLS 1.3 HTTP/3 ทำงานบนตัวรับฟัง UDP ที่ตรงกัน; เปิดใช้งาน HTTP/1.1 หรือ HTTP/2 อย่างชัดเจนเมื่อไซต์ TLS ต้องการความเข้ากันได้กับ 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"นโยบายขอบ
รักษามาตรฐานความปลอดภัยให้คงอยู่
Webship เปิดใช้งานชั้นป้องกันหลักโดยค่าเริ่มต้น ปรับขีดจำกัดให้เหมาะสมกับภาระงานของคุณและตรวจสอบความถูกต้องหลังจากที่มีการเปลี่ยนแปลงกฎหรือ header-policy ทุกครั้ง
[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'"ใช้โหมดปกติสำหรับการจราจรปกติ, under_attack สำหรับจัดการการโจมตีแบบเข้มงวดกว่า, และ lockdown เมื่ออนุญาตเฉพาะการตรวจสอบและเส้นทางที่ได้รับอนุญาตเท่านั้น
การวินิจฉัยส่วนตัว
ตรวจสอบขอบเขตโดยไม่ต้องเปิดเผยแผงควบคุม
สถิติและเมตริกของ Prometheus จะรันบนผู้ฟังที่ต้องพิสูจน์ตัวตนแยกต่างหาก ต้องเปิดใช้งานการประเมินผลทุกครั้งที่ปลายทางใด ๆ ทำงาน
[observability]
instrumentation = true
stats = true
metrics = true
listen = "127.0.0.1:9090"
token = "replace-with-at-least-32-random-printable-ascii-characters"การดำเนินงานอย่างปลอดภัย
โหลดใหม่โดยตั้งใจ เก็บการย้อนกลับใกล้มือ
โหลดการกำหนดค่าใหม่
ส่ง SIGHUP หลังจากแก้ไขการกำหนดค่าที่มีไฟล์สำรอง Webship จะตรวจสอบความถูกต้องของการแทนที่ก่อนติดตั้งและเก็บการกำหนดค่าที่กำลังทำงานไว้เมื่อการตรวจสอบล้มเหลว
อัปเกรดและย้อนกลับ
ติดตั้งไบนารีใหม่ข้างเวอร์ชันก่อนหน้า ตรวจสอบการกำหนดค่าการผลิตด้วยมัน จากนั้นตรวจสอบสุขภาพ TLS การทำงานเป็นพร็อกซี่ และเมตริก รักษาไบนารีก่อนหน้าจนกว่าทุกด่านจะผ่าน
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เอกสารอ้างอิงของคำสั่ง
พื้นผิวเล็ก เริ่มต้นแบบชัดเจน
webship [OPTIONS] | webship update [OPTIONS]
-c, --config PATH- เลือกไฟล์ TOML ถ้าไฟล์ไม่มีอยู่ Webship จะสร้างไฟล์นั้นพร้อมตัวตน TLS แบบส่วนตัวบน localhost
--check-config- ตรวจสอบการกำหนดค่าทั้งหมดและออกโดยไม่เริ่มผู้ฟัง
--print-effective-config- พิมพ์การตั้งค่าที่รวมเข้าด้วยกันโดยเอาข้อมูลลับออก
update- ตรวจสอบ manifest ของชุมชนที่ลงนามแล้ว เลือกเป้าหมายแพลตฟอร์มนี้โดยตรง และติดตั้งเวอร์ชันใหม่กว่าเมื่อมี
--help / --version- พิมพ์ความช่วยเหลือของคำสั่งหรือเวอร์ชัน Webship ที่ติดตั้งอยู่
รูปแบบความล้มเหลวทั่วไป
เริ่มจากการกำหนดค่าแล้วค่อยเคลื่อนออกไป
- เรียกใช้ --check-config และแก้ไขข้อผิดพลาดแรกที่รายงาน; ฟิลด์ TOML ที่ไม่รู้จักจะถูกปฏิเสธ
- ยืนยันว่าพอร์ต TCP และ UDP ที่กำหนดสามารถใช้งานได้และได้รับอนุญาตโดยไฟร์วอลล์
- ยืนยันว่าใบรับรองและกุญแจมีอยู่ สามารถอ่านได้โดยบัญชีบริการ และเป็นคู่ที่ตรงกัน
- สำหรับ TLS อัตโนมัติ ยืนยันว่าทุกโดเมนที่ตั้งค่าชี้ไปยังโฮสต์ Webship
- เรียก /health บนตัวฟังแอปพลิเคชันภายในก่อนทดสอบผ่าน DNS หรือเส้นทางโหลดภายนอก
- เปิดใช้งานการสังเกตด้วยการตรวจสอบสิทธิ์ชั่วคราวเมื่อจำเป็นต้องมีหลักฐานในเวลารันไทม์