نظرة عامة على المنتج
خادم واحد بين الشبكة وتطبيقك.
Webship هو خادم حافة وخادم ويب ثابت مستضاف ذاتيًا Rust. يقوم وقت التشغيل الواحد بإنهاء البروتوكولات الحديثة، وتطبيق سياسات الحافة، وخدمة الملفات، وتمرير طلبات التطبيقات.
النقل الحديث
اقبل HTTP/1.1، HTTP/2، وHTTP/3، مع TLS 1.3 ونقطة نهاية اختيارية WebTransport.
التسليم الثابت والمُرحَّل
خدم الملفات الثابتة مع أدوات التحقق وملحقات مسبقة الضغط، أو مرّر حركة مرور التطبيقات عبر مجموعات أساسية محدودة أعلى.
الإعدادات الافتراضية الآمنة
ابدأ بجدار حماية التطبيقات الشبكية (WAF)، ضوابط DDoS، تحدي الروبوتات، رؤوس أمان الاستجابة، درع API، وحماية الملفات النقطة (dot-file) مفعلة.
عمليات قابلة للملاحظة
استخدم الإحصاءات المصادَق عليها، مقاييس بروميتياس، معرفات الطلب، إعادة التحميل السلسة، وطائرة التحكم الاختيارية MCP.
البدء السريع
من النسخة التنفيذية إلى المستمع الصحي.
ابدأ على حلقة الاتصال المحلية، تحقق من كل شيء قبل الربط، وتحقق من استجابة الصحة المدمجة قبل إضافة حركة المرور العامة.
حضّر الملفات
ضع الملف التنفيذي للإصدار، وملف التكوين TOML الخاص به، والجذر الثابت، وأي ملفات شهادة ومفتاح TLS مُعدّة على المضيف.
تحقق وفحص
شغّل كلا أمرَي التكوين. أصلح الخطأ الأول وافحص النتيجة الفعلية المختصرة قبل بدء التشغيل.
ابدأ بشكل خاص
ابدأ Webship باستخدام ملف TOML المختار. أضف زوج الشهادات الكامل أو 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/healthدليل البدء السريع لوكلاء الذكاء الاصطناعي
قم بتوصيل وكيل ذكاء اصطناعي إلى Webship في خمس أسطر.
قم بربط Claude Code أو OpenAI أو DeepSeek أو أي عميل MCP متوافق من خلال نفق SSH خاص. يستقبل الوكيل سطح عمليات مصادق عليه دون مشاركة المستمع العام أو كشف بيانات التحكم لحركة الإنترنت.
{
"mcpServers": {
"webship": { "url": "https://localhost:19443/mcp",
"headers": { "Authorization": "Bearer <token>" } }
} }التسليم الثابت
قدّم دليلًا بإعدادات افتراضية مدركة للبروتوكول.
قم بتعيين جذر عالميًا أو لكل موقع. مواقع 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 الجانبية. يتم رفض مسارات ملفات النقطة بشكل افتراضي؛ تظل .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 يقبل TLS 1.3. HTTP/3 يعمل عبر مستمع UDP المطابق؛ قم بتمكين HTTP/1.1 أو HTTP/2 صراحة عند الحاجة أيضًا إلى توافق TCP على موقع TLS.
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 الطبقات الرئيسية لحمايته بشكل افتراضي. اضبط الحدود وفقًا لحمولة عملك وتحقق بعد كل تغيير في القاعدة أو سياسة الرأس.
[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 عندما يجب أن تبقى المتاحة فقط المسارات التجريبية والمسارات المسموح بها صراحة.
تشخيصات خاصة
افحص الحافة بدون كشف طبقة التحكم.
الإحصاءات وقياسات بروميتياس تعمل على مستمع منفصل مصادق عليه. يجب تمكين الأدوات القياسية كلما كان أي من النقطتين النهايتين نشطتين.
[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 محلية خاصة.
--check-config- تحقق من التكوين الكامل واخرج دون بدء المستمعين.
--طباعة-التكوين الفعال- اطبع التكوين الفعال المدمج مع إزالة الأسرار.
تحديث- تحقق من البيان المجتمعي الموقع، اختر هذا الهدف المحدد للمنصة، وقم بتثبيت إصدار أحدث عند وجوده.
--مساعدة / --الإصدار- اطبع مساعدة الأمر أو إصدار Webship المثبت.
أنماط الفشل الشائعة
ابدأ بالإعداد، ثم انتقل إلى الخارج.
- شغّل --check-config وقم بتصحيح أول خطأ مُبلغ عنه؛ الحقول غير المعروفة في TOML يتم رفضها.
- تأكد من أن منافذ TCP و UDP المكوّنة متاحة ومسموح بها من قبل جدار الحماية.
- تأكد من أن الشهادة والمفتاح موجودان، ويمكن لحساب الخدمة قراءتهما، ويشكلان زوجًا متطابقًا.
- لـ TLS التلقائي، تأكد من أن كل نطاق تم تكوينه يحل إلى المضيف Webship.
- استدعاء /health على مستمع التطبيق المحلي قبل الاختبار عبر DNS أو مسار التحميل الخارجي.
- تمكين الرصد المصادق مؤقتًا عند الحاجة إلى دليل وقت التشغيل.