[{"data":1,"prerenderedAt":185},["ShallowReactive",2],{"seo-verification":3,"blog-atuin-على-vps-مزامنة-سجل-الأوامر-مشفر-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-atuin-على-vps-مزامنة-سجل-الأوامر-مشفر-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":116,"ctaBody":117,"ctaButton":118,"ctaUrl":119,"relatedPosts":120},444,"atuin-على-vps-مزامنة-سجل-الأوامر-مشفر",{"fr":12,"en":13,"ar":10,"es":14},"self-host-atuin-vps","self-host-atuin-on-a-vps-to-sync-your-shell-history","sincronizar-historial-terminal-con-atuin-en-vps","مزامنة سجل الأوامر بين الأجهزة باستخدام ‎Atuin على ‎VPS","استضف خادم ‎Atuin على ‎VPS خاص بك واسترجع أي أمر كتبته على أي جهاز في أقل من ثانية، مع تشفير كامل من جانب العميل.",7,0,false,"2026-10-15T00:00:00+00:00","2026-10-16T01:57:35+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},2,"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-atuin-vps-poster.svg","يستبدل ‎Atuin ملف `.zsh_history` بقاعدة بيانات ‎SQLite محلية، ويزامن هذا السجل بين أجهزتك عبر خادم تديره بنفسك. يُشفَّر كل أمر قبل إرساله: لا يرى الخادم محتواه أبدًا. النتيجة: سجل قابل للبحث في أجزاء من الثانية، مشترك بين أجهزة الحاسوب المحمول والخوادم والآلات الافتراضية، دون تسليم بياناتك لأطراف خارجية.",[34,38,49,52,74,77,81,84,113],{"type":35,"title":36,"body":37},"h2","لماذا تزامن سجل أوامر الطرفية","العمل على أجهزة متعددة يجب أن يكون سلسًا. في الواقع، الأمر `kubectl rollout undo deployment\u002Fapi` الذي كتبته على حاسوبك المحمول ليس موجودًا في طرفية خادم الـ‎CI، والأمر `docker compose exec` من قبل ثلاثة أسابيع اختفى لأن دورة السجل مسحت الإدخالات القديمة.\n\nيحل ‎Atuin المشكلتين من الجذر: يخزن كل أمر في ‎SQLite مع سياقه (الوقت، المدة، رمز الخروج، المجلد الحالي)، ويزامن هذه القاعدة بين أجهزتك عبر خادم تتحكم به. يعمل البحث محليًا — لا تأخير شبكي عند استدعاء أمر — والمزامنة تحدث في الخلفية. تصبح واجهة البحث (`Ctrl+R`) فهرسًا شاملًا لكل ما كتبته على أي جهاز منذ اليوم الأول.",{"type":39,"title":40,"items":41},"ul","الفوائد العملية لـ‎Atuin المُستضاف ذاتيًا",[42,43,44,45,46,47,48],"ابحث عن أي أمر كتبته على أي جهاز في أقل من ثانية عبر `Ctrl+R`.","تشفير من جانب العميل (‏‎AES-256‏): لا يرى الخادم محتوى سجلك أبدًا.","سياق غني لكل إدخال: رمز الخروج، مدة التنفيذ، المجلد الحالي، اسم الجهاز.","لا بيانات تُرسل لأطراف خارجية — أنت تستضيف، أنت تتحكم.","ثنائي ‎Rust بلا تبعيات ثقيلة: يعمل على VPS Start ابتداءً من 99 درهم\u002Fشهر.","دعم ‎zsh و‎bash و‎fish و‎nushell و‎PowerShell — خادم واحد لكل أسطولك.","إحصاءات استخدام مدمجة (`atuin stats`): أكثر أوامرك تكرارًا، وأوقات نشاطك.",{"type":35,"title":50,"body":51},"المتطلبات الأساسية","**‏‎VPS‏**: خادم ‎Atuin هو ثنائي ‎Rust مُجمَّع مع قاعدة بيانات ‎SQLite مدمجة. يستهلك أقل من ‏50‏ ميغابايت من ذاكرة الوصول العشوائي في وضع الراحة، مما يجعله متوافقًا مع VPS Start. خصص ‏512‏ ميغابايت من ذاكرة الوصول العشوائي للنظام بالكامل (نظام التشغيل + عملية ‎Atuin)، و‏5‏ غيغابايت من تخزين ‎SSD للسجل طويل المدى. نواة ‎Linux حديثة (‎Debian 12 أو ‎Ubuntu 22.04+) تعمل بشكل مثالي.\n\nيجب تثبيت **‎Docker و‎Docker ‎Compose** على الـ‎VPS — هذا هو أسلوب النشر الموصى به من المشروع. إن كان الـ‎VPS جديدًا، ثبّت ‎Docker عبر \u003Ca ‎href=\"‎https:\u002F\u002F‎docs.docker.com\u002Fengine\u002Finstall\u002F\">السكريبت الرسمي\u003C\u002Fa> أو قالب ‎Docker من ‎Marketplace لـ‎ServOrbit.\n\n**اسم نطاق** يشير إلى الـ‎VPS موصى به (`atuin.your-domain.com`، سجل A) للحصول على شهادة ‎TLS تلقائية. الشهادة ضرورية: عميل ‎Atuin يرفض المزامنة في نص واضح بشكل افتراضي.",{"type":53,"title":54,"steps":55},"steps","تثبيت خادم ‎Atuin على الـ‎VPS",[56,59,62,65,68,71],{"title":57,"body":58},"الاتصال بالـ‎VPS وإنشاء مجلد العمل","اتصل عبر ‎SSH بالـ‎VPS الخاص بك:\n\n```bash\nssh root@\u003Cip-du-vps>\n```\n\nأنشئ مجلدًا مخصصًا:\n\n```bash\nmkdir -p \u002Fopt\u002Fatuin && cd \u002Fopt\u002Fatuin\n```",{"title":60,"body":61},"كتابة ملف ‎docker-compose.yml","أنشئ ملف التركيب:\n\n```bash\ncat > docker-compose.yml \u003C\u003C 'EOF'\nservices:\n  atuin:\n    image: ghcr.io\u002Fatuinsh\u002Fatuin:v18.23.0\n    command: server start\n    volumes:\n      - .\u002Fconfig:\u002Fconfig\n    ports:\n      - \"8888:8888\"\n    environment:\n      ATUIN_HOST: \"0.0.0.0\"\n      ATUIN_PORT: \"8888\"\n      ATUIN_OPEN_REGISTRATION: \"true\"\n      ATUIN_DB_URI: \"sqlite:\u002F\u002F\u002Fconfig\u002Fhistory.db\"\n    restart: unless-stopped\nEOF\n```\n\nيستخدم هذا الإعداد ‎SQLite (مدمجة، لا تبعيات خارجية) ويفتح التسجيل حتى تتمكن من إنشاء حسابك عند الاتصال الأول.",{"title":63,"body":64},"إنشاء مجلد الإعداد وتشغيل الحاوية","يحتاج ‎Atuin إلى مجلد إعداد قابل للكتابة:\n\n```bash\nmkdir -p config && chown 1000:1000 config\n```\n\nشغّل الخادم:\n\n```bash\ndocker compose up -d\n```\n\nتحقق من تشغيل الحاوية:\n\n```bash\ndocker compose ps\n# NAME      STATUS          PORTS\n# atuin     Up 2 minutes    0.0.0.0:8888->8888\u002Ftcp\n```",{"title":66,"body":67},"فتح المنفذ 8888 في جدار الحماية ‎UFW","يجب أن يكون المنفذ ‏8888‏ متاحًا من أجهزتك العميلة. على ‎Ubuntu\u002FDebian مع ‎UFW:\n\n```bash\nsudo ufw allow 8888\u002Ftcp\nsudo ufw status\n```\n\n⚠️ إن تخطيت هذه الخطوة، سيعرض عميل ‎atuin خطأ `Connection refused` أو `Failed to sync history` عند المزامنة — وهو الخطأ الأكثر شيوعًا في عمليات النشر الذاتي.",{"title":69,"body":70},"وضع وكيل عكسي ‎HTTPS أمام الخادم","يتطلب عميل ‎Atuin ‎HTTPS بشكل افتراضي. ضع ‎Caddy أمامه:\n\n```bash\napt-get install -y caddy\n```\n\nأنشئ `\u002Fetc\u002Fcaddy\u002FCaddyfile`:\n\n```bash\natuin.your-domain.com {\n    reverse_proxy localhost:8888\n}\n```\n\nأعد تشغيل ‎Caddy (يحصل على شهادة ‎Let's ‎Encrypt تلقائيًا):\n\n```bash\nsystemctl restart caddy\n```\n\nتحقق من استجابة الخادم:\n\n```bash\ncurl https:\u002F\u002Fatuin.your-domain.com\n# {\"msg\":\"Atuin server v18.23.0\"}\n```",{"title":72,"body":73},"إغلاق التسجيل بعد إنشاء حسابك","بعد إنشاء حساباتك (انظر الخطوة التالية)، عطّل التسجيل العام لمنع الحسابات غير المرغوب فيها. عدّل `docker-compose.yml`:\n\n```bash\nATUIN_OPEN_REGISTRATION: \"false\"\n```\n\nأعد تشغيل الحاوية:\n\n```bash\ndocker compose up -d\n```\n\nبدلًا من ذلك، أنشئ `\u002Fopt\u002Fatuin\u002Fconfig\u002Fserver.toml` للتحكم الدقيق:\n\n```bash\n[server]\nhost = \"0.0.0.0\"\nport = 8888\nopen_registration = false\n\n[server.db]\ndb_uri = \"sqlite:\u002F\u002F\u002Fconfig\u002Fhistory.db\"\n```",{"type":35,"title":75,"body":76},"تثبيت وإعداد عميل ‎Atuin","على كل جهاز من أجهزتك (حاسوب محمول، خادم تطوير، إلخ)، ثبّت ‎Atuin باستخدام السكريبت الرسمي:\n\n```bash\ncurl --proto '=https' --tlsv1.2 -LsSf https:\u002F\u002Fsetup.atuin.sh | sh\n```\n\nيثبت السكريبت الثنائي في `~\u002F.atuin\u002Fbin` ويكتشف الشل الخاص بك.\n\n**تكامل الشل** — أضف السطر المناسب لملف إعداد الشل:\n\n```bash\n# لـzsh (~\u002F.zshrc)\neval \"$(atuin init zsh)\"\n\n# لـbash (~\u002F.bashrc)\neval \"$(atuin init bash)\"\n\n# لـfish (~\u002F.config\u002Ffish\u002Fconfig.fish)\natuin init fish | source\n```\n\nأعد تحميل الشل: `source ~\u002F.zshrc` (أو ما يعادله).\n\n**تسجيل حساب على خادمك**:\n\n```bash\natuin register \\\n  --server https:\u002F\u002Fatuin.your-domain.com \\\n  -u your-username \\\n  -e your@email.com \\\n  -p your-password\n```\n\nيُنشئ ‎Atuin **مفتاح تشفير محليًا** — يظهر على الشاشة. دوّنه فورًا: ستحتاجه لتوصيل أجهزة أخرى، ولا يمكن إعادة إنشائه.\n\n**المزامنة الأولى**:\n\n```bash\natuin sync\n# Syncing history...\n# History synced!\n```\n\n**تسجيل الدخول من جهاز ثانٍ**:\n\n```bash\natuin login \\\n  --server https:\u002F\u002Fatuin.your-domain.com \\\n  -u your-username \\\n  -p your-password \\\n  -k \"\u003Cyour-encryption-key>\"\n\natuin sync\n```",{"type":78,"title":79,"body":80},"tip","التأمين: جدار الحماية، التسجيل، والوكيل العكسي","ثلاثة إعدادات للتحقق منها بعد النشر الأولي:\n\n**‏1. `open_registration: false`** فور إنشاء حساباتك. إن تركته `true`، يمكن لأي شخص يعرف الـ‎URL إنشاء حساب واستخدام مساحة التخزين الخاصة بك.\n\n**‏2. لا تكشف المنفذ ‏8888‏ مباشرة** — يجب أن يمر حركة المرور دائمًا عبر الوكيل العكسي ‎HTTPS. قيّد ‎UFW:\n\n```bash\n# حظر الوصول الخارجي المباشر للمنفذ 8888\nsudo ufw delete allow 8888\u002Ftcp\n# يتصل الوكيل العكسي المحلي (Caddy) به داخليًا\n```\n\n**‏3. احتِفظ بنسخة احتياطية من قاعدة بيانات ‎SQLite** بانتظام:\n\n```bash\ndocker compose exec atuin sh -c \"sqlite3 \u002Fconfig\u002Fhistory.db \\\".backup \u002Fconfig\u002Fhistory.backup.db\\\"\"\n```\n\nتنمو قاعدة البيانات ببطء — بضعة عشرات من الميغابايت حتى بعد سنوات من الاستخدام المكثف.",{"type":35,"title":82,"body":83},"استكشاف الأخطاء — الأخطاء الشائعة","بعض الأخطاء التي تُواجَه في النشر الذاتي وكيفية حلها.\n\n**`Connection refused` عند أول `atuin sync`**\nالمنفذ ‏8888‏ غير مفتوح في ‎UFW، أو الحاوية غير مشغّلة. تحقق بـ:\n```bash\nsudo ufw status | grep 8888\ndocker compose ps\n```\n\n**`SSL certificate problem: unable to get local issuer certificate`**\nلم تُصدر ‎Caddy شهادة ‎TLS بعد. انتظر ‏30‏–‏60‏ ثانية بعد إعادة تشغيل ‎Caddy وأعد `atuin sync`. تأكد أن ‎DNS لـ`atuin.your-domain.com` يشير لـ‎IP الـ‎VPS.\n\n**`Invalid credentials` عند `atuin login`**\nمفتاح التشفير غلط أو مقطوع. استرجعه من الجهاز الأصلي:\n```bash\natuin key\n```\nالصق القيمة الكاملة (سلسلة ‎base64 طويلة) بعد `-k`.\n\n**`open_registration is disabled`**\nأغلقت التسجيل قبل إنشاء جميع حساباتك. اضبط مؤقتًا `ATUIN_OPEN_REGISTRATION: \"true\"` في `docker-compose.yml`، أعد التشغيل، أنشئ الحساب، ثم ارجع إلى `false`.\n\n**السجل لا يتزامن بعد `atuin sync`**\nتحقق أن الخادم هو الهدف المُعيَّن في إعداد العميل:\n```bash\ncat ~\u002F.config\u002Fatuin\u002Fconfig.toml | grep sync_address\n# sync_address = \"https:\u002F\u002Fatuin.your-domain.com\"\n```\nإن كانت الخاصية غائبة، أضفها يدويًا إلى `~\u002F.config\u002Fatuin\u002Fconfig.toml`.",{"type":85,"title":86,"headers":87,"rows":93},"comparison","‎Atuin مقابل البدائل: أي أداة تختار",[88,89,90,91,92],"الأداة","تشفير ‎E2E","مزامنة متعددة الأجهزة","استضافة ذاتية","بحث متقدم",[94,100,105,108],[95,96,97,98,99],"**‎Atuin**","‏نعم (‏‎AES-256‏، مفتاح محلي)‏","‏نعم (خادم اختياري)‏","‏نعم (‏‎Docker‏، ‏‎SQLite‏)‏","‏نعم (سياق، رمز الخروج، المدة)‏",[101,102,102,103,104],"‎McFly","لا","‏غير متاح (محلي فقط)‏","‏نعم (شبكة عصبية، المجلد الحالي)‏",[106,102,102,103,107],"‎Histdb","‏جزئي (‏‎SQLite‏ محلي، مكون إضافي لـ‎zsh)‏",[109,102,110,111,112],"‏‎zsh_history‏ الأصلي","‏لا (‏‎rsync‏ يدوي ممكن)‏","غير متاح","‏بسيط (‏‎grep‏، ‏‎fzf‏ اختياري)‏",{"type":35,"title":114,"body":115},"‎Atuin، أداة تنمو معك","يُعدّ ‎Atuin ‎v18.23.0 الحل الأكثر اكتمالًا للمطوّر الذي يعمل على أجهزة متعددة ويهتم بخصوصية بياناته. يستغرق الإعداد الأولي أقل من ‏30‏ دقيقة على VPS Start، والنتيجة سجل شامل ومشفّر قابل للبحث الفوري من أي طرفية.\n\nبعد تشغيل الخادم، يمكنك التعمق أكثر: إعداد المزامنة التلقائية (`atuin daemon`)، واستخدام الإحصاءات الأسبوعية (`atuin stats`)، أو استكشاف واجهة البحث المتقدم مع التصفية حسب رمز الخروج أو اسم الجهاز. الأمر الذي تبحث عنه موجود دائمًا — بغض النظر عن الجهاز الذي كتبته عليه.","انشر ‎Atuin على ‎VPS من ‎ServOrbit","يكفي {{‎vps.start.name}} لتشغيل خادم ‎Atuin باستمرار. وصول ‎Root، و‎IPv4 مخصص، و‎SSD ‎NVMe — كل ما تحتاجه لسجل أوامر خاص ومتاح دائمًا.","نشر ‎Atuin على ‎VPS","\u002Fsolutions\u002Fdeveloppeurs",[121,145,168],{"id":122,"slug":123,"slugs":124,"title":128,"excerpt":129,"readTime":130,"views":131,"isPinned":19,"publishedAt":132,"updatedAt":133,"category":134,"categories":139,"featuredImage":29,"bgImage":30,"posterImage":141,"relatedSolution":142},41,"نشر-تطبيقاتك-باستخدام-coolify-على-vps",{"fr":125,"en":126,"ar":123,"es":127},"deployer-avec-coolify","deploy-your-applications-with-coolify-on-a-vps","desplegar-aplicaciones-con-coolify-en-un-vps","نشر تطبيقاتك باستخدام ‏Coolify على خادم ‏VPS","دليل شامل لنشر ‏Coolify على خادم ‏VPS: التثبيت، وإعداد ‏HTTPS، وربط ‏Git، ونشر أول تطبيق، وقواعد البيانات، والنسخ الاحتياطية، واستكشاف الأخطاء.",9,1,"2026-05-10T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":135,"name":136,"slug":137,"color":138,"icon":137},3,"النشر","deploiement","bg-success\u002F10 text-success",[140],{"id":135,"name":136,"slug":137,"color":138,"icon":137},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-coolify-poster.svg",{"categorySlug":143,"appSlug":144},"نشر-التطبيقات-وdevops","coolify",{"id":146,"slug":147,"slugs":148,"title":152,"excerpt":153,"readTime":154,"views":131,"isPinned":19,"publishedAt":155,"updatedAt":133,"category":156,"categories":162,"featuredImage":29,"bgImage":30,"posterImage":164,"relatedSolution":165},108,"تأمين-خادمك-الافتراضي-vps-باستخدام-crowdsec",{"fr":149,"en":150,"ar":147,"es":151},"securiser-vps-crowdsec","securing-your-vps-with-crowdsec","proteger-vps-con-crowdsec","تأمين خادمك الافتراضي VPS باستخدام CrowdSec","انشر CrowdSec على خادمك الافتراضي VPS لحجب الهجمات بفضل الكشف السلوكي وقائمة حظر مجتمعية مشتركة.",4,"2026-03-04T00:00:00+00:00",{"id":157,"name":158,"slug":159,"color":160,"icon":161},8,"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[163],{"id":157,"name":158,"slug":159,"color":160,"icon":161},"\u002Fblog\u002Fcovers\u002Fsecuriser-vps-crowdsec-poster.svg",{"categorySlug":166,"appSlug":167},"الأمن-السيبراني-والحصن","crowdsec",{"id":169,"slug":170,"slugs":171,"title":175,"excerpt":176,"readTime":135,"views":18,"isPinned":19,"publishedAt":177,"updatedAt":133,"category":178,"categories":179,"featuredImage":29,"bgImage":30,"posterImage":181,"relatedSolution":182},110,"إعداد-شبكة-vpn-باستخدام-wireguard-على-خادمك-vps",{"fr":172,"en":173,"ar":170,"es":174},"vpn-wireguard-vps","setting-up-a-wireguard-vpn-on-your-vps","montar-una-vpn-wireguard-en-vps","إعداد شبكة VPN باستخدام WireGuard على خادمك VPS","انشر شبكة VPN باستخدام WireGuard على خادمك Cloud VPS: نفق مشفَّر، وإعداد Docker وعملاء في دقائق قليلة. دليل خطوة بخطوة.","2026-03-02T00:00:00+00:00",{"id":157,"name":158,"slug":159,"color":160,"icon":161},[180],{"id":157,"name":158,"slug":159,"color":160,"icon":161},"\u002Fblog\u002Fcovers\u002Fvpn-wireguard-vps-poster.svg",{"categorySlug":183,"appSlug":184},"الشبكات-وvpn","wireguard-server",1792123442050]