পণ্য সংক্ষিপ্ত বিবরণ
নেটওয়ার্ক এবং আপনার অ্যাপ্লিকেশনের মধ্যে একটি সার্ভার।
Webship হলো একটি স্ব-হোস্টেড Rust এজ এবং স্থিতিশীল ওয়েব সার্ভার। একটি রানটাইম আধুনিক প্রোটোকল শেষ করে, এজ নীতি প্রয়োগ করে, ফাইল পরিবেশন করে এবং অ্যাপ্লিকেশন অনুরোধের প্রক্সি করে।
আধুনিক ট্রান্সপোর্ট
HTTP/1.1, HTTP/2 এবং HTTP/3 গ্রহণ করুন, TLS 1.3 এবং একটি ঐচ্ছিক WebTransport এন্ডপয়েন্টের সাথে।
স্থির এবং প্রক্সি করা ডেলিভারি
ভ্যালিডেটর এবং প্রিকমপ্রেসড সাইডকার সহ স্ট্যাটিক ফাইল পরিবেশন করুন, বা আপস্ট্রিম পুলের মাধ্যমে অ্যাপ্লিকেশন ট্রাফিক প্রোক্সি করুন।
নিরাপদ ডিফল্ট
WAF, DDoS কন্ট্রোল, বট চ্যালেঞ্জ, উত্তর নিরাপত্তা হেডার, API শিল্ড এবং ডট-ফাইল সুরক্ষা সক্রিয় করে শুরু করুন।
পর্যবেক্ষণযোগ্য অপারেশন
প্রমাণীকৃত পরিসংখ্যান, প্রোমিথিয়াস মেট্রিক্স, অনুরোধ আইডি, সুশৃঙ্খল রিলোড এবং ঐচ্ছিক 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/healthএআই এজেন্টদের জন্য দ্রুত শুরু নির্দেশিকা
পাঁচটি লাইনে Webship-এ একটি AI এজেন্ট সংযুক্ত করুন।
Claude কোড, 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 লিসেনারের উপর চলে; 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"এজ পলিসি
নিরাপদ বেসলাইন অক্ষত রাখুন।
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'"নিয়মিত ট্রাফিকের জন্য normal mode ব্যবহার করুন, stricter active-attack পরিচালনার জন্য under_attack ব্যবহার করুন, এবং যখন শুধুমাত্র probes এবং স্পষ্টভাবে অনুমোদিত পথগুলো উপলব্ধ থাকা উচিত তখন 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 1.1 লক্ষ্য জন্য একটি পৃথক ইন্সট্রুমেন্টেড CLI আছে যা প্রতিনিধিত্বমূলক ট্রাফিকের অধীনে লক্ষ্য-নেটিভ LLVM প্রোফাইল ডেটা সংগ্রহ করে। সঠিক সংস্করণ এবং লক্ষ্য ত্রয়ীটি ব্যবহার করুন, গুরুত্বপূর্ণ রুট এবং প্রোটোকলগুলি পরীক্ষা করুন, এবং প্রক্রিয়াটি সুন্দরভাবে বন্ধ করুন যাতে এটি প্রতিটি .profraw ফাইল ফ্লাশ করতে পারে।
নির্দিষ্ট লক্ষ্য নির্বাচন করুন
PGO ট্রেনিং CLI ডাউনলোড করুন যার রিলিজ ভার্সন এবং Rust টার্গেট ট্রিপল ঠিক আপনার অপ্টিমাইজ করতে ইচ্ছুক রuntime এর সাথে মিলে। প্রথমে এর প্রকাশিত 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.1.0-<target> --config ./webship.tomlNew-Item -ItemType Directory -Force ./profiles
$env:LLVM_PROFILE_FILE = "$PWD/profiles/webship-%p-%m.profraw"
.\webship-pgo-training-1.1.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 পরিচয়ের সাথে এটি তৈরি করবে।
--চেক-কনফিগ- সম্পূর্ণ কনফিগারেশন যাচাই করুন এবং লিসনার শুরু না করে প্রস্থান করুন।
--প্রিন্ট-কার্যকর-কনফিগ- মার্জ করা কার্যকর কনফিগারেশনটি প্রিন্ট করুন, যেখানে গোপন তথ্যগুলি অপসারণ করা হয়েছে।
আপডেট- স্বাক্ষরিত কমিউনিটি ম্যানিফেস্টটি যাচাই করুন, এই সঠিক প্ল্যাটফর্ম লক্ষ্যটি নির্বাচন করুন, এবং একটি নতুন সংস্করণ থাকলে এটি ইনস্টল করুন।
--help/ --version- কমান্ডের সহায়তা বা ইনস্টল করা Webship সংস্করণটি প্রিন্ট করুন।
সাধারণ ব্যর্থতার ধরনসমূহ
কনফিগারেশন থেকে শুরু করুন, তারপর বাইরে এগিয়ে যান।
- --check-config চালান এবং প্রথম রিপোর্ট করা ত্রুটি ঠিক করুন; অজানা TOML ক্ষেত্রগুলি প্রত্যাখ্যাত হয়।
- যাচাই করুন যে কনফিগার করা TCP এবং UDP পোর্টগুলি উপলব্ধ এবং ফায়ারওয়ালের দ্বারা অনুমোদিত।
- সত্যাপন করুন যে সনদপত্র এবং কী বিদ্যমান, সেবা অ্যাকাউন্ট দ্বারা পড়যোগ্য, এবং একটি মিলিত জুটিটি গঠন করে।
- স্বয়ংক্রিয় TLS-এর জন্য, নিশ্চিত করুন যে প্রতিটি কনফিগার করা ডোমেইন Webship হোস্টে সমাধান করে।
- DNS বা বাইরের লোড পাথের মাধ্যমে পরীক্ষা করার আগে স্থানীয় অ্যাপ্লিকেশন লিসেনারে /health কল করুন।
- রানটাইম প্রমাণ প্রয়োজন হলে অস্থায়ীভাবে প্রমাণীকৃত পর্যবেক্ষণ সক্ষম করুন।