[{"data":1,"prerenderedAt":178},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-linkwarden-على-vps-إدارة-الإشارات-المرجعية-للفريق-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"id":7,"slug":8,"slugs":9,"title":12,"excerpt":13,"readTime":14,"views":15,"isPinned":16,"publishedAt":17,"category":18,"categories":24,"featuredImage":26,"bgImage":27,"posterImage":28,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":126,"ctaBody":127,"ctaButton":128,"ctaUrl":129,"relatedPosts":130},251,"استضافة-linkwarden-على-vps-إدارة-الإشارات-المرجعية-للفريق",{"fr":10,"en":11,"ar":8},"heberger-linkwarden-vps","self-host-linkwarden-on-a-vps-team-bookmark-management","استضافة Linkwarden على VPS: إدارة الإشارات المرجعية للفريق","انشر Linkwarden على خادمك الافتراضي لمركزة أبحاث وكالتك: مجموعات مشتركة وصلاحيات لكل عضو وتعليقات مشتركة وإضافة متصفح متعددة المستخدمين.",10,0,false,"2026-08-13T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[25],{"id":19,"name":20,"slug":21,"color":22,"icon":23},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-linkwarden-vps-poster.svg",{"categorySlug":30,"appSlug":31},"التعاون-والإنتاجية","linkwarden","‏Linkwarden هو مدير إشارات مرجعية تعاونية مفتوح المصدر مرخص بموجب AGPL-3.0، مصمم للفرق التي تشترك في متابعة نشطة. ينظم الروابط في مجموعات، ويتيح صلاحيات دقيقة لكل عضو، ويوفر إضافة متصفح يستخدمها الجميع. يشرح هذا الدليل كيفية نشره على VPS بصلاحيات root وتهيئة الوكيل العكسي وتسليم بيئة جاهزة للاستخدام إلى وكالتك.",[34,38,49,52,80,84,87,120,123],{"type":35,"title":36,"body":37},"h2","لماذا تستضيف Linkwarden بنفسك","‏الاعتراض الأكثر شيوعاً هو العبء التشغيلي: خدمة إضافية تحتاج إلى تحديث ونسخ احتياطي وتأمين — يبدو الأمر أسهل مع البقاء على SaaS. الاعتراض مشروع، لكنه يقوم على افتراض غير صحيح: أداة محتواة بشكل جيد كـ Linkwarden لا تتطلب صيانة أكثر من أي صورة Docker قياسية. التحديث يعني سحب الصورة الجديدة وإعادة تشغيل الخدمة. النسخ الاحتياطي يستهدف وحدة تخزين قاعدة بيانات واحدة. بروتوكول TLS يُدار بواسطة وكيل عكسي موجود بالفعل على الخادم.\n\nما يحله الاستضافة الذاتية هو التبعية لـ SaaS قد تتغير شروط وصوله بين عشية وضحاها. فقدت عدة فرق الوصول إلى مكتبات أبحاث مشتركة بعد إغلاق أو استحواذ على أداة تابعة لجهة خارجية. على خادمك الافتراضي، تنتمي البيانات لمؤسستك، وتبقى المجموعات متاحة بصرف النظر عن الوضع التجاري للمورد، وأنت من يتحكم في سياسة الاحتفاظ بالبيانات.",{"type":39,"title":40,"items":41},"ul","ما تقدمه Linkwarden لوكالتك",[42,43,44,45,46,47,48],"**مجموعات مشتركة** — لكل مشروع أو عميل مجموعته الخاصة، يصل إليها أعضاء الفريق المعنيون دون الكشف عن المجلدات الأخرى.","**صلاحيات لكل عضو** — تُدار الأذونات على مستوى المجموعة: قارئ أو مساهم أو مدير، وفق دور كل شخص.","**تعليقات مشتركة** — يمكن لأعضاء المجموعة ترك ملاحظات على كل رابط، مما يتجنب تكرار البحث ويراكم المعرفة المؤسسية.","**إضافة متصفح متعددة المستخدمين** — يُثبِّت كل متعاون الإضافة ويحفظ مباشرة في المجموعة المستهدفة دون فتح واجهة الويب.","**أرشفة الصفحات** — تحتفظ Linkwarden بنسخة محلية من الصفحات المحفوظة حتى لا تضيع الموارد التي تختفي من الويب.","**‏REST API** — تتكامل الروابط مع أدوات داخلية أخرى عبر API دون أي تبعية للواجهة الرسومية.","**ملكية كاملة للبيانات** — لا تحليلات سلوكية، ولا مشاركة الإشارات المرجعية مع أطراف خارجية.",{"type":35,"title":50,"body":51},"المتطلبات قبل التثبيت","‏خادم VPS بـ **2 vCPU و2 غيغابايت من الذاكرة** يكفي لوكالة من 5 إلى 15 شخصاً في الاستخدام العادي: تُحمَّل المجموعات بسرعة وتعمل أرشفة الصفحات في الخلفية دون التأثير على التصفح. بأقل من 1 غيغابايت، قد يُنهي نظام OOM killer عملية Node.js الخاصة بـ Next.js تحت الحمل.\n\nخطط لـ **10 إلى 20 غيغابايت من التخزين** حسب حجم الصفحات المؤرشفة: تزن كل لقطة شاشة ونسخة صفحة ما بين 100 كيلوبايت و2 ميغابايت. خادم `{{vps.power.name}}` مع NVMe SSD مناسب لهذا العبء.\n\nعلى صعيد الشبكة، يجب أن **يكون المنفذ 443 مفتوحاً** وأن يشير اسم نطاق إلى IP الخادم قبل توليد شهادة TLS. تتطلب Linkwarden **Docker وDocker Compose**، المتاحَين على جميع توزيعات Linux الرئيسية. قاعدة بيانات PostgreSQL مطلوبة — وهي مضمَّنة في ملف Compose الرسمي.",{"type":53,"title":54,"steps":55},"steps","النشر خطوة بخطوة",[56,59,62,65,68,71,74,77],{"title":57,"body":58},"تحضير دليل العمل","‏تواصل عبر SSH بخادمك الافتراضي بصفتك root أو مستخدم sudoer، ثم أنشئ المجلد الذي سيحتوي ملفات الإعداد:\n\n```bash\nmkdir -p \u002Fopt\u002Flinkwarden && cd \u002Fopt\u002Flinkwarden\n```",{"title":60,"body":61},"إنشاء ملف Compose","‏أنشئ ملف `docker-compose.yml` بالمحتوى التالي. يجب استبدال القيم بين أقواس قبل التشغيل:\n\n```yaml\nservices:\n  postgres:\n    image: postgres:16-alpine\n    restart: unless-stopped\n    environment:\n      POSTGRES_DB: linkwarden\n      POSTGRES_USER: linkwarden\n      POSTGRES_PASSWORD: \u003Cdb-password>\n    volumes:\n      - postgres_data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n\n  linkwarden:\n    image: ghcr.io\u002Flinkwarden\u002Flinkwarden:latest\n    restart: unless-stopped\n    depends_on:\n      - postgres\n    environment:\n      DATABASE_URL: postgresql:\u002F\u002Flinkwarden:\u003Cdb-password>@postgres:5432\u002Flinkwarden\n      NEXTAUTH_SECRET: \u003Crandom-32-character-string>\n      NEXTAUTH_URL: https:\u002F\u002Fyour-domain.com\n    volumes:\n      - linkwarden_data:\u002Fdata\u002Fdata\n    ports:\n      - \"127.0.0.1:3000:3000\"\n\nvolumes:\n  postgres_data:\n  linkwarden_data:\n```\n\n‏لتوليد قيمة `NEXTAUTH_SECRET`، نفِّذ على الخادم: `openssl rand -base64 32`.",{"title":63,"body":64},"ضبط NEXTAUTH_URL بعناية","‏يجب أن تتطابق المتغيرة `NEXTAUTH_URL` تماماً مع عنوان URL العام لنسختك، بما في ذلك البروتوكول. إذا كانت نسختك خلف وكيل عكسي TLS، يجب أن تبدأ القيمة بـ `https:\u002F\u002F` لا بـ `http:\u002F\u002F`.\n\n‏قيمة `NEXTAUTH_URL` المشوهة تُنتج الخطأ التالي عند التحميل الأول: `Error: NEXTAUTH_URL is not configured. Please set NEXTAUTH_URL in your .env`. إذا استخدمت القيمة `http:\u002F\u002F` بينما يُعيد الوكيل HTTPS، لا تُنشأ الجلسة وتعيد صفحة تسجيل الدخول التحميل في حلقة دون أي رسالة خطأ مرئية.",{"title":66,"body":67},"تشغيل الحاويات","‏من داخل `\u002Fopt\u002Flinkwarden`، نفِّذ:\n\n```bash\ndocker compose up -d\n```\n\nتُنزَّل الصور، ثم يبدأ PostgreSQL أولاً. تنتظر Linkwarden حتى تصبح قاعدة البيانات جاهزة قبل تهيئة المخطط. تحقق من أن كلتا الحاويتين في حالة `running` باستخدام `docker compose ps`.",{"title":69,"body":70},"إعداد الوكيل العكسي (nginx)","‏تستمع Linkwarden على `127.0.0.1:3000`. أضف كتلة خادم nginx لتوجيه حركة HTTPS:\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name your-domain.com;\n\n    ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Fyour-domain.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fyour-domain.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\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    }\n}\n```\n\n‏أعد تحميل nginx باستخدام `nginx -t && systemctl reload nginx`.",{"title":72,"body":73},"توليد شهادة TLS","‏إذا لم يكن ذلك قد تم بعد، أنشئ شهادة Let's Encrypt باستخدام Certbot:\n\n```bash\ncertbot --nginx -d your-domain.com\n```\n\n‏يُعدِّل Certbot كتلة nginx تلقائياً لإضافة مسارات الشهادات وإعادة التوجيه من HTTP إلى HTTPS. التجديد تلقائي عبر مؤقت systemd المُثبَّت بالحزمة.",{"title":75,"body":76},"إنشاء أول حساب مدير","‏افتح `https:\u002F\u002Fyour-domain.com` في متصفح. تطلب Linkwarden إنشاء الحساب الأول عند أول وصول. يصبح هذا الحساب مدير النسخة. ادعُ كل متعاون من **الإعدادات ← الأعضاء** بإدخال عنوان بريده الإلكتروني.",{"title":78,"body":79},"توزيع إضافة المتصفح","‏إضافة Linkwarden متاحة على Chrome Web Store وFirefox Add-ons. أثناء الإعداد الأولي، يدخل كل عضو عنوان URL للنسخة (`https:\u002F\u002Fyour-domain.com`) ويُنشئ رمز API من **الإعدادات ← رموز الوصول**. تصل الإشارات المرجعية المحفوظة عبر الإضافة مباشرة إلى المجموعة التي اختارها المستخدم.",{"type":81,"title":82,"body":83},"tip","التصليب بعد التثبيت","‏قيِّد الوصول المباشر إلى المنفذ 3000 من الخارج — يجب أن يستجيب فقط على الواجهة المحلية: تحقق من أن سطر `ports` في ملف Compose يربط بـ `127.0.0.1:3000:3000` لا بـ `0.0.0.0:3000:3000`.\n\n‏فعِّل التحديثات التلقائية للصور باستخدام Watchtower أو جدوِل مهمة cron أسبوعية: `docker compose pull && docker compose up -d`.\n\n‏احتفظ بنسخة احتياطية من وحدة التخزين `postgres_data` بتفريغ يومي: `docker compose exec postgres pg_dump -U linkwarden linkwarden > \u002Fopt\u002Fbackups\u002Flinkwarden-$(date +%F).sql`. خزِّن التفريغات خارج الخادم (S3، تخزين بعيد) للحماية من عطل القرص.",{"type":35,"title":85,"body":86},"Linkwarden أم Karakeep: حالتا استخدام مختلفتان","‏كثيراً ما يُذكر Karakeep (المعروف سابقاً بـ Hoarder) وLinkwarden معاً في مقارنات مديري الإشارات المرجعية ذاتية الاستضافة، لكنهما لا يعالجان الحاجة نفسها.\n\n‏يركز Karakeep على الالتقاط الذكي: يستخرج محتوى الصفحات ويلخصه تلقائياً باستخدام نموذج لغوي محلي أو بعيد. إنه مصمم للاستخدام الفردي، حيث تكمن القيمة في الذكاء الاصطناعي الذي يصنف ويرتب. لا يوفر مفهوم المجموعات المشتركة ولا إدارة الصلاحيات لكل عضو.\n\n‏تم تصميم Linkwarden للتعاون: المفهوم المحوري هو **المجموعة المشتركة**، يصل إليها عدة أعضاء بصلاحيات متمايزة. التعليقات مشتركة لا شخصية. تتصل إضافة المتصفح بنسخة المؤسسة لا بحساب شخصي. للوكالة التي تريد مركزة أبحاث فرقها المشروعية، Linkwarden هو الأداة المناسبة. لمن يريد مكتبة شخصية يُثريها الذكاء الاصطناعي، Karakeep أنسب.",{"type":88,"title":89,"headers":90,"rows":94},"comparison","Linkwarden مقابل Karakeep — جدول مقارن",[91,92,93],"المعيار","Linkwarden","Karakeep",[95,99,103,107,110,113,117],[96,97,98],"الاستخدام الرئيسي","أبحاث الفريق التعاونية","الالتقاط الشخصي بمساعدة الذكاء الاصطناعي",[100,101,102],"المجموعات المشتركة","نعم، مع صلاحيات لكل عضو","لا (استخدام فردي)",[104,105,106],"التعليقات المشتركة","نعم","لا",[108,105,109],"إضافة متصفح متعددة المستخدمين","نعم (حساب واحد)",[111,106,112],"تلخيص المحتوى بالذكاء الاصطناعي","نعم (نموذج محلي أو API)",[114,115,116],"الحد الأدنى من الموارد","‏2 vCPU \u002F 2 غيغابايت RAM","‏2 vCPU \u002F 4 غيغابايت RAM (نموذج محلي)",[118,119,119],"الترخيص","AGPL-3.0",{"type":35,"title":121,"body":122},"الأخطاء الشائعة أثناء التثبيت","‏**تعيد صفحة تسجيل الدخول التحميل في حلقة دون رسالة خطأ.**\n‏السبب المرجح: تم ضبط `NEXTAUTH_URL` على `http:\u002F\u002F` بينما يُقدم الوكيل العكسي HTTPS. يُنشئ NextAuth ملف تعريف ارتباط آمن يرفض المتصفح إعادة إرساله عبر اتصال غير مشفر. صحِّح القيمة في ملف Compose، ثم أعد التشغيل باستخدام `docker compose up -d --force-recreate`.\n\n‏**تُحمَّل الواجهة لكن صور المجموعات لا تظهر.**\n‏مسار وحدة التخزين `linkwarden_data` غير مُركَّب بشكل صحيح. تحقق من إعلان وحدة التخزين في قسم `volumes` من ملف Compose ومن أن أي ربط سابق لم يترك المجلد فارغاً.\n\n‏**خطأ `ECONNREFUSED` في سجلات Linkwarden عند بدء التشغيل.**\n‏تبدأ Linkwarden قبل أن يكون PostgreSQL جاهزاً لقبول الاتصالات. أضف `healthcheck` لخدمة `postgres` وشرط `depends_on: postgres: condition: service_healthy` لخدمة `linkwarden` لفرض الترتيب.\n\n‏**تعرض إضافة المتصفح رسالة «تعذر الوصول إلى الخادم».**\n‏تحقق من أن عنوان URL المُدخل في إعدادات الإضافة لا يحمل شرطة مائلة في النهاية (`https:\u002F\u002Fyour-domain.com` لا `https:\u002F\u002Fyour-domain.com\u002F`). بعض إصدارات الإضافة حساسة لهذه التفصيلة.\n\n‏**لا تعمل أرشفة الصفحات.**\n‏تستدعي عملية الأرشفة Chromium في وضع headless من داخل الحاوية. على VPS بأقل من 1.5 غيغابايت من الذاكرة، تنتهي العملية قبل اكتمال الالتقاط. زِد موارد الخادم الافتراضي أو عطِّل الأرشفة التلقائية من **الإعدادات ← الأرشفة** إذا كانت الذاكرة محدودة.",{"type":35,"title":124,"body":125},"الخطوة التالية: مركزة جميع خدمات الوكالة","‏الوكالة التي تستضيف أبحاثها ذاتياً باستخدام Linkwarden تجاوزت الحد بالفعل: تدير بياناتها وتحديثاتها ونسخها الاحتياطية. هذا هو موقف الفريق الذي يعرف ما يُشغِّله.\n\n‏الخطوة المنطقية التالية هي مركزة نطاقات عملائك واستضافتهم وخوادمهم الافتراضية تحت علامتك التجارية الخاصة، في مساحة موزع واحدة دون تعدد الواجهات أو فقدان الرؤية على التجديدات. هذا بالضبط ما يتيحه برنامج الوكالة في ServOrbit.\n\n‏إذا أردت التوسع في استضافة أدوات الفريق ذاتياً، تكمل مقالا **Outline** (wiki تعاوني) وأتمتة الخوادم باستخدام **Ansible** هذا الدليل.","مركز أيضاً خدمات عملائك","‏الوكالة التي تستضيف أدواتها الداخلية ذاتياً تتحكم بالفعل في بنيتها التحتية. الخطوة التالية هي إدارة نطاقات عملائك واستضافتهم وخوادمهم الافتراضية تحت علامتك التجارية الخاصة.","اكتشف خطة الوكالة","\u002Fmarketplace\u002Fالتعاون-والإنتاجية\u002Flinkwarden",[131,145,164],{"id":132,"slug":133,"slugs":134,"title":137,"excerpt":138,"readTime":139,"views":15,"isPinned":16,"publishedAt":140,"category":141,"categories":142,"featuredImage":26,"bgImage":27,"posterImage":144,"relatedSolution":26},80,"استضافة-outline-على-خادم-vps-الخاص-بك",{"fr":135,"en":136,"ar":133},"heberger-outline","host-outline-on-your-own-vps","استضافة Outline على خادم VPS الخاص بك","انشُر Outline على خادم VPS Cloud الخاص بك: قاعدة معرفة تعاونية ذاتية الاستضافة مع Docker وPostgreSQL وRedis وSSL. دليل كامل.",3,"2026-04-01T00:00:00+00:00",{"id":19,"name":20,"slug":21,"color":22,"icon":23},[143],{"id":19,"name":20,"slug":21,"color":22,"icon":23},"\u002Fblog\u002Fcovers\u002Fheberger-outline-poster.svg",{"id":146,"slug":147,"slugs":148,"title":151,"excerpt":152,"readTime":153,"views":154,"isPinned":16,"publishedAt":155,"category":156,"categories":161,"featuredImage":26,"bgImage":27,"posterImage":163,"relatedSolution":26},212,"woodpecker-ci-وforgejo-خط-أنابيب-cicd-على-خادم-vps",{"fr":149,"en":150,"ar":147},"woodpecker-ci-pipeline-vps-forgejo","woodpecker-ci-and-forgejo-cicd-pipeline-on-a-vps","Woodpecker CI وForgejo: خط أنابيب CI\u002FCD على خادم VPS","انشر Woodpecker CI مع Forgejo على خادم VPS لخط أنابيب CI\u002FCD مفتوح المصدر، مستضاف ذاتيًا وخفيف وسيادي. دليل Docker خطوة بخطوة.",4,1,"2026-08-02T00:00:00+00:00",{"id":157,"name":158,"slug":159,"color":160,"icon":159},2,"الأتمتة","automatisation","bg-brand-action\u002F10 text-brand-action",[162],{"id":157,"name":158,"slug":159,"color":160,"icon":159},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",{"id":165,"slug":166,"slugs":167,"title":170,"excerpt":171,"readTime":172,"views":154,"isPinned":16,"publishedAt":173,"category":174,"categories":175,"featuredImage":26,"bgImage":27,"posterImage":177,"relatedSolution":26},236,"أتمتة-إدارة-خوادم-vps-باستخدام-ansible",{"fr":168,"en":169,"ar":166},"ansible-automatiser-serveurs-vps","automating-vps-server-management-with-ansible","أتمتة إدارة خوادم VPS باستخدام Ansible","تعرّف على كيفية أتمتة إدارة أسطول خوادم VPS باستخدام ‎Ansible‎: الجرد والـ playbooks والأدوار والـ Vault لبنية تحتية قابلة للتكرار.",11,"2026-08-08T00:00:00+00:00",{"id":157,"name":158,"slug":159,"color":160,"icon":159},[176],{"id":157,"name":158,"slug":159,"color":160,"icon":159},"\u002Fblog\u002Fcovers\u002Fansible-automatiser-serveurs-vps-poster.svg",1787580942395]