उत्पाद अवलोकन
नेटवर्क और आपके एप्लीकेशन के बीच एक सर्वर।
Webship एक स्व-होस्टेड Rust एज और स्थिर वेब सर्वर है। एक रनटाइम आधुनिक प्रोटोकॉल को समाप्त करता है, एज नीति लागू करता है, फ़ाइलें सर्व करता है, और एप्लीकेशन अनुरोधों का प्रॉक्सी बनाता है।
आधुनिक ट्रांसपोर्ट
HTTP/1.1, HTTP/2, और HTTP/3 स्वीकार करें, TLS 1.3 और वैकल्पिक WebTransport एंडपॉइंट के साथ।
स्थिर और प्रॉक्सी डिलीवरी
सत्यापनकर्ताओं और प्रीकंप्रेस्ड साइडकार्स के साथ स्थिर फ़ाइलें सर्व करें, या सीमित अपस्ट्रीम पूलों के माध्यम से एप्लिकेशन ट्रैफ़िक को प्रॉक्सी करें।
सुरक्षित डिफ़ॉल्ट
WAF, DDoS नियंत्रण, बॉट चुनौती, प्रतिक्रिया सुरक्षा हेडर, API शील्ड और डॉट-फ़ाइल सुरक्षा सक्षम करके शुरू करें।
देखने योग्य संचालन
प्रमाणीकृत आँकड़े, Prometheus मेट्रिक्स, अनुरोध आईडी, सहज रीलोड और वैकल्पिक MCP कंट्रोल प्लेन का उपयोग करें।
त्वरित आरंभ
रीलीज़ बाइनरी से स्वस्थ श्रोता तक।
लूपबैक पर शुरू करें, बाइंडिंग से पहले सब कुछ मान्य करें, और सार्वजनिक ट्रैफिक जोड़ने से पहले बिल्ट-इन स्वास्थ्य प्रतिक्रिया की जांच करें।
फ़ाइलें तैयार करें
रिलीज़ बाइनरी, उसका TOML कॉन्फ़िगरेशन, स्टैटिक रूट, और कोई भी कॉन्फ़िगर किया गया TLS प्रमाणपत्र और कुंजी फ़ाइलें होस्ट पर रखें।
सत्यापित करें और निरीक्षण करें
दोनों कॉन्फ़िगरेशन आदेश चलाएँ। पहली त्रुटि को सही करें और स्टार्टअप से पहले अप्रकाशित प्रभावी परिणाम की जाँच करें।
निजी रूप से शुरू करें
चयनित TOML फ़ाइल के साथ Webship शुरू करें। जब साइट सुरक्षित सार्वजनिक ट्रैफ़िक के लिए तैयार हो, तब पूर्ण प्रमाणपत्र जोड़ी या स्वचालित TLS जोड़ें।
रनटाइम की पुष्टि करें
स्थानीय रूप से 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/healthAI एजेंट्स के लिए त्वरित प्रारंभ गाइड
पाँच पंक्तियों में एक एआई एजेंट को Webship से कनेक्ट करें।
क्लॉड कोड, OpenAI, DeepSeek, या किसी भी संगत MCP क्लाइंट को एक निजी SSH टनल के माध्यम से कनेक्ट करें। एजेंट को एक प्रमाणीकरण योग्य संचालन सतह प्राप्त होती है बिना सार्वजनिक लिस्नर साझा किए या नियंत्रण प्रमाण-पत्रों को इंटरनेट ट्रैफ़िक के लिए उजागर किए।
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }स्टैटिक डिलीवरी
प्रोटोकॉल-संवेदनशील डिफ़ॉल्ट्स के साथ एक निर्देशिका सेवा प्रदान करें।
ग्लोबली या प्रत्येक साइट के लिए एक root सेट करें। TLS साइट्स डिफ़ॉल्ट रूप से HTTP/3 पर जाते हैं; cleartext साइट्स डिफ़ॉल्ट रूप से 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, बाइट रेंज, शर्तीय अनुरोध, validators, और .br, .zst, और .gz साइडकार्स को सपोर्ट करता है। डॉट-फाइल पाथ्स को डिफ़ॉल्ट रूप से अस्वीकार कर दिया जाता है; .well-known उपलब्ध रहता है।
एप्लिकेशन ट्रैफिक
अनुरोधों को एक या अधिक अपस्ट्रीम्स पर मार्गदर्शित करें।
रिवर्स प्रॉक्सी को सक्षम करें, एक होस्ट और पाथ से मिलान करें, फिर एक अंतिम अनियंत्रित नीति परिभाषित करें। Webship सीमित पूल, स्वास्थ्य जांच, लोड बैलेंसिंग, सर्किट ब्रेकर्स, सुरक्षित बिना बॉडी वाले पुन: प्रयास, वेब सॉकेट्स और कैशिंग का समर्थन करता है।
[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 1.4.0 TLS 1.3 को स्वीकार करता है और प्रत्येक साइट को स्वतंत्र रूप से उसका सर्टिफ़िकेट मोड चुनने देता है। HTTP/3 मेल खाने वाले UDP लिसनर का उपयोग करता है; जब वही TLS साइट TCP संगतता की भी आवश्यकता रखती है तो HTTP/1.1 या HTTP/2 को सक्षम करें।
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 certificateWebship 1.4.0 प्रमाणपत्र वास्तुकला
हर साइट के लिए प्रमाणपत्र भरोसा और स्केल स्वतंत्र रूप से चुनें।
Webship 1.4.0 प्रमाणपत्र_मोड को प्रत्येक [[sites]] प्रविष्टि पर ले जाता है। पब्लिक प्रति-साइट ACME, पब्लिक DNS-01 फ़्लीट शार्ड्स, एम्बेडेड प्राइवेट CA, लेगेसी साझा प्रमाणपत्र, और मैन्युअल प्रमाणपत्र फ़ाइलें एक स्व-संलग्न प्रक्रिया में सह-अस्तित्व कर सकती हैं।
per_site — सार्वजनिक प्रमाणपत्र
डिफ़ॉल्ट। TLS-ALPN-01 के साथ साइट के सटीक नाम के लिए एक ब्राउज़र-विश्वसनीय सार्वजनिक ACME प्रमाणपत्र का आदेश दें।
फ्लीट — सार्वजनिक DNS-01 shards
स्पष्ट पंजीकृत डोमेन के अंतर्गत कई तीसरी और चौथी स्तरीय नामों के लिए सार्वजनिक DNS-01 इश्यूअंस का उपयोग करें। नाम स्थिर, बैच किए गए प्रमाणपत्र shards में रहते हैं।
एम्बेडेड — निजी CA
Webship की निजी CA से प्रक्रिया में अलग प्रमाणपत्र जारी करें। किसी सार्वजनिक ACME खाते, DNS चुनौती, रजिस्ट्री इंटीग्रेशन, या इनबाउंड पोर्ट 443 की आवश्यकता नहीं है।
साझा — लेगेसी मल्टी-SAN
उन डिप्लॉयमेंट के लिए लेगेसी पब्लिक मल्टी-SAN ग्रुप रखें जिन्हें इसकी आवश्यकता है। यह डिफ़ॉल्ट नहीं है और यह पब्लिक-CA पहचानकर्ता सीमाओं के अधीन रहता है।
[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"[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 डिफ़ॉल्ट रूप से अपनी मुख्य सुरक्षा स्तरों को सक्षम करता है। अपने कार्यभार के लिए सीमाओं को समायोजित करें और प्रत्येक नियम या हेडर-नीति परिवर्तन के बाद सत्यापित करें।
[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'"सामान्य यातायात के लिए सामान्य मोड का उपयोग करें, सक्रिय-हमले से निपटने के लिए stricter मोड का उपयोग करें, और लॉकडाउन मोड तब उपयोग करें जब केवल probes और स्पष्ट रूप से अनुमत मार्ग उपलब्ध होने चाहिए।
निजी निदान
कंट्रोल प्लेन का प्रदर्शन किए बिना एज का निरीक्षण करें।
सांख्यिकी और 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 1.4.0 लक्ष्य के पास आपके प्रतिनिधि ट्रैफ़िक के तहत लक्ष्य-नेटिव LLVM प्रोफ़ाइल डेटा इकट्ठा करने के लिए एक अलग इंस्ट्रूमेंटेड CLI होता है। सटीक संस्करण और लक्ष्य ट्रिपल का उपयोग करें, जो मार्ग और प्रोटोकॉल महत्वपूर्ण हैं उन्हें अभ्यास करें, और प्रक्रिया को सौम्य रूप से रोकें ताकि यह हर .profraw फ़ाइल को फ्लश कर सके।
सटीक लक्ष्य चुनें
PGO प्रशिक्षण CLI डाउनलोड करें जिसका रिलीज़ संस्करण और Rust लक्ष्य ट्रिपल बिल्कुल उस रनटाइम से मेल खाता हो जिसे आप अनुकूलित करना चाहते हैं। पहले इसका प्रकाशित SHA-256 सत्यापित करें।
प्रतिनिधि ट्रैफ़िक को कैप्चर करें
LLVM_PROFILE_FILE को एक लिखने योग्य निर्देशिका पर सेट करें, वास्तविक कॉन्फ़िगरेशन की मान्य प्रति के साथ प्रशिक्षण CLI शुरू करें, प्रतिनिधि डाइरेक्ट और रिवर्स-प्रॉक्सी ट्रैफ़िक को दोहराएँ, फिर Webship को धीरे से रोकें।
रॉ प्रोफाइल्स को मर्ज करें
रिलीज़ के लिए रिकॉर्ड किए गए कंपाइलर जनरेशन से llvm-profdata का उपयोग करें। प्रत्येक जारी .profraw फ़ाइल को एक ही sparse webship.profdata फ़ाइल में मर्ज करें।
पुनर्निर्माण और गेट
मर्ज की गई प्रोफाइल को केवल उसी सटीक स्रोत, कंपाइलर, क्रिप्टो प्रोवाइडर, फीचर सेट, और लक्ष्य पर लागू करें जिसने इसे जनरेट किया। प्रमोशन से पहले करेक्टनेस और प्रदर्शन गेट चलाएं।
mkdir -p ./profiles
export LLVM_PROFILE_FILE="$PWD/profiles/webship-%p-%m.profraw"
./webship-pgo-training-1.4.0-<target> --config ./webship.tomlNew-Item -ItemType Directory -Force ./profiles
$env:LLVM_PROFILE_FILE = "$PWD/profiles/webship-%p-%m.profraw"
.\webship-pgo-training-1.4.0-<target>.exe --config .\webship.tomlllvm-profdata merge -sparse ./profiles/*.profraw -o ./webship.profdataकमांड-लाइन संदर्भ
छोटी सतह, स्पष्ट स्टार्टअप।
webship [OPTIONS] | webship update [OPTIONS]
-c, --config PATH- TOML फ़ाइल चुनें। अगर यह मौजूद नहीं है, तो Webship इसे निजी लोकलहोस्ट TLS पहचान के साथ बनाता है।
--check-config- पूरा कॉन्फ़िगरेशन सत्यापित करें और लिस्नर शुरू किए बिना बाहर निकलें।
--print-effective-config- सीक्रेट्स हटाकर मर्ज किया गया प्रभावी कॉन्फ़िगरेशन प्रिंट करें।
अद्यतन- साइन की गई कम्युनिटी मैनिफेस्ट को सत्यापित करें, इस सटीक प्लेटफ़ॉर्म लक्ष्य का चयन करें, और जब कोई नई संस्करण उपलब्ध हो तो उसे इंस्टॉल करें।
--help / --version- प्रिंट कमांड मदद या इंस्टॉल की गई Webship संस्करण।
सामान्य विफलता मोड
कॉन्फ़िगरेशन से शुरू करें, फिर बाहर की ओर बढ़ें।
- --check-config चलाएँ और सबसे पहले रिपोर्ट की गई त्रुटि को सही करें; अज्ञात TOML फ़ील्ड अस्वीकृत हैं।
- सुनिश्चित करें कि कॉन्फ़िगर किए गए TCP और UDP पोर्ट उपलब्ध हैं और फ़ायरवॉल द्वारा अनुमति दी गई हैं।
- पुष्टि करें कि प्रमाणपत्र और कुंजी मौजूद हैं, सेवा खाते द्वारा पढ़ी जा सकती हैं, और मेल खाने वाला जोड़ा बनाते हैं।
- स्वचालित TLS के लिए, पुष्टि करें कि हर कॉन्फ़िगर डोमेन Webship होस्ट को हल करता है।
- DNS या बाहरी लोड पथ के माध्यम से परीक्षण करने से पहले स्थानीय एप्लिकेशन लिसनर पर /health कॉल करें।
- जब रनटाइम साक्ष्य की आवश्यकता हो, तो अस्थायी रूप से प्रमाणित ऑब्ज़र्वेबिलिटी सक्षम करें।