[{"data":1,"prerenderedAt":287},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-headscale-على-vps-خادم-تحكم-tailscale-خاص-بك-ma-ar":6,"promo-bar-likely":286},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-headscale-على-vps-خادم-تحكم-tailscale-خاص-بك-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":226,"ctaBody":227,"ctaButton":228,"ctaUrl":229,"relatedPosts":230},164,"استضافة-headscale-على-vps-خادم-تحكم-tailscale-خاص-بك",{"fr":12,"en":13,"ar":10,"es":14},"self-host-headscale-tailscale-vps","self-host-headscale-on-a-vps-your-own-tailscale-control-server","auto-alojar-headscale-en-un-vps-servidor-tailscale","استضافة Headscale على VPS: خادم تحكّم Tailscale خاص بك","استبدل خادم التحكم السحابي لـ Tailscale بـ Headscale على خادم VPS الخاص بك — مستخدمون غير محدودين، وشبكة WireGuard متشابكة كاملة، وmagic DNS وقوائم ACL، دون أي اعتماد على SaaS.",19,2,false,"2026-07-05T00:00:00+00:00","2026-11-08T01:13:12+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-headscale-tailscale-vps-poster.svg",{"categorySlug":34,"appSlug":35},"الشبكات-وvpn","headscale","تتوقف الطبقة المجانية من Tailscale (خطة Personal) عند 6 مستخدمين، وتُفوتَر خطة Standard بعدها لكل مقعد، وفي كل الأحوال تُخزَّن خريطة شبكتك في سحابة Tailscale. إن Headscale (رخصة BSD-3-Clause، وأكثر من 45 ألف نجمة على GitHub) بديل مفتوح المصدر جاهز للاستبدال لخادم تنسيق Tailscale — انشره على خادم VPS الخاص بك واستمر باستخدام عملاء Tailscale الرسميين على كل جهاز. يتصل فريقك عبر أنفاق WireGuard بثقة معدومة، وmagic DNS، والتحكم في الوصول القائم على ACL، وكل ذلك مُستضاف ذاتيًا ودون حدود.\n\nيغطي هذا الدليل التثبيت (عبر Docker أو حزمة `.deb`)، والوكيل العكسي HTTPS، والتحقق من الشبكة المتشابكة، ونقل فريق يعمل حاليًا على Tailscale، وحساب عتبة الربحية، وما لا يستطيع Headscale فعله.",[38,42,56,59,66,91,94,109,112,116,119,131,134,146,149,164,167,208,211,218],{"type":39,"title":40,"body":41},"h2","لماذا تستضيف خادم التحكم ذاتيًا","إن Tailscale برمجية استثنائية — أداء WireGuard، وعملاء متعددو المنصات، وmagic DNS يعمل من المحاولة الأولى. لكنه لا ينقل حركة مرورك: تنتقل حزم WireGuard مباشرة من عقدة إلى أخرى، مشفّرة من طرف إلى طرف. أما ما يعمل في سحابة Tailscale فهو مستوى التحكم — خادم التنسيق الذي يتبادل المفاتيح العامة، ويُعرّف النظراء ببعضهم، ويوزّع عناوين `100.x.y.z`، وينشر أسماء MagicDNS، ويوزّع قوائم ACL وخريطة مرحّلات DERP. ومن دونه لا تجد العُقد بعضها. يعيد Headscale بناء خادم التنسيق هذا بلغة Go مفتوحة المصدر وبالبروتوكول نفسه، لتشغّله على بنيتك التحتية الخاصة: لا يتغير لدى عملاء Tailscale سوى عنوان تسجيل الدخول.\n\nإلى جانب سقف الطبقة المجانية البالغ 6 مستخدمين، فإن السبب الرئيسي للاستضافة الذاتية هو موطن البيانات: يعرف مستوى التحكم أي الأجهزة على شبكتك، وعناوين IP الخاصة بها، وأسماءها، وسياسات ACL لديك. تشغيل Headscale يعني أن هذه المعلومات تبقى على خادم VPS الخاص بك — لا في سحابة طرف آخر — وأن شبكتك لم تعد رهينة قرار تسعير أو عطل لدى جهة خارجية.",{"type":43,"title":44,"items":45},"ul","ما الذي يمنحك إياه Headscale المُستضاف ذاتيًا",[46,47,48,49,50,51,52,53,54,55],"مستخدمون وأجهزة دون حدود: لا سقف يفرضه البرنامج ولا تسعير لكل مقعد — تنمو شبكتك المتشابكة مع فريقك، ولا يحدّها سوى موارد خادم VPS.","عملاء Tailscale الرسميون في كل مكان: Linux وmacOS وWindows وiOS وAndroid — دون حاجة إلى نسخة مُفرّعة أو عميل بديل.","أنفاق WireGuard من نظير إلى نظير: يتولى Headscale تبادل المفاتيح وتوزيع ACL فقط؛ أما حركة المرور الفعلية فتمر مباشرة عبر WireGuard بين النظراء.","Magic DNS: اعثر على كل عقدة في شبكتك عبر اسم مضيفها (`laptop.mesh.yourdomain.com`) دون تعديل DNS العام.","سياسات بصيغة HuJSON: صيغة ملف السياسة نفسها المستخدمة في Tailscale، مع ACL وGrants — حدّد أي المستخدمين والأجهزة يصلون إلى أي الخدمات.","دعم مرحّلات DERP: استخدم خريطة DERP العامة لـ Tailscale لاجتياز NAT، أو فعّل خادم DERP المدمج في Headscale لتبقى المرحّلات لديك أيضًا.","واجهة API وسطر أوامر headscale: أنشئ المستخدمين، وأصدر مفاتيح المصادقة المسبقة، وأدر العُقد برمجيًا.","تسجيل دون حساب على tailscale.com: ينضم زملاؤك إلى الشبكة بمفتاح تولّده أنت، أو عبر مزوّد OpenID Connect الذي تستخدمه أصلًا (Keycloak وAuthelia وGoogle Workspace…).","الشبكات الفرعية وexit nodes وTaildrop وTailscale SSH: يدعم الخادم الوظائف الأساسية لـ Tailscale.","أقل من 50 MB من الذاكرة في وضع الخمول — يعمل بأريحية على خادم VPS بسعة 1 GB إلى جانب أحمال عمل أخرى.",{"type":39,"title":57,"body":58},"المتطلبات","خادم VPS بمعالج افتراضي واحد على الأقل و512 MB من الذاكرة (تترك 1 GB هامشًا للنظام) يعمل بنظام Ubuntu 22.04 أو أحدث، أو Debian 12 أو أحدث — وهي التوزيعات التي تستهدفها الحزم الرسمية. لمسار Docker، ثبّت Docker وDocker Compose v2. يلزم عنوان IP عام، ويُوصى بإعداد مزدوج IPv4 + IPv6.\n\nاسم نطاق يشير إلى الخادم **مطلوب**: يتصل عملاء Tailscale بخادم التحكم عبر عنوان URL، ويوصي المشروع بشدة بتقديم Headscale عبر HTTPS على المنفذ 443، إذ يفترض عميل Tailscale هذا المنفذ في بعض الحالات. خصّص نطاقًا فرعيًا للخادم (`vpn.yourdomain.com`) وآخر مختلفًا لأسماء MagicDNS (`mesh.yourdomain.com`): يرفض Headscale أن يكون نطاق MagicDNS هو نطاق `server_url` نفسه.",{"type":43,"title":60,"items":61},"المنافذ الواجب فتحها على الخادم",[62,63,64,65],"TCP 443: إلزامي. عبره يسجّل العملاء أنفسهم ويستلمون خريطة الشبكة؛ وهو المنفذ الوحيد الذي لا غنى عنه لخادم التنسيق.","TCP 80: فقط للتحقق من Let's Encrypt عبر HTTP-01 وللتحويل إلى HTTPS.","UDP 3478: فقط إذا فعّلت خادم DERP المدمج، الذي يحتاجه لـ STUN. مع خريطة DERP العامة لـ Tailscale لا داعي لفتحه.","TCP 8080 (Headscale) و9090 (المقاييس) و50443 (gRPC): أبقها على `127.0.0.1`. يتحدث الوكيل العكسي إلى 8080 محليًا، ولا تكشف واجهة إدارة gRPC أبدًا ما لم تحتج إليها.",{"type":67,"title":68,"steps":69},"steps","انشر Headscale باستخدام Docker Compose",[70,73,76,79,82,85,88],{"title":71,"body":72},"اكتب ملف Compose","تتكون الحزمة من خدمة واحدة: الصورة الرسمية `docker.io\u002Fheadscale\u002Fheadscale:0.29.7`، آخر إصدار مستقر في 7 نوفمبر 2026، تُشغَّل بالأمر `serve`. يحفظ Headscale كل شيء — المفاتيح وقاعدة البيانات وسجلات العُقد — في مجلدين على المضيف: التهيئة، مُحمّلة للقراءة فقط على `\u002Fetc\u002Fheadscale`، والبيانات على `\u002Fvar\u002Flib\u002Fheadscale`. لا حاجة إلى قاعدة بيانات خارجية أو خدمة تخزين مؤقت؛ فـ SQLite مدمج.\n\n```bash\nmkdir -p \u002Fopt\u002Fheadscale\u002Fconfig \u002Fopt\u002Fheadscale\u002Flib\ncat > \u002Fopt\u002Fheadscale\u002Fcompose.yaml \u003C\u003C'EOF'\nservices:\n  headscale:\n    image: docker.io\u002Fheadscale\u002Fheadscale:0.29.7\n    container_name: headscale\n    restart: unless-stopped\n    read_only: true\n    tmpfs:\n      - \u002Fvar\u002Frun\u002Fheadscale\n    ports:\n      - \"127.0.0.1:8080:8080\"\n    volumes:\n      - \u002Fopt\u002Fheadscale\u002Fconfig:\u002Fetc\u002Fheadscale:ro\n      - \u002Fopt\u002Fheadscale\u002Flib:\u002Fvar\u002Flib\u002Fheadscale\n    command: serve\n    healthcheck:\n      test: [\"CMD\", \"headscale\", \"health\"]\nEOF\n```\n\nلا يُنشر المنفذ إلا على `127.0.0.1`: الوكيل العكسي هو الذي يواجه الإنترنت.",{"title":74,"body":75},"ولّد التهيئة","ابدأ من ملف المثال الخاص بالإصدار الذي تنشره بالضبط، ولا تغيّر سوى المفاتيح أدناه. `server_url` هو عنوان HTTPS الذي سيتصل به عملاء Tailscale؛ ويجب أن يستمع `listen_addr` على `0.0.0.0` داخل الحاوية. تُعرَّف قاعدة البيانات تحت `database` (`type: sqlite`). لا يبقى إلا مسار مفتاح noise: يولّده Headscale عند أول تشغيل إن لم يكن الملف موجودًا.\n\n```bash\ncurl -Lo \u002Fopt\u002Fheadscale\u002Fconfig\u002Fconfig.yaml \\\n  https:\u002F\u002Fraw.githubusercontent.com\u002Fjuanfont\u002Fheadscale\u002Fv0.29.7\u002Fconfig-example.yaml\n```\n\n```yaml\nserver_url: https:\u002F\u002Fvpn.yourdomain.com\nlisten_addr: 0.0.0.0:8080\nnoise:\n  private_key_path: \u002Fvar\u002Flib\u002Fheadscale\u002Fnoise_private.key\ndatabase:\n  type: sqlite\n  sqlite:\n    path: \u002Fvar\u002Flib\u002Fheadscale\u002Fdb.sqlite\ndns:\n  magic_dns: true\n  base_domain: mesh.yourdomain.com\n```\n\nفي ServOrbit، تكتب مهمة التوفير ملف `config.yaml` من نطاقك تلقائيًا.",{"title":77,"body":78},"شغّل الحاوية وتحقق","شغّل `docker compose up -d` من `\u002Fopt\u002Fheadscale`. يولّد Headscale مفتاح noise ثم يبدأ الاستماع على المنفذ 8080. تحقق من نقطة نهاية الصحة: ينبغي أن يُعيد `curl -s http:\u002F\u002F127.0.0.1:8080\u002Fhealth` القيمة `{\"status\":\"pass\"}`. الصورة مبنية على أساس distroless بلا صدفة أوامر، لكن سطر أوامر headscale يُستدعى مباشرة: يؤكد `docker exec headscale headscale version` الإصدار الجاري، ويعرض `docker logs --follow headscale` السجلات.",{"title":80,"body":81},"أنشئ مستخدمًا وولّد مفتاح مصادقة","ينظّم Headscale الأجهزة في «مستخدمين» (كانوا يُسمّون سابقًا namespaces). أنشئ واحدًا ثم دوّن معرّفه الرقمي: يتوقع الخيار `--user` في `preauthkeys create` هذا المعرّف لا الاسم.\n\n```bash\ndocker exec headscale headscale users create myteam\ndocker exec headscale headscale users list\ndocker exec headscale headscale preauthkeys create --user 1 --reusable --expiration 24h\n```\n\nمن دون `--reusable` لا يصلح المفتاح إلا مرة واحدة، ومن دون `--expiration` تنتهي صلاحيته بعد ساعة. انسخ المفتاح المعروض — ستستخدمه لتسجيل كل جهاز.",{"title":83,"body":84},"سجّل جهازًا","على أي جهاز مثبّت عليه عميل Tailscale الرسمي، وجّهه إلى نسخة Headscale الخاصة بك: `tailscale up --login-server https:\u002F\u002Fvpn.yourdomain.com --authkey \u003Cyour-preauth-key>`. يظهر الجهاز في قائمة عُقد Headscale خلال ثوانٍ: `docker exec headscale headscale nodes list`. من دون مفتاح، يفتح العميل صفحة تعرض معرّف مصادقة؛ وافق عليه من الخادم بالأمر `docker exec headscale headscale auth register --user myteam --auth-id \u003CAUTH_ID>`. بعد التسجيل، تتواصل الأجهزة عبر عنوان IP الشبكة (`100.64.x.y`) أو عبر اسم مضيف magic DNS.",{"title":86,"body":87},"عرّف سياسات التحكم في الوصول","ما دامت لا توجد سياسة محمّلة، يسمح Headscale بكل حركة المرور بين العُقد — وهذا مقبول لفريق صغير موثوق، لا حين تتجاور حواسيب المطورين والمتعاقدين وخوادم الإنتاج. أنشئ `\u002Fopt\u002Fheadscale\u002Fconfig\u002Fpolicy.hujson` وصرّح به في `config.yaml` عبر `policy.path: \u002Fetc\u002Fheadscale\u002Fpolicy.hujson`. يستخدم Headscale صيغة HuJSON نفسها المستخدمة في Tailscale: عرّف مجموعات المستخدمين، ووسِم الأجهزة كخوادم أو محطات عمل، واكتب قواعد تحدد أي المجموعات تصل إلى أي المنافذ. يوصي المشروع باستخدام Grants بدل ACL التي يعدّها Tailscale قديمة. تحقق من الملف بالأمر `headscale policy check --file \u003Cfile>` ثم أعد التحميل: لا تُقرأ السياسة إلا عند إعادة التحميل (`docker kill --signal=HUP headscale`، أو `systemctl reload headscale` في التثبيت الأصلي). احفظ هذا الملف في مستودع Git خاص لتحتفظ بسجل تغييرات الوصول.",{"title":89,"body":90},"أول تسجيل دخول","لا يملك Headscale واجهة ويب ولا حسابات: إنه خادم التحكم في شبكتك الخاصة، ويُدار عبر سطر الأوامر. عبر SSH: `docker exec -it headscale headscale users create monuser`، ثم المفتاح بالأمر `preauthkeys create --user \u003CID> --reusable --expiration 24h`، واربط أجهزتك بالأمر `tailscale up --login-server https:\u002F\u002F\u003Cyour-domain> --authkey \u003Ckey>`. يمكن للتطبيقات الرسومية أيضًا استهداف خادم مخصص: على macOS اضغط Option مع النقر على أيقونة Tailscale، ثم قائمة Debug ثم `Custom Login Server`؛ وعلى iOS الخيار `Use custom coordination server` في قائمة تسجيل الدخول؛ وعلى Android الخيار `Use an alternate server`؛ وعلى Windows الأمر `tailscale login --login-server` في PowerShell.",{"type":39,"title":92,"body":93},"من دون Docker: حزمة ‎.deb الرسمية","ينشر المشروع حزم `.deb` لـ Debian وUbuntu ويوصي بها على هذه التوزيعات: فهي تنشئ مستخدم النظام `headscale`، وتضع تهيئة افتراضية، وتثبّت وحدة systemd. إنه المسار الأبسط إذا كان Headscale وحيدًا على خادمه أو إذا كنت تفضّل خدمة أصلية على حاوية. أوامر الإدارة هي نفسها الواردة أعلاه، من دون البادئة `docker exec headscale`.",{"type":67,"title":95,"steps":96},"ثبّت Headscale عبر حزمة ‎.deb",[97,100,103,106],{"title":98,"body":99},"نزّل الحزمة وثبّتها","احصل على حزمة الإصدار المطلوب من صفحة الإصدارات على GitHub، بحسب معمارية جهازك (`amd64` أو `arm64`)، وثبّتها عبر `apt` الذي يحلّ الاعتماديات:\n\n```bash\nHEADSCALE_VERSION=\"0.29.7\"\nHEADSCALE_ARCH=\"amd64\"\nwget --output-document=headscale.deb \\\n  \"https:\u002F\u002Fgithub.com\u002Fjuanfont\u002Fheadscale\u002Freleases\u002Fdownload\u002Fv${HEADSCALE_VERSION}\u002Fheadscale_${HEADSCALE_VERSION}_linux_${HEADSCALE_ARCH}.deb\"\nsudo apt install .\u002Fheadscale.deb\n```\n\nثم تحقق: يجب أن يعرض `headscale version` القيمة `0.29.7`.",{"title":101,"body":102},"عدّل التهيئة","تضع الحزمة التهيئة في `\u002Fetc\u002Fheadscale\u002Fconfig.yaml` ومثالًا محدّثًا في `\u002Fusr\u002Fshare\u002Fdoc\u002Fheadscale\u002Fexamples\u002Fconfig-example.yaml`. غيّر المفاتيح نفسها كما في Docker (`server_url` و`database` و`dns.base_domain`)، لكن أبقِ `listen_addr: 127.0.0.1:8080`: تعمل الخدمة على المضيف، ولا ينبغي أن يصل إليها إلا الوكيل العكسي. تقيم البيانات في `\u002Fvar\u002Flib\u002Fheadscale`.",{"title":104,"body":105},"أعد تشغيل الخدمة وتحقق منها","أعد تشغيل الخدمة لتعيد قراءة التهيئة، ثم افحص حالتها وسجلاتها:\n\n```bash\nsudo systemctl restart headscale\nsudo systemctl status headscale\nsudo journalctl -u headscale -f\n```\n\nيجب أن يظهر `Active: active (running)`. عند أول تشغيل، أكثر الأخطاء شيوعًا هي `server_url` بلا المخطط `https:\u002F\u002F`، ونطاق MagicDNS مطابق لنطاق الخادم.",{"title":107,"body":108},"استخدم سطر الأوامر دون صلاحيات root","يتحدث سطر الأوامر إلى الخدمة عبر مقبس Unix `\u002Fvar\u002Frun\u002Fheadscale\u002Fheadscale.sock`، الذي لا يصل إليه افتراضيًا إلا المستخدم `headscale` وroot. استخدم `sudo`، أو نفّذ الأوامر بصفة المستخدم `headscale`، أو أضف حسابك إلى المجموعة `headscale`. تحقق من الوصول بالأمر `headscale users list`.",{"type":39,"title":110,"body":111},"قدّم Headscale عبر HTTPS خلف Nginx","يتحدث عملاء Tailscale إلى Headscale ببروتوكولهم الخاص، المنقول عبر اتصال WebSocket يُفتح بطلب POST، وتكون قيمة ترويسة `Upgrade` فيه `tailscale-control-protocol`. لذا يجب أن يمرّر الوكيل العكسي ترويستي `Upgrade` و`Connection` كما هما، وألا يخزّن الردود مؤقتًا. تتبع التهيئة أدناه المثال الوارد في توثيق المشروع؛ احصل أولًا على الشهادة عبر certbot (`certbot certonly --nginx -d vpn.yourdomain.com`).\n\n```nginx\nmap $http_upgrade $connection_upgrade {\n  default keep-alive;\n  ''      close;\n}\n\nserver {\n  listen 80;\n  server_name vpn.yourdomain.com;\n  location = \u002Fgenerate_204 { return 204; }\n  location \u002F { return 301 https:\u002F\u002F$server_name$request_uri; }\n}\n\nserver {\n  listen 443 ssl;\n  http2 on;\n  server_name vpn.yourdomain.com;\n  ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvpn.yourdomain.com\u002Ffullchain.pem;\n  ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvpn.yourdomain.com\u002Fprivkey.pem;\n\n  location \u002F {\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection $connection_upgrade;\n    proxy_set_header Host $host;\n    proxy_set_header X-Real-IP $remote_addr;\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    proxy_set_header X-Forwarded-Proto $scheme;\n    proxy_buffering off;\n    proxy_pass http:\u002F\u002F127.0.0.1:8080;\n  }\n}\n```\n\nاترك `tls_cert_path` و`tls_key_path` فارغين في `config.yaml`: يتولى Nginx إنهاء TLS، لذا فالتحذير `listening without TLS` عند التشغيل متوقع. ولكي تُظهر سجلات Headscale عناوين IP الحقيقية للعملاء، صرّح بالوكيل مصدرًا موثوقًا. في التثبيت الأصلي تكفي واجهة الحلقة المحلية؛ أما مع Docker فأضف أيضًا شبكة جسر Docker (`docker network inspect`)، لأن الحاوية ترى الوكيل قادمًا من بوابتها:\n\n```yaml\ntrusted_proxies:\n  - 127.0.0.1\u002F32\n  - ::1\u002F128\n```\n\nيعمل Caddy أيضًا بسطر `reverse_proxy 127.0.0.1:8080` بسيط. في المقابل، لا يُدعم وكيل Cloudflare ولا Cloudflare Tunnel، لأنهما لا يتعاملان مع WebSocket عبر POST: يجب أن يبقى سجل DNS للخادم في وضع DNS فقط.",{"type":113,"title":114,"body":115},"tip","اقرِن Headscale بـ Authelia لوصول شبكي محمي بالمصادقة الثنائية","يتولى Headscale التحكم في الوصول على مستوى الشبكة (أي عناوين IP يمكنها التواصل مع أي نظراء)، لكنه لا يفرض المصادقة على مستوى التطبيق. اقرِنه بـ \u003Ca href=\"\u002Far\u002Fالمدونة\u002Fاستضافة-authelia-على-vps-مصادقة-ثنائية-ودخول-موحد-لمنظومتك\">Authelia على خادم VPS نفسه\u003C\u002Fa>: وجّه خدماتك الداخلية (التي لا يُوصل إليها إلا عبر الشبكة المتشابكة) عبر طبقة forward-auth الخاصة بـ Authelia. يجب على المستخدمين إكمال المصادقة الثنائية للوصول إلى الخدمات حتى بعد دخولهم الشبكة — دفاع في العمق لأحمال العمل الحساسة.",{"type":39,"title":117,"body":118},"تحقق من أن العُقد ترى بعضها","ظهور عقدة في `headscale nodes list` لا يثبت إلا أنها وصلت إلى خادم التنسيق. قبل تمرير حركة مرور حقيقية عبر الشبكة، تحقق من المسار من طرف إلى طرف انطلاقًا من العملاء أنفسهم.",{"type":67,"title":120,"steps":121},"افحص الشبكة المتشابكة من عميل",[122,125,128],{"title":123,"body":124},"اقرأ حالة الشبكة","على عقدة مسجّلة، شغّل `tailscale status`. يسرد الأمر النظراء مع عنوان IP الشبكة واسمهم ونوع الارتباط: تعني `direct` أن نفق WireGuard قائم دون وسيط، وتعني `relay` أنه يمر عبر مرحّل DERP — يعمل، لكن بزمن استجابة أعلى.",{"title":126,"body":127},"اختبر الاتصال","خذ عنوان IP أحد النظراء من `tailscale status` ثم نفّذ `ping 100.64.0.2`، أو الأفضل `tailscale ping \u003Cnode-name>` الذي يبيّن هل وصل الرد مباشرة أم عبر مرحّل. إذا ظهر النظير لكنه لا يستجيب، يقيس `tailscale netcheck` زمن الاستجابة نحو كل منطقة DERP ويكشف UDP صادرًا محجوبًا.",{"title":129,"body":130},"اختبر حل أسماء MagicDNS","مع `dns.magic_dns: true`، تستجيب كل عقدة لاسمها القصير واسمها الكامل: `ping node-name` أو `ping node-name.mesh.yourdomain.com`. لا حاجة إلى أي سجل DNS عام لهذه الأسماء الداخلية. إذا فشل الحل، يعرض `tailscale dns status` تهيئة DNS التي استلمها العميل من الخادم.",{"type":39,"title":132,"body":133},"حالة استخدام: SSH بين خوادم VPS دون كشف المنفذ 22","بعد تسجيل خوادم VPS للتطوير والإنتاج على الشبكة المتشابكة نفسها، لم يعد SSH بحاجة إلى الاستماع على الواجهة العامة: يمر الاتصال عبر عنوان الشبكة داخل نفق WireGuard. أبقِ وصول الطرفية (console) لدى مزوّدك مفتوحًا قبل لمس الجدار الناري، تحسبًا لقاعدة تغلق الباب أمامك.",{"type":67,"title":135,"steps":136},"اقصر SSH على الشبكة المتشابكة",[137,140,143],{"title":138,"body":139},"حدّد الواجهة وعنوان الشبكة","على كل خادم VPS، ينشئ عميل Tailscale الواجهة `tailscale0`. يعرض `tailscale ip -4` عنوان الشبكة للجهاز؛ دوّن عنوان خادم الإنتاج، مثلًا `100.64.0.3`.",{"title":141,"body":142},"اسمح بـ SSH عبر tailscale0 فقط","على خادم الإنتاج، اسمح بـ SSH على واجهة الشبكة المتشابكة قبل رفضه في غيرها — يطبّق UFW أول قاعدة مطابقة:\n\n```bash\nufw allow in on tailscale0 to any port 22 proto tcp\nufw deny 22\u002Ftcp\nufw enable\nufw status verbose\n```\n\nلم يعد المنفذ 22 متاحًا من الإنترنت، لكنه يبقى مفتوحًا لكل عُقد الشبكة التي تسمح بها سياستك.",{"title":144,"body":145},"اتصل عبر الشبكة المتشابكة","من خادم التطوير أو من محطة عملك المسجّلة، اتصل عبر عنوان IP أو اسم MagicDNS: `ssh user@100.64.0.3` أو `ssh user@vps-prod.mesh.yourdomain.com`. يمر كل شيء داخل النفق المشفّر؛ ثم حدّد في سياسة Headscale أي المجموعات يمكنها الوصول إلى المنفذ 22 على هذا الخادم.",{"type":39,"title":147,"body":148},"انقل فريقًا يعمل حاليًا على Tailscale","لا يتطلب الانتقال أي إعادة تثبيت: يقبل العميل الرسمي الخيار `--login-server`، فيكفي فصله عن الشبكة القديمة ثم وصله بخادمك. ينقطع كل جهاز بضع ثوانٍ أثناء العملية. وبما أن خادمك يوزّع بنفسه عناوين `100.x` وأسماء MagicDNS، خطّط لتحديث السكربتات وقواعد الجدار الناري وملفات التهيئة التي تشير إلى القديمة منها.",{"type":67,"title":150,"steps":151},"انقل العملاء إلى Headscale",[152,155,158,161],{"title":153,"body":154},"استرجع سياسة الوصول","انسخ ملف سياسة الـ tailnet من محرر Access controls في لوحة Tailscale وابدأ منه: صيغة HuJSON هي نفسها. افحصه بالأمر `headscale policy check` قبل الانتقال — فبعض الوظائف، مثل IP sets، غير مدعومة، ولا يتوفر إلا جزء من autogroups.",{"title":156,"body":157},"افصل كل عميل ثم أعد وصله","على Linux أو من سطر الأوامر، نفّذ تسجيل الخروج ثم إعادة الاتصال بمفتاح مصادقة مسبقة:\n\n```bash\ntailscale logout\ntailscale up --login-server https:\u002F\u002Fvpn.yourdomain.com --authkey \u003CPREAUTHKEY>\n```\n\nعلى macOS وiOS وAndroid وWindows، سجّل خروج الحساب من التطبيق، ثم أضف الخادم المخصص كما ورد أعلاه.",{"title":159,"body":160},"ابدأ بأجهزة الاختبار","انقل أولًا محطة عمل وخادمًا للاختبار، وتحقق من `tailscale status` ومن حل الأسماء، ثم أجهزة التطوير، والإنتاج في الأخير. ما دامت بعض الأجهزة في الجهة الأخرى، فلن ترى الشبكتان بعضهما: خطّط لنقل الخدمة وعملائها في النافذة الزمنية نفسها.",{"title":162,"body":163},"أغلق حساب Tailscale أو خفّض خطته","بعد نقل كل العُقد والتحقق منها، أغلق الـ tailnet أو عد إلى خطة Personal إن كان لديك استخدام شخصي. ولّد مفتاح مصادقة مسبقة جديدًا للتسجيلات القادمة بدل الاحتفاظ بمفتاح الانتقال إلى ما لا نهاية.",{"type":39,"title":165,"body":166},"Headscale مقابل Tailscale Cloud","يبقى Tailscale Cloud المسار الأسهل للفرق الصغيرة: لا خادم للصيانة، وترقيات تلقائية، وفوترة مدمجة — وتبقى خطة Personal مجانية حتى 6 مستخدمين. بعد ذلك، تظهر خطة Standard بسعر 8 $ لكل مستخدم شهريًا في جدول الأسعار المعمول به منذ 8 أبريل 2026: أي 40 $ شهريًا لخمسة أشخاص و80 $ لعشرة. أما Headscale فيكلّف ثمن خادم VPS أيًا كان عدد الفريق — في ServOrbit يكفي VPS Solo (2 vCPU \u002F 4 GB) بسعر 99 درهم\u002Fشهر لعشرات العُقد — يضاف إليه وقت التشغيل: الترقيات والنسخ الاحتياطي والمراقبة.\n\nلذلك يصبح Headscale منطقيًا عندما يتجاوز الفريق 6 مستخدمين، أو عندما يفرض موطن البيانات إبقاء طوبولوجيا شبكتك خارج خوادم الأطراف الثالثة، أو عندما تريد قابلية تدقيق كاملة لسجلات التنسيق. العملاء متطابقون — الانتقال من Tailscale Cloud إلى Headscale يعني إعادة تشغيل `tailscale up --login-server` على كل جهاز.",{"type":168,"title":169,"headers":170,"rows":175},"comparison","Tailscale Personal وTailscale Standard وHeadscale",[171,172,173,174],"المعيار","Tailscale Personal","Tailscale Standard","Headscale على VPS",[176,181,186,188,192,196,200,204],[177,178,179,180],"السعر","مجاني","8 $ لكل مستخدم شهريًا","تكلفة خادم VPS",[182,183,184,185],"المستخدمون","حتى 6","دون سقف","لا حد برمجي",[187,184,184,185],"أجهزة المستخدمين",[189,190,190,191],"خادم التنسيق","سحابة Tailscale","خادمك، تحت سيطرتك",[193,194,194,195],"العميل","عميل Tailscale الرسمي","عميل Tailscale الرسمي (`--login-server`)",[197,198,198,199],"MagicDNS وACL وGrants","نعم","نعم، على نطاقك الخاص",[201,202,202,203],"Funnel وServe","يقدّمهما Tailscale","غير مدعومين",[205,206,206,207],"الصيانة","لا شيء (خدمة مُدارة)","ترقيات ونسخ احتياطي ومراقبة",{"type":39,"title":209,"body":210},"ما لا يحل Headscale محله","ينفّذ Headscale خادم التنسيق، لا المنصة التجارية كلها. ويسرد توثيقه نفسه ما ينقصه: لا يُدعم Tailscale Funnel (نشر خدمة محلية على الإنترنت)، ولا Tailscale Serve (مشاركتها داخل الـ tailnet عبر وكيل محلي)، ولا سجلات تدفق الشبكة؛ ولا يمكن استخدام مجموعات OIDC في ACL. ولا توجد كذلك لوحة ويب رسمية: كل شيء يمر عبر سطر الأوامر أو API. إذا اقتصر استخدامك على الاتصال الشبكي المتشابك وMagicDNS وسياسات الوصول والشبكات الفرعية وexit nodes، فإن Headscale يغطي الحاجة؛ أما إذا كنت تستخدم Funnel أو Serve بانتظام، فوازن بين هذه الوظائف وحجم التوفير قبل الانتقال — أو ألقِ نظرة على \u003Ca href=\"\u002Far\u002Fالمدونة\u002Fnetbird-شبكة-vpn-مشبكة-wireguard-باستضافة-ذاتية\">NetBird\u003C\u002Fa> الذي يستضيف واجهة إدارته ذاتيًا أيضًا.",{"type":43,"title":212,"items":213},"النسخ الاحتياطي والترقيات",[214,215,216,217],"خذ نسخة احتياطية قبل كل ترقية: يطبّق Headscale ترحيلات قاعدة البيانات عند تشغيل الإصدار الجديد. أوقف الخدمة، وانسخ التهيئة والبيانات، ثم أعد التشغيل: `cd \u002Fopt\u002Fheadscale && docker compose stop`, `cp -aR \u002Fopt\u002Fheadscale \u002Fopt\u002Fheadscale.backup-$(date +%Y%m%d%H%M%S)`, `docker compose up -d`.","يحتوي مجلد البيانات على `db.sqlite` و`noise_private.key`: فقدان هذا المفتاح يغيّر هوية الخادم ويُجبر كل العُقد على إعادة التسجيل. انسخه أيضًا خارج الخادم، إلى تخزين كائنات مثلًا.","ترقَّ إصدارًا بعد إصدار: يشترط المشروع المرور بكل إصدار ثانوي مستقر (مثلًا `0.27` ثم `0.28` ثم `0.29`)، دائمًا في آخر تصحيح له، دون تخطي أي منها.","اقرأ ملاحظات الإصدار على GitHub قبل كل ترقية: فهي تنبّه إلى تغييرات التهيئة الكاسرة. ثم قارن ملف `config.yaml` لديك بملف المثال الخاص بالإصدار الجديد.",{"type":43,"title":219,"items":220},"استكشاف الأعطال: الأخطاء الأكثر شيوعًا",[221,222,223,224,225],"لا ينجح العميل في التسجيل: تحقق من أن `https:\u002F\u002Fvpn.yourdomain.com\u002Fhealth` يستجيب من الخارج، وأن `server_url` يطابق نطاق الشهادة تمامًا، وأن الوكيل يمرّر ترويستي `Upgrade` و`Connection`.","اتصالات `relay` بدل `direct`: يحجب NAT صارم أو جدار ناري حركة UDP بين العقدتين. شغّل `tailscale netcheck` على الطرفين لمعرفة ما يُحجب؛ تبقى الحركة ممكنة عبر مرحّلات DERP.","عقدة تظهر بحالة `offline`: وصل العميل إلى الخادم لكنه لا يحافظ على الجلسة. افحص `systemctl status tailscaled` و`journalctl -u tailscaled` على العقدة؛ والسبب الأكثر شيوعًا جدار ناري محلي يقطع الاتصالات الصادرة.","يرفض Headscale التشغيل بعد ترقية: أُعيدت تسمية مفتاح تهيئة أو حُذف. يذكره السجل باسمه؛ ارجع إلى ملف المثال الخاص بالإصدار المثبّت.","لا يحل MagicDNS الأسماء: تحقق من أن `dns.magic_dns` على `true` وأن `dns.base_domain` يختلف عن نطاق `server_url`، ثم أعد وصل العميل ليستلم تهيئة DNS الجديدة.","انشر Headscale على خادم VPS الخاص بك بنقرة واحدة","استضِف خادم التحكم الخاص بـ Tailscale ذاتياً بمستخدمين غير محدودين ودون أي اعتماد على السحابة. يوفّر ServOrbit نسخة Headscale جاهزة للاستخدام — التهيئة مُولّدة، وHTTPS جاهز، ومفتاح المصادقة الأول مطبوع في مخرجات المهمة.","انشر Headscale","\u002Fvps-cloud?template=headscale",[231,249,268],{"id":232,"slug":233,"slugs":234,"title":238,"excerpt":239,"readTime":240,"views":18,"isPinned":19,"noindex":19,"publishedAt":241,"updatedAt":21,"category":242,"categories":243,"featuredImage":30,"bgImage":31,"posterImage":245,"relatedSolution":246},141,"wireguard-على-خادم-vps-شبكة-vpn-سريعة-ومبسطة-وخاصة",{"fr":235,"en":236,"ar":233,"es":237},"installer-wireguard-vps","wireguard-on-a-vps-a-fast-lean-and-private-vpn","wireguard-en-un-vps-vpn-rapido-y-privado","WireGuard على خادم VPS: شبكة VPN سريعة ومبسّطة وخاصة","انشر WireGuard على خادم VPS من ServOrbit: أنفاق سريعة وتهيئة واضحة ورموز QR للعملاء ووصول عن بُعد خاص.",7,"2026-02-04T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[244],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Finstaller-wireguard-vps-poster.svg",{"categorySlug":247,"appSlug":248},"securite","wireguard-server",{"id":250,"slug":251,"slugs":252,"title":256,"excerpt":257,"readTime":258,"views":259,"isPinned":19,"noindex":19,"publishedAt":260,"updatedAt":261,"category":262,"categories":263,"featuredImage":30,"bgImage":31,"posterImage":265,"relatedSolution":266},162,"استضافة-authelia-على-vps-مصادقة-ثنائية-ودخول-موحد-لمنظومتك",{"fr":253,"en":254,"ar":251,"es":255},"self-host-authelia-vps","self-host-authelia-on-a-vps-mfa-and-sso-for-your-whole-stack","alojar-authelia-en-un-vps","Authelia على VPS: المصادقة الثنائية وSSO لعمليتك بأكملها","دليل شامل لنشر Authelia على VPS باستخدام Docker Compose: التحكم المتقدم في الوصول، TOTP، WebAuthn\u002Fمفاتيح المرور، OIDC، الانتقال إلى LLDAP، مراقبة Prometheus، ومقارنة مع Authentik.",10,4,"2026-07-04T00:00:00+00:00","2026-09-24T12:27:51+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[264],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fself-host-authelia-vps-poster.svg",{"categorySlug":27,"appSlug":267},"authelia",{"id":269,"slug":270,"slugs":271,"title":275,"excerpt":276,"readTime":23,"views":277,"isPinned":19,"noindex":19,"publishedAt":278,"updatedAt":279,"category":280,"categories":281,"featuredImage":30,"bgImage":31,"posterImage":283,"relatedSolution":284},140,"openvpn-على-خادم-vps-وصول-عن-بعد-خاص-ومضبوط",{"fr":272,"en":273,"ar":270,"es":274},"installer-openvpn-serveur-vps","openvpn-on-a-vps-private-controlled-remote-access","openvpn-en-un-vps-acceso-remoto-privado","OpenVPN على VPS: التثبيت والأمان واستكشاف الأخطاء","ثبّت OpenVPN Server على خادم VPS: المتطلبات المسبقة، Easy-RSA، server.conf، ملفات ‎.ovpn، fail2ban، ufw وحل الأخطاء الشائعة.",0,"2026-02-05T00:00:00+00:00","2026-09-30T11:20:33+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[282],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Finstaller-openvpn-serveur-vps-poster.svg",{"categorySlug":247,"appSlug":285},"openvpn-server",true,1794270222148]