VPS پر DeepSeek Harness کو نجی اور محفوظ رکھیں
Linux VPS پر DeepSeek Harness نصب کریں، npm version pin کریں، plugin کی صلاحیت سمجھیں، اور SSH tunnel سے port 3080 کی web UI محفوظ طور پر کھولیں۔
DeepSeek Harness کیا ہے
DeepSeek Harness (dsh) ایک Node.js agent runtime ہے جسے آپ VPS (virtual private server) پر چلا سکتے ہیں۔ اسے محفوظ طریقے سے چلانے کے لیے اسے 127.0.0.1 سے bind کریں اور browser کے ذریعے SSH (secure shell) tunnel سے اس تک رسائی حاصل کریں۔ یہ terminal میں چلنے کے بجائے port 3080 پر web UI (user interface) فراہم کرتا ہے۔ یہ web server اپنی طرف سے کسی password کا تقاضا نہیں کرتا۔ اس لیے اگر port 3080 public کر دیا جائے تو اسے تلاش کرنے والا ہر شخص ایسا agent حاصل کر سکتا ہے جو آپ کی files پڑھتا ہے اور آپ کے Linux user کے طور پر commands چلاتا ہے۔
DeepSeek نے اسے 13 August 2026 کو MIT licence کے تحت npm package @deepseek-ai/dsh کے طور پر جاری کیا۔ project خود کو developer preview قرار دیتا ہے اور بتاتا ہے کہ compatibility توڑنے والی تبدیلیاں متوقع ہیں۔ ذیل میں موجود ہر version number August 2026 کی snapshot ہے۔ اس لیے کسی اہم box پر اسے copy کرنے سے پہلے repository چیک کریں۔
پورے design میں ایک بنیادی تصور موجود ہے: ہر چیز plugin ہے۔ model adapter، tool registry، session log، sandbox، scheduler اور agent loop خود بھی plugins ہیں جو ایک مشترکہ context میں load ہوتے ہیں، اور ان میں سے کسی کو بھی تبدیل کیا جا سکتا ہے۔ کوئی privileged core موجود نہیں جسے plugins صرف decorate کرتے ہوں۔ یہی وجہ ہے کہ harness آزمانے کے قابل ہے، اور اصل خطرہ بھی اسی جگہ موجود ہے۔
Harness کوئی model نہیں ہے
Harness agent loop چلاتا ہے۔ Reasoning کسی دوسرے مقام پر موجود model میں ہوتی ہے، اس لیے جب تک آپ اسے API (application programming interface) key یا اپنے host کیے ہوئے model endpoint کا address نہ دیں، کچھ بھی کام نہیں کرتا۔
آپ یہ configuration UI میں Settings اور پھر Models کے تحت کرتے ہیں۔ Catalog میں بڑے API providers (DeepSeek، OpenAI، Anthropic) کے لیے تیار cards موجود ہیں، جہاں آپ key paste کرتے ہیں۔ "Add a custom provider" دلچسپ option ہے۔ اس میں provider ID، display name، base URL، API protocol اور credential درکار ہوتے ہیں۔ یہ OpenAI-compatible protocol استعمال کرتا ہے، اس لیے اس protocol کو implement کرنے والا کوئی بھی gateway یا local server کام کرے گا۔ Custom providers OpenAI-compatible GET /models endpoint سے model list خودکار طور پر حاصل بھی کر سکتے ہیں۔
اسی طرح آپ harness کو اسی VPS پر موجود model کی طرف point کرتے ہیں۔ Ollama http://127.0.0.1:11434/v1/ پر OpenAI-compatible API فراہم کرتا ہے۔ اس میں API key field میں کوئی بھی string درج کریں، عام طور پر ollama، کیونکہ یہ field لازمی ہے اور بعد میں نظرانداز کر دی جاتی ہے۔ آپ کے VPS میں فٹ ہونے والا چھوٹا model agent چلانے کے لیے کافی ہے یا نہیں، یہ زیادہ مشکل سوال ہے۔ Ollama اور vLLM کے مقامی model server کے طور پر فرق طے کرتا ہے کہ اس جواب کی قیمت آپ کی RAM کے کتنے حصے کی صورت میں ادا ہوگی۔
UI میں درج کی گئی keys صرف لکھنے کے لیے ہوتی ہیں۔ Harness انہیں $DSH_HOME/.credentials.yaml میں محفوظ کرتا ہے اور settings.yaml میں صرف credential reference رکھتا ہے۔ $DSH_HOME کی default value ~/.dsh ہے۔ اس file کو password file سمجھ کر محفوظ رکھیں، کیونکہ یہ واقعی password file ہے۔ جو شخص اسے پڑھ سکتا ہے، وہ آپ کے API budget کو خرچ کر سکتا ہے۔
انسٹال کرنے سے پہلے درکار چیزیں
- Ubuntu 24.04 یا کسی دوسرے موجودہ Linux پر چلنے والا VPS، جس تک SSH کے ذریعے رسائی ہو
- 22.x سیریز میں Node.js 22.19 یا اس کے بعد کا ورژن، یا Node.js 24 اور اس کے بعد کے ورژنز، جن کے مطابق project build اور test کیا جاتا ہے
- ایک عام user account،
rootنہیں، کیونکہ agent shell commands اس user کے طور پر چلاتا ہے جس نے process شروع کیا ہو - اگر plugins انسٹال کرنے کا ارادہ ہے تو PATH میں
pnpmموجود ہو، کیونکہ plugin command اسی کے ذریعے shell command چلاتی ہے - firewall اور provider کے الگ network firewall، دونوں پر port 3080 بند ہو
Ubuntu کا اپنا nodejs package اس harness کے لیے درکار ورژن سے پرانا ہے، اس لیے apt install nodejs استعمال کرنے کے بجائے Node کو NodeSource یا nvm سے انسٹال کریں۔ اگر VPS نیا ہے تو کسی بھی دوسرے کام سے پہلے SSH کو harden کرنا دس منٹ صرف کرنے کے قابل ہے، کیونکہ جس tunnel پر آپ انحصار کرنے والے ہیں وہ اس کے پیچھے موجود SSH server جتنا ہی محفوظ ہے۔
VPS پر DeepSeek Harness انسٹال کریں اور اسے ایک ہی version پر pin کریں
node --version
npx @deepseek-ai/dsh@0.1.0-rc.6 webnpx package download کرتا ہے اور اس کی dsh binary چلاتا ہے۔ web، --profile web کا alias ہے، جو browser application شروع کرتا ہے، اور process وہ address ظاہر کرتا ہے جس پر یہ listening کر رہا ہے۔ default http://127.0.0.1:3080 ہے۔
version کو pin کریں۔ npx @deepseek-ai/dsh web، اسے چلانے کے وقت latest tag جس version کی طرف اشارہ کرتا ہے، وہ resolve کرتا ہے، اور project پہلے ہی کئی release candidates جاری کر چکا ہے اور کہتا ہے کہ breaking changes آنے والی ہیں۔ 0.1.0-rc.6 وہ version ہے جس کی طرف 13 August 2026 کو latest اشارہ کر رہا تھا۔ Pinned version کا مطلب ہے کہ آج set up کیا گیا box اگلے ماہ بھی اسی طرح کام کرے گا۔ اس طرح upgrade ایک ایسا فیصلہ بن جاتا ہے جو آپ خود کرتے ہیں، نہ کہ ایسا حادثہ جس کا بعد میں پتا چلے۔
روزانہ استعمال کے لیے اسے ہر start پر دوبارہ resolve کرنے کے بجائے ایک بار install کریں۔
npm install -g @deepseek-ai/dsh@0.1.0-rc.6
dsh --profile web --helpدوسری line چلانا مفید ہے، کیونکہ launcher اور web app کے flag sets الگ ہیں۔ dsh --help launcher کے اپنے options دکھاتا ہے۔ dsh --profile web --help وہ flags دکھاتا ہے جنہیں web application قبول کرتی ہے۔ --port، --host اور repeatable --trusted-host اسی میں شامل ہیں۔
اب تصدیق کریں کہ یہ کس address پر listening کر رہا ہے۔
ss -tlnp | grep 3080local address column میں 127.0.0.1:3080 لکھا ہونا چاہیے۔ اگر وہاں 0.0.0.0:3080 لکھا ہو تو UI internet سے قابل رسائی ہے۔ ایسی صورت میں کوئی اور کام کرنے سے پہلے process روک دیں۔
آپ کو port 3080 کبھی بھی public کیوں نہیں کرنا چاہیے
web server میں authentication layer موجود نہیں ہے۔ اس کی configuration میں listen host اور listen port ظاہر کیے جاتے ہیں، اور یہی اس کی مکمل سطح ہے۔ non-loopback deployments کے لیے access control ایک الگ trusted-host setting ہے، جو login screen نہیں ہے۔
اب دیکھیں کہ اس port کے پیچھے کیا موجود ہے۔ agent workspace میں files میں ترمیم کرتا ہے اور shell commands چلاتا ہے، جبکہ آپ کے provider credentials اسی کے ساتھ disk پر موجود ہوتے ہیں۔ اس لیے کھلا port 3080 دراصل chat interface کے ساتھ remote shell ہے، جو اسے شروع کرنے والے user کے طور پر چلتا ہے اور اس کے ساتھ آپ کی API key منسلک ہوتی ہے۔ اس کے لیے کسی exploit کی ضرورت نہیں۔ port number معلوم ہونا کافی ہے، اور host کے online ہونے کے چند گھنٹوں میں scanners port numbers تلاش کر لیتے ہیں۔
CLI (command line interface) بھی اسی اصول کے مطابق کام کرتا ہے۔ 0.1.0-rc.6 تک یہ دانستہ طور پر --host 0.0.0.0 کو support نہیں کرتا اور start ہونے کے بجائے usage error کے ساتھ exit ہو جاتا ہے۔ یہ انکار ایک security feature ہے، اس لیے اسے ختم کرنے والا patch تلاش نہ کریں۔
جب tunnel موزوں نہ ہو تو دو دیگر deployments مناسب ہیں۔ box کو private overlay network پر رکھیں تاکہ اسے صرف وہی address ملے جس تک آپ کے اپنے devices route کر سکیں؛ self-hosted Headscale control server یہی سہولت فراہم کرتا ہے۔ یا اسے ایسے reverse proxy کے پیچھے رکھیں جو request کو port 3080 تک پہنچنے سے پہلے authenticate کرے، مثلاً Authentik single sign-on server جو forward auth انجام دے۔ اس کے سامنے ایسا reverse proxy جس میں authentication نہ ہو، security control نہیں ہے۔ یہ صرف ایک طویل URL ہے۔
SSH tunnel کے ذریعے web UI تک رسائی حاصل کریں
یہ کمانڈ server پر نہیں بلکہ اپنے laptop پر چلائیں۔
ssh -N -L 3080:127.0.0.1:3080 you@your-server-L آپ کے laptop پر port 3080 کھولتا ہے اور اس سے connect ہونے والی ہر درخواست کو encrypted SSH session کے ذریعے forward کرتا ہے۔ 127.0.0.1:3080 والا حصہ server پر resolve ہوتا ہے، اس لیے connection loopback سے harness تک پہنچتا ہے، بالکل ایسے جیسے آپ اسی machine پر موجود ہوں۔ -N کا مطلب ہے کہ remote shell شروع نہ کریں، کیونکہ آپ کو صرف forwarding درکار ہے۔
اس کے بعد اپنے local browser میں http://127.0.0.1:3080 کھولیں۔ اگر port 3080 آپ کے laptop پر پہلے ہی استعمال ہو رہا ہو تو بائیں طرف کا نمبر تبدیل کریں: ssh -N -L 3180:127.0.0.1:3080 you@your-server، پھر http://127.0.0.1:3180 کھولیں۔ بائیں طرف کا نمبر local ہے اور دائیں طرف کا نمبر server سے متعلق ہے، اس لیے صرف بائیں طرف والا نمبر تبدیل ہوتا ہے۔
اسے ~/.ssh/config میں محفوظ کریں اور اسے دوبارہ ٹائپ نہ کریں۔
Host dsh
HostName 203.0.113.10
User deploy
IdentityFile ~/.ssh/id_ed25519
LocalForward 3080 127.0.0.1:3080اس کے بعد ssh -N dsh tunnel شروع کرتا ہے۔ اگر browser بتائے کہ connection refused ہے تو عموماً tunnel فعال ہوتا ہے، لیکن دوسری جانب کوئی service listening نہیں کر رہی ہوتی، کیونکہ SSH اس بات سے قطع نظر port forward کرتا ہے کہ harness چل رہا ہے یا نہیں۔ اوپر دی گئی ss command سے server چیک کریں۔
لاگ آؤٹ کرنے کے بعد harness کو چلتا رکھیں
npx کمانڈ آپ کے shell کے ساتھ ختم ہو جاتی ہے۔ systemd user service برقرار رہتی ہے اور crash یا reboot کے بعد harness کو دوبارہ چلا دیتی ہے۔
loginctl enable-linger $USER
mkdir -p ~/.config/systemd/user
command -v dshenable-linger اہم ہے، کیونکہ user services عموماً آپ کے آخری session کے ختم ہوتے ہی رک جاتی ہیں۔ اس کے بغیر tunnel بند کرتے ہی harness ختم ہو جاتا ہے۔ command -v dsh سے ظاہر ہونے والا absolute path لیں اور اسے unit میں درج کریں، کیونکہ systemd اس PATH کو تلاش نہیں کرتا جو آپ کا login shell بناتا ہے۔
[Unit]
Description=DeepSeek Harness web UI
After=network-online.target
[Service]
Type=simple
WorkingDirectory=%h/projects/site
ExecStart=/usr/local/bin/dsh web
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.targetWorkingDirectory محض ظاہری معاملہ نہیں ہے۔ dsh process اپنے invoking directory کو default filesystem location کے طور پر استعمال کرتا ہے۔ اس لیے غلط جگہ سے شروع کی گئی service agent کو غلط default workspace دیتی ہے۔ آپ workspace کو UI میں پھر بھی منتخب کر سکتے ہیں۔
systemctl --user daemon-reload
systemctl --user enable --now dsh
systemctl --user status dshجو unit start ہونے سے انکار کرے، اس کی وجہ تقریباً ہمیشہ غلط ExecStart path یا ایسا Node version ہوتا ہے جسے binary قبول نہیں کرتی۔ journalctl --user -u dsh -n 50 بتاتا ہے کہ کون سا مسئلہ موجود ہے۔ یہی طریقہ VPS پر کسی بھی coding agent کو چلتا رکھنے کے لیے بھی ہے، اور failure modes یکساں ہوتے ہیں۔
پلگ ان کیا کر سکتا ہے
پلگ ان ایک module ہے جو مشترکہ context میں services، typed events اور قابل واپسی effects شامل کرتا ہے۔ جن extension points کو غور سے پڑھنا ضروری ہے، وہ یہ ہیں:
ctx.llmپر model provider register کرناctx.toolsپر model-facing tools شامل کرناctx.shellکے پیچھے shell backend فراہم کرناctx.fsکے پیچھے filesystem access یا policy فراہم کرناctx.commandsپر human commands register کرناctx.jobsکے ذریعے background work چلانا- spawned processes کو
ctx.sandboxbackend کے ذریعے wrap کرنا agent/*اورtools/*events کے ذریعے requests اور tool calls کو intercept کرنا- durable session state کو extend کرنا
ctx.agentsکے ذریعے UI کو control کرنا
اس فہرست کو حملہ آور کے نقطۂ نظر سے پڑھیں۔ ایک پلگ ان filesystem layer اور shell layer فراہم کر سکتا ہے، اور model کی جانب سے کی جانے والی ہر tool call کے درمیان موجود رہ سکتا ہے۔ plugin اور ان interfaces کے درمیان کوئی permission dialog حائل نہیں ہوتا، کیونکہ پلگ ان عام Node code ہوتا ہے جو باقی تمام components کے اسی process میں load ہوتا ہے۔ پلگ ان install کرنے کا مطلب ہے کہ آپ کے agent کی permissions کے ساتھ کسی اجنبی کا code چلایا جائے۔ آپ کے agent کی permissions آپ کے Unix user کی permissions ہوتی ہیں۔
یہ وہی trust decision ہے جو آپ اس وقت کرتے ہیں جب VPS پر کسی agent کے ساتھ MCP server منسلک کرتے ہیں، جہاں MCP سے مراد model context protocol ہے۔ اسی وجہ سے VPS پر coding agent کو محفوظ طریقے سے چلانا model کے بجائے اس account سے شروع ہوتا ہے جس کے تحت agent چلتا ہے۔ اسی طرح npm supply chain attacks سرورز پر اتنے شدید اثر انداز ہوتے ہیں: compromise install step پر ہی ہو جاتا ہے، اور کوئی prompt ظاہر نہیں ہوتا۔
پلگ اِن کہاں سے آتے ہیں
پلگ اِن profiles میں موجود ہوتے ہیں۔ profile ایک نامزد composition ہے جو $DSH_HOME کے تحت محفوظ ہوتی ہے۔ اس کی default قدر ~/.dsh ہے، اور ہر profile directory میں وہ out-of-tree plugins موجود ہوتے ہیں جنہیں وہ install کرتی ہے۔ CLI arguments کو براہِ راست pnpm تک بھیج کر ان کا انتظام کرتا ہے، اور profile directory کو working directory کے طور پر استعمال کرتا ہے۔
dsh plugin --profile web add github:deepseek-harness/turtle-ui
dsh plugin --profile web remove turtle-uiچونکہ arguments pnpm تک بغیر کسی تبدیلی کے پہنچتے ہیں، اس لیے add، remove، update اور why کسی بھی pnpm project کی طرح کام کرتے ہیں، اور پلگ اِن npm package یا GitHub reference ہو سکتا ہے۔ pnpm کا PATH میں پہلے سے موجود ہونا ضروری ہے۔ Node 22 اور بعد کے ورژنز میں corepack enable pnpm اسے PATH میں شامل کرتا ہے۔
Discovery ایک GitHub topic کے ذریعے ہوتی ہے۔ پلگ اِن کے مصنفین اپنی repository میں dsh-plugin topic شامل کرتے ہیں، اور موجودہ پلگ اِن تلاش کرنے کے لیے اسی topic کو browse کیا جاتا ہے۔ topic وہ label ہے جو مصنف اپنی repository پر خود لگاتا ہے۔ کوئی ادارہ اس کا review نہیں کرتا اور نہ ہی کوئی اسے sign کرتا ہے۔ topic page کی ranking stars کی تعداد کے مطابق ہوتی ہے، جو safety کے بجائے مقبولیت ظاہر کرتی ہے۔
چار عادات اس عمل کو قابلِ انتظام رکھتی ہیں۔ install کرنے سے پہلے source پڑھیں، کیونکہ زیادہ تر پلگ اِن اتنے چھوٹے ہوتے ہیں کہ انہیں دس منٹ میں پڑھا جا سکتا ہے۔ branch کو track کرنے کے بجائے exact version یا commit pin کریں۔ harness کو ایسے user کے تحت چلائیں جس کے پاس کوئی دوسری چیز نہ ہو، اور ایسے VPS پر چلائیں جسے ضرورت پڑنے پر rebuild کرنے میں آپ کو اعتراض نہ ہو۔ agent کے لیے اپنی API key اور اپنی spending limit رکھیں۔ یہ key production services کے زیرِ استعمال key سے الگ ہو۔
اگر آپ کسی ایک design کو اختیار کرنے سے پہلے designs کا موازنہ کرنا چاہتے ہیں تو Omnigent multi-agent harness اسی مسئلے کا مختلف structure کے ساتھ حل پیش کرتا ہے، اور plugins استعمال ہونے کے بعد اس کے trade-offs واضح ہو جاتے ہیں۔
جو چیز سب سے پہلے خراب ہوتی ہے
Node بہت پرانا ہے۔ یہ project 22.x series میں Node 22.19 اور اس کے بعد کے versions، یا Node 24 اور اس سے نئے versions کو ہدف بناتا ہے، اور اس کے CI tests بھی انہی versions پر چلتے ہیں۔ پرانا runtime startup پر fail ہو جاتا ہے، کیونکہ code میں ایسی syntax اور APIs استعمال ہوئی ہیں جو اس میں موجود نہیں۔ سب سے پہلے node --version چلائیں۔
Port 3080 پہلے ہی استعمال ہو رہا ہے۔ اس کی وجہ دوسرا harness، کوئی stale process، یا کوئی غیر متعلقہ application ہو سکتی ہے جو 3080 بھی استعمال کرتی ہے۔ ss -tlnp | grep 3080 سے اسے تلاش کریں، پھر اسے stop کریں یا dsh web --port 3180 کے ذریعے harness کو کسی دوسرے port پر start کریں۔ --port web app کے لیے ہے، اس لیے اسے web کے بعد چلائیں۔
Browser tunnel کے ذریعے connect نہیں ہو سکتا۔ تصدیق کریں کہ آپ نے 127.0.0.1 کھولا ہے، server کا public address نہیں، کیونکہ forwarded port صرف آپ کے laptop پر موجود ہوتا ہے۔ پھر تصدیق کریں کہ harness server پر listening کر رہا ہے، کیونکہ SSH یہ forward اس سے قطع نظر قائم کر دیتا ہے کہ دوسری طرف کوئی جواب دے رہا ہے یا نہیں۔
dsh plugin فوراً fail ہو جاتا ہے۔ یہ command، pnpm کے گرد wrapper ہے، اس لیے pnpm binary موجود نہ ہو تو plugin کا کام شروع ہونے سے پہلے ہی command رک جاتی ہے۔
Agent آپ کا project نہیں دیکھ سکتا۔ workspace، default طور پر اس directory پر set ہوتا ہے جہاں process start ہوا تھا۔ اس لیے اگر unit کا WorkingDirectory آپ کی home directory ہو تو agent کو بھی آپ کی home directory ملے گی۔ UI میں workspace منتخب کریں، یا unit درست کرکے اسے reload کریں۔
FAQ
کیا DeepSeek Harness کا web UI port 3080 پر ظاہر کرنا محفوظ ہے؟
نہیں۔ web server میں اپنا login موجود نہیں، اور اس کے پیچھے چلنے والا agent فائلوں میں ترمیم کرتا ہے اور shell commands اس user کے نام سے چلاتا ہے جس نے process شروع کیا ہو۔ آپ کی provider API key بھی اسی disk پر محفوظ ہوتی ہے۔ listener کو 127.0.0.1 پر رکھیں اور اسے SSH tunnel کے ذریعے استعمال کریں۔ private overlay network بھی استعمال کیا جا سکتا ہے، یا ایسا reverse proxy جو port تک درخواست پہنچنے سے پہلے ہر request کی authentication کرے۔ version 0.1.0-rc.6 کے مطابق CLI --host 0.0.0.0 کو مسترد کرتی ہے اور usage error کے ساتھ بند ہو جاتی ہے۔ اس سے واضح ہوتا ہے کہ مصنفین اس طریقے کے بارے میں کیا رائے رکھتے ہیں۔
کیا مجھے DeepSeek API key درکار ہے، یا میں local model استعمال کر سکتا ہوں؟
دونوں طریقے کام کرتے ہیں، کیونکہ harness ایک runtime ہے، model نہیں۔ Settings، پھر Models میں جا کر کسی catalog provider card میں key paste کریں، یا "Add a custom provider" منتخب کریں اور اسے ایسا base URL دیں جو OpenAI-compatible protocol استعمال کرتا ہو۔ local Ollama server http://127.0.0.1:11434/v1/ پر جواب دیتا ہے اور API key field میں کوئی بھی string قبول کرتا ہے۔ keys $DSH_HOME/.credentials.yaml میں محفوظ ہوتی ہیں، جس کی default قدر ~/.dsh/.credentials.yaml ہے۔
DeepSeek Harness plugin install کرنے سے plugin کو دراصل کیا ملتا ہے؟
اس account کی permissions جو harness چلا رہا ہو۔ plugin، اسی process میں load ہونے والا Node code ہے۔ extension points میں shell backend، filesystem layer، tool registry اور ہر tool call کو wrap کرنے والے events شامل ہیں۔ جب تک plugin خود sandbox فراہم نہ کرے، کوئی چیز plugin کو ان interfaces سے الگ نہیں رکھتی۔ install کرنے سے پہلے source پڑھیں، اور harness ایسے user کے طور پر چلائیں جس کے پاس کوئی اہم چیز موجود نہ ہو۔
مجھے کون سا version install کرنا چاہیے، اور کیا یہ کام کرتا رہے گا؟
ایک exact version install کریں، مثلاً npx @deepseek-ai/dsh@0.1.0-rc.6 web۔ 13 August 2026 کو latest tag اسی version کی طرف اشارہ کر رہا تھا۔ project خود کو developer preview کہتا ہے اور بتاتا ہے کہ compatibility توڑنے والی تبدیلیاں متوقع ہیں۔ اس لیے unpinned command ایک دن سے دوسرے دن مختلف طریقے سے کام کر سکتی ہے۔ upgrade کرنے سے پہلے repository چیک کریں، اور توقع رکھیں کہ version کے 0 سے شروع رہنے کے دوران config keys اور plugin interfaces تبدیل ہو سکتی ہیں۔