เอกสาร Webship

ติดตั้ง กำหนดค่า และทำให้อัตโนมัติ Webship

กำหนดค่า ตรวจสอบ สร้างการใช้งาน และทำให้อัตโนมัติสำหรับเซิร์ฟเวอร์เอดจ์ AI-Native Webship พร้อมตัวอย่าง TOML ที่กระชับและแนวทางการปฏิบัติการที่ระบุเวอร์ชัน

รุ่นเอกสาร

Webship 1.5.0ปัจจุบัน

เปิดตัว 2026-09-21 URL นี้ถูกตรึงไว้กับเวอร์ชันที่เลือก

ตัวฟังเริ่มต้น
127.0.0.1:4433
การกำหนดค่า
TOML
TLS
TLS 1.3

ภาพรวมผลิตภัณฑ์

เซิร์ฟเวอร์หนึ่งตัวระหว่างเครือข่ายและแอปพลิเคชันของคุณ

Webship เป็น Rust ขอบเขตที่โฮสต์ด้วยตนเองและเซิร์ฟเวอร์เว็บสแตติก หนึ่งรันไทม์ยุติโปรโตคอลสมัยใหม่ ใช้นโยบายขอบเขต ให้บริการไฟล์ และโปรกซีคำขอแอปพลิเคชัน

การขนส่งสมัยใหม่

ยอมรับ HTTP/1.1, HTTP/2, และ HTTP/3, พร้อมกับ TLS 1.3 และจุดปลายทาง WebTransport ทางเลือก

การจัดส่งแบบคงที่และแบบพร็อกซี

ให้บริการไฟล์สถิติด้วยตัวตรวจสอบและตัวเสริมที่บีบอัดล่วงหน้า หรือพร็อกซี่การจราจรของแอปพลิเคชันผ่านกลุ่มต้นน้ำที่จำกัด

ค่าเริ่มต้นที่ปลอดภัย

เริ่มต้นด้วย WAF, การควบคุม DDoS, การทดสอบบ็อต, เฮดเดอร์ความปลอดภัยของการตอบสนอง, API Shield, และการป้องกันไฟล์จุดที่เปิดใช้งาน

การดำเนินงานที่สามารถสังเกตได้

ใช้สถิติที่ยืนยันแล้ว, เมตริกของ Prometheus, รหัสคำขอ, การรีโหลดอย่างนุ่มนวล, และแผงควบคุม MCP ทางเลือก

เริ่มต้นอย่างรวดเร็ว

จากไบนารีเวอร์ชันที่ปล่อยไปสู่ผู้ฟังที่ทำงานปกติ

เริ่มต้นบน loopback, ตรวจสอบทุกอย่างก่อนผูก, และยืนยันการตอบกลับสุขภาพในตัวก่อนเพิ่มทราฟฟิกสาธารณะ

  1. เตรียมไฟล์

    วางไฟล์ไบนารีสำหรับการปล่อย, ไฟล์การตั้งค่า TOML, รากสถิติคงที่ และไฟล์ใบรับรอง TLS และคีย์ที่ตั้งค่าไว้ใด ๆ บนโฮสต์

  2. ตรวจสอบและตรวจสอบ

    เรียกใช้คำสั่งการตั้งค่าทั้งคู่ แก้ไขข้อผิดพลาดแรกและตรวจสอบผลลัพธ์ที่แก้ไขแล้วก่อนเริ่มต้น

  3. เริ่มใช้งานแบบส่วนตัว

    เริ่ม Webship ด้วยไฟล์ TOML ที่เลือก ใส่คู่ใบรับรองครบถ้วนหรือ TLS อัตโนมัติเมื่อไซต์พร้อมสำหรับการจราจรสาธารณะที่ปลอดภัย

  4. ตรวจสอบ runtime

    เรียก GET /health ภายในเครื่อง จากนั้นทดสอบเส้นทางคงที่, TLS, เส้นทางพร็อกซี่, กฎความปลอดภัย และการตรวจสอบที่ต้องมีการยืนยันตัวตน

config.toml แบบขั้นต่ำ
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 ส่วนตัว ตัวแทนจะได้รับพื้นผิวการดำเนินการที่ได้รับการตรวจสอบสิทธิ์โดยไม่ต้องแชร์ตัวฟังสาธารณะหรือเปิดเผยข้อมูลการควบคุมต่อการจราจรอินเทอร์เน็ต

การกำหนดค่า MCP client ในห้าบรรทัด
{
  "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, และการแคช

เส้นทาง API สองแหล่ง
[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

Webship 1.5.0 เลเยอร์ 4

พร็อกซี่การรับส่งข้อมูล TCP และ UDP โดยไม่ต้องมีเส้นทาง HTTP

เลเยอร์ 4 ถูกปิดใช้งานโดยค่าเริ่มต้น กำหนด upstreams ที่มีชื่อ นโยบาย TCP และ UDP อิสระ ตัวฟัง และเส้นทาง TCP รองรับการจำกัดการเชื่อมต่อ การตรวจสุขภาพ การกระจายโหลด โปรโตคอล PROXY แบบเลือกได้ และการส่งผ่าน TLS หรือการยุติ TLS UDP ใช้การไหลที่จำกัดและพนักงานรับข้อมูลแบบแบตช์

ตัวฟังพร็อกซี่ TCP และ UDP
[layer4]
enabled = true

[[layer4.tcp_policies]]
name = "edge-tcp"
max_connections = 10000
idle_timeout_ms = 300000

[[layer4.udp_policies]]
name = "edge-udp"
max_flows = 20000
receive_batch_size = 32

[[layer4.upstreams]]
name = "origin-a"
address = "127.0.0.1:9443"
weight = 100

[[layer4.tcp]]
name = "tls-tunnel"
listen = "127.0.0.1:10443"
policy = "edge-tcp"
tls_mode = "passthrough"

[[layer4.tcp.routes]]
name = "default"
default = true
upstreams = ["origin-a"]
load_balancing = "weighted-peak-ewma"

[[layer4.udp]]
name = "datagrams"
listen = "127.0.0.1:10443"
policy = "edge-udp"

[[layer4.udp.routes]]
name = "default"
default = true
upstreams = ["origin-a"]

การส่งผ่านตามเส้นทาง

สร้างแคชแบบสไตล์ CDN ที่จำกัดโดยไม่ข้ามขอบเขตของไซต์

แคชถูกกำหนดค่าบนแต่ละเส้นทางพร็อกซีย้อนกลับ ไม่ใช่ทั่วทั้งระบบ เลือกวิธีการและสถานะที่ปลอดภัย ขอบเขตเวลา TTL พฤติกรรม CDN-Cache-Control และการปรับมาตรฐานคีย์คิวรีสำหรับไซต์และเส้นทางนั้น ๆ คำตอบที่มีการพิสูจน์ตัวตน เป็นส่วนบุคคล แบบส่วนตัว และไม่เก็บ จะไม่สามารถแคชได้โดยค่าเริ่มต้น

นโยบายแคชแบบ CDN ต่อเส้นทาง
[[reverse_proxy.routes]]
domain = "assets.example.com"
path_prefix = "/assets"
upstreams = ["127.0.0.1:8080"]

[reverse_proxy.routes.cache]
enabled = true
cacheable_methods = ["GET", "HEAD", "QUERY"]
cacheable_statuses = [200, 203, 204, 206, 301, 404, 410]
default_ttl_ms = 60000
max_ttl_ms = 86400000
honor_cdn_cache_control = true
query_mode = "ignore-listed"
ignored_query_parameters = ["utm_*", "fbclid"]

บริบทการจราจรภายในเครื่อง

ใช้กฎ GeoIP โดยไม่ต้องใช้บริการค้นหาที่โฮสต์

โหลดข้อมูลประเทศ เมือง และ ASN จากฐานข้อมูลที่เข้ากันได้กับ MaxMind ภายในเครื่อง GeoIP ถูกปิดใช้งานเป็นค่าเริ่มต้น; ควรรักษาไฟล์ฐานข้อมูลให้ทันสมัยและตัดสินใจว่าความล้มเหลวของการค้นหาควรปฏิเสธหรือข้ามนโยบายที่ขึ้นกับภูมิศาสตร์ก่อนเปิดใช้งาน

การกำหนดค่าฐานข้อมูล GeoIP ภายในเครื่อง
[geoip]
enabled = true
country_db = "/var/lib/webship/geo/country.mmdb"
city_db = "/var/lib/webship/geo/city.mmdb"
asn_db = "/var/lib/webship/geo/asn.mmdb"
failure_mode = "deny"

โปรโตคอลอีเมล

กำหนดเส้นทางเซสชันอีเมลด้วยการควบคุมที่ทราบโปรโตคอล

ใช้ระนาบข้อมูลอีเมลแยกต่างหากสำหรับการส่ง SMTP, IMAP, POP3 และการกำหนดเส้นทางที่ทราบโปรโตคอลที่เกี่ยวข้อง ผู้ฟังสามารถใช้การส่งผ่าน, TLS แบบนิ่ง หรือการอัปเกรด STARTTLS แบบจำกัด เก็บผู้ฟังใหม่บน loopback จนกว่าจะตรวจสอบตัวตนอัปสตรีม, ใบรับรอง, การตรวจสอบสิทธิ์ และนโยบาย TLS แล้ว

การส่งผ่าน SMTP submission
[mail]
enabled = true

[[mail.upstreams]]
name = "submission-a"
address = "127.0.0.1:2465"
protocol = "smtp-submission"
security = "plain"

[[mail.listeners]]
name = "submissions"
listen = "127.0.0.1:1465"
protocol = "smtp-submission"
client_security = "passthrough"
upstreams = ["submission-a"]
load_balancing = "weighted-least-requests"

TLS และ HTTP/3

ใช้ใบรับรองด้วยตนเองหรือปล่อยให้ Webship จัดการ

ตั้งแต่ Webship 1.4.0 แต่ละไซต์สามารถเลือกโหมดใบรับรองของตนเองได้อย่างอิสระ HTTP/3 ใช้ตัวฟัง UDP ที่ตรงกัน; เปิด HTTP/1.1 หรือ HTTP/2 เมื่อไซต์ TLS 1.3 เดียวกันยังต้องการความเข้ากันได้กับ 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"
certificate_mode = "per_site" # default public ACME certificate

[[sites]]
domain = "legacy.example.com"
root = "/srv/legacy"
certificate_mode = "shared" # legacy public multi-SAN certificate

สถาปัตยกรรมใบรับรองต่อไซต์

เลือกความน่าเชื่อถือของใบรับรองและขนาดได้อย่างอิสระสำหรับแต่ละไซต์

Webship 1.4.0 ย้าย certificate_mode ไปยังแต่ละรายการ [[sites]] ACME ต่อไซต์สาธารณะ, fleet shards DNS-01 สาธารณะ, CA ส่วนตัวในตัว, ใบรับรองแชร์แบบเก่า, และไฟล์ใบรับรองด้วยตนเองสามารถอยู่ร่วมกันในกระบวนการที่เป็นเอกเทศเดียว

ต่อเว็บไซต์ — ใบรับรองสาธารณะ

ค่าเริ่มต้น สั่งซื้อใบรับรอง ACME สาธารณะที่เชื่อถือโดยเบราว์เซอร์หนึ่งใบสำหรับชื่อไซต์ที่ตรงกันโดยใช้ TLS-ALPN-01

กองเรือ — ชิ้นส่วน DNS-01 สาธารณะ

ใช้การออกใบรับรอง DNS-01 สาธารณะสำหรับชื่อหลายระดับที่สามและระดับที่สี่ภายใต้โดเมนที่จดทะเบียนอย่างชัดเจน ชื่อยังคงอยู่ในชิ้นส่วนใบรับรองแบบกลุ่มที่เสถียร

ฝังตัว — CA ส่วนตัว

ออกใบรับรองแยกต่างหากภายในกระบวนการจาก CA ส่วนตัวของ Webship ไม่จำเป็นต้องมีบัญชี ACME สาธารณะ การท้าทาย DNS การรวมกับผู้จดทะเบียน หรือพอร์ตขาเข้า 443

แชร์ — multi-SAN แบบเก่า

เก็บกลุ่ม multi-SAN สาธารณะเดิมสำหรับการปรับใช้ที่ต้องการ สิ่งนี้ไม่ใช่ค่าเริ่มต้นและยังคงอยู่ภายใต้ข้อจำกัดตัวระบุของ CA สาธารณะ

ฟลีต DNS-01 สาธารณะที่เป็นอิสระ
[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"
ไซต์ที่มี CA ส่วนตัวในตัว
[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"

นโยบายขอบ

รักษามาตรฐานความปลอดภัยให้คงอยู่

Webship เปิดใช้งานชั้นป้องกันหลักโดยค่าเริ่มต้น ปรับขีดจำกัดให้เหมาะสมกับภาระงานของคุณและตรวจสอบความถูกต้องหลังจากที่มีการเปลี่ยนแปลงกฎหรือ header-policy ทุกครั้ง

นโยบาย DDoS และ response-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'"

ใช้โหมดปกติสำหรับการจราจรปกติ, 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 การทำงานเป็นพร็อกซี่ และเมตริก รักษาไบนารีก่อนหน้าจนกว่าทุกด่านจะผ่าน

คำสั่ง Reload และ 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

การเพิ่มประสิทธิภาพโดยใช้โปรไฟล์

รวบรวมโปรไฟล์ของเป้าหมาย-เนทีฟโดยไม่ทำให้สับสนระหว่างการฝึกอบรมกับการผลิต

ทุก Webship 1.5.0 เป้าหมายมี CLI ที่ติดตั้งแยกต่างหากสำหรับเก็บข้อมูล LLVM โปรไฟล์เฉพาะเป้าหมายภายใต้การจราจรตัวแทนของคุณ ใช้เวอร์ชันและทริปเปิลเป้าหมายที่ถูกต้อง ฝึกเส้นทางและโปรโตคอลที่สำคัญ และหยุดกระบวนการอย่างเหมาะสมเพื่อให้สามารถเขียนไฟล์ .profraw ทุกไฟล์ออกมา

  1. เลือกเป้าหมายที่ต้องการอย่างแม่นยำ

    ดาวน์โหลด CLI การฝึก PGO ที่เวอร์ชันการปล่อยและตัวยก Rust ตรงกับรันไทม์ที่คุณตั้งใจจะปรับแต่ง ตรวจสอบ SHA-256 ที่เผยแพร่ก่อน

  2. จับภาพทราฟฟิกตัวแทน

    ตั้งค่า LLVM_PROFILE_FILE ไปที่ไดเรกทอรีที่สามารถเขียนได้, เริ่ม CLI การฝึกด้วยสำเนาการกำหนดค่าจริงที่ตรวจสอบแล้ว, เล่นซ้ำการจราจรแบบตรงและผ่านพร็อกซีกลับที่เป็นตัวแทน, จากนั้นหยุด Webship อย่างเรียบร้อย

  3. รวมโปรไฟล์ดิบ

    ใช้ llvm-profdata จากคอมไพเลอร์ที่สร้างสำหรับการเผยแพร่ รวมไฟล์ .profraw ทุกไฟล์ที่สร้างออกมาเป็นไฟล์ sparse webship.profdata ไฟล์เดียว

  4. สร้างใหม่และตรวจสอบเกท

    ใช้โปรไฟล์ที่รวมแล้วกับซอร์สโค้ด, คอมไพเลอร์, ผู้ให้บริการการเข้ารหัส, ชุดฟีเจอร์, และเป้าหมายที่สร้างมันเท่านั้น รันเกทความถูกต้องและประสิทธิภาพก่อนทำการโปรโมต

Linux, macOS, และ OpenHarmony
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.5.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.5.0-<target>.exe --config .\webship.toml
รวมเข้ากับชุดเครื่องมือ LLVM ที่ตรงกัน
llvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdata

เอกสารอ้างอิงของคำสั่ง

พื้นผิวเล็ก เริ่มต้นแบบชัดเจน

webship [OPTIONS] | webship update [OPTIONS]

-c, --config PATH
เลือกไฟล์ TOML ถ้าไฟล์ไม่มีอยู่ Webship จะสร้างไฟล์นั้นพร้อมตัวตน TLS แบบส่วนตัวบน localhost
--check-config
ตรวจสอบการกำหนดค่าทั้งหมดและออกโดยไม่เริ่มผู้ฟัง
--print-effective-config
พิมพ์การตั้งค่าที่รวมเข้าด้วยกันโดยเอาข้อมูลลับออก
update
ตรวจสอบ manifest ของชุมชนที่ลงนามแล้ว เลือกเป้าหมายแพลตฟอร์มนี้โดยตรง และติดตั้งเวอร์ชันใหม่กว่าเมื่อมี
--help / --version
พิมพ์ความช่วยเหลือของคำสั่งหรือเวอร์ชัน Webship ที่ติดตั้งอยู่

รูปแบบความล้มเหลวทั่วไป

เริ่มจากการกำหนดค่าแล้วค่อยเคลื่อนออกไป

  1. เรียกใช้ --check-config และแก้ไขข้อผิดพลาดแรกที่รายงาน; ฟิลด์ TOML ที่ไม่รู้จักจะถูกปฏิเสธ
  2. ยืนยันว่าพอร์ต TCP และ UDP ที่กำหนดสามารถใช้งานได้และได้รับอนุญาตโดยไฟร์วอลล์
  3. ยืนยันว่าใบรับรองและกุญแจมีอยู่ สามารถอ่านได้โดยบัญชีบริการ และเป็นคู่ที่ตรงกัน
  4. สำหรับ TLS อัตโนมัติ ยืนยันว่าทุกโดเมนที่ตั้งค่าชี้ไปยังโฮสต์ Webship
  5. เรียก /health บนตัวฟังแอปพลิเคชันภายในก่อนทดสอบผ่าน DNS หรือเส้นทางโหลดภายนอก
  6. เปิดใช้งานการสังเกตด้วยการตรวจสอบสิทธิ์ชั่วคราวเมื่อจำเป็นต้องมีหลักฐานในเวลารันไทม์