[{"data":1,"prerenderedAt":176},["ShallowReactive",2],{"seo-verification":3,"blog-استضافة-bookstack-على-خادم-vps-الخاص-بك-ma-ar":6,"promo-bar-likely":175},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-استضافة-bookstack-على-خادم-vps-الخاص-بك-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":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":133,"ctaBody":134,"ctaButton":135,"ctaUrl":136,"relatedPosts":137},79,"استضافة-bookstack-على-خادم-vps-الخاص-بك",{"fr":12,"en":13,"ar":10,"es":14},"heberger-bookstack","host-bookstack-on-your-own-vps","alojar-bookstack-en-un-vps","استضافة BookStack على خادم VPS الخاص بك","دليل شامل لتثبيت BookStack على خادم VPS مع Docker Compose وSSL وSMTP والنسخ الاحتياطي. ويكي مفتوح المصدر، ~2 غيغابايت من الذاكرة، ينشر في 15 دقيقة.",7,2,false,"2026-04-02T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-bookstack-poster.svg",{"categorySlug":33,"appSlug":34},"التعاون-والإنتاجية","bookstack","‏BookStack منصة توثيق مفتوحة المصدر منظَّمة في أرفف وكتب وفصول وصفحات. عند استضافتها ذاتيًا على خادم ‏VPS‏ تصبح الويكي الداخلي المثالي لفريقك أو وكالتك: بحث بالنص الكامل، ومحرر ‏WYSIWYG‏، وأذونات دقيقة. يغطي هذا الدليل التثبيت الكامل مع ‏Docker Compose‏ وإعداد ‏SSL‏ وتشخيص الأخطاء الشائعة وإعداد نسخ احتياطي موثوق.",[37,41,52,55,84,103,106,109,112,120,123,127],{"type":38,"title":39,"body":40},"h2","لماذا تستضيف BookStack ذاتيًا على خادم VPS","تتميّز ‏BookStack‏ ببساطتها: فحيث تُغرِق ويكيات أخرى المستخدمَ بالخيارات، تفرض هي تراتبية واضحة — أرفف وكتب وفصول وصفحات — تجعل التوثيق قابلًا للتصفّح فورًا. مبنيّة على ‏Laravel‏، فهي خفيفة وسهلة الصيانة. عند استضافتها ذاتيًا على خادم ‏VPS‏، تُبقي كامل توثيقك الداخلي — الإجراءات و‏runbooks‏ وقاعدة معرفة العملاء — على بنيتك التحتية الخاصة، دون اشتراك لكل مستخدم. وبالنسبة إلى وكالة توثّق مشاريعها أو فريق تقني يوحّد إجراءاته، فهي ويكي خاص تتحكّم فيه من طرف إلى طرف، مع بحث بالنص الكامل، وإدارة دقيقة للأذونات، ومحرّر ‏WYSIWYG‏ أو ‏Markdown‏.",{"type":42,"title":43,"items":44},"ul","فوائد ملموسة لـBookStack ذاتية الاستضافة",[45,46,47,48,49,50,51],"بنية واضحة من الأرفف\u002Fالكتب\u002Fالفصول\u002Fالصفحات: توثيق قابل للتصفّح بلا عناء.","محرّر ‏WYSIWYG‏ و‏Markdown‏ حسب اختيارك، مع مخططات ‏Draw.io‏ مدمجة.","أذونات دقيقة حسب الدور وحسب الكتاب لعزل المحتوى الحسّاس.","بحث سريع بالنص الكامل عبر كامل قاعدة المعرفة.","مصادقة ‏LDAP‏ أو ‏SAML‏ أو ‏OAuth‏ للتكامل مع دليل مؤسستك.","بصمة خفيفة: خادم ‏VPS‏ بذاكرة 2 غيغابايت يكفي لتوثيق فريق.","لا اشتراك لكل مستخدم — عدد غير محدود من المساهمين بلا تكاليف إضافية.",{"type":38,"title":53,"body":54},"المتطلبات العتادية والبرمجية","‏BookStack‏ قليلة التطلّب. يستضيف خادم ‏VPS‏ بمعالج إلى معالجَين افتراضيَّين و**2 غيغابايت من الذاكرة كحدٍّ أدنى** توثيق فريق بأريحية؛ مع تشغيل ‏BookStack‏ و‏MariaDB‏ معًا، يُعدّ 2 غيغابايت الحدَّ الأدنى الموصى به — دونه قد تفشل ترحيلات ‏Laravel‏ عند التشغيل الأول بسبب نقص الذاكرة. يرتفع الاستهلاك خصوصًا مع حجم الصور المرفوعة.\n\nخصّص من 15 إلى 25 غيغابايت من ‏SSD‏ بحسب كمية المرفقات. على الجانب البرمجي: ‏Docker 24+‏ وإضافة ‏Compose v2‏‏ (`docker compose`‏ بلا شَرطة)، ونطاق فرعي ‏`wiki.yourdomain.com`‏ مع سجل ‏A‏، ووصول ‏SMTP‏ للدعوات والإشعارات البريدية.",{"type":56,"title":57,"headers":58,"rows":63},"comparison","BookStack مقارنةً بالبدائل ذاتية الاستضافة",[59,60,61,62],"الأداة","المجموعة التقنية","الذاكرة الدنيا","نقطة القوة",[64,69,74,79],[65,66,67,68],"BookStack","Laravel + MariaDB","2 غيغابايت","تراتبية الكتب والفصول، WYSIWYG",[70,71,72,73],"Wiki.js","Node.js + قاعدة بيانات حسب الاختيار","512 ميغابايت","محرر حديث، مزامنة Git",[75,76,77,78],"Outline","Node.js + PostgreSQL","1 غيغابايت","واجهة شبيهة بـNotion، API غني",[80,81,82,83],"Confluence","SaaS \u002F on-premise","4 غيغابايت+","تكامل Atlassian، ناضج",{"type":85,"title":86,"steps":87},"steps","نشر BookStack مع Docker Compose وSSL",[88,91,94,97,100],{"title":89,"body":90},"تجهيز خادم VPS وتثبيت Docker","اتصل عبر ‏SSH‏ ثم ثبّت ‏Docker‏ وإضافة ‏Compose‏:\n\n```bash\ncurl -fsSL https:\u002F\u002Fget.docker.com | sh\napt install docker-compose-plugin\nmkdir -p \u002Fopt\u002Fbookstack && cd \u002Fopt\u002Fbookstack\n```\n\nللتحقق: يجب أن يُظهر `docker compose version`‏ الإصدار v2.x أو أعلى. الصورة المجتمعية `lscr.io\u002Flinuxserver\u002Fbookstack`‏ هي الأكثر انتشارًا والأفضل صيانةً للنشر عبر الحاويات.",{"title":92,"body":93},"إنشاء ملف docker-compose.yml","أنشئ `\u002Fopt\u002Fbookstack\u002Fdocker-compose.yml`‏ بخدمتَين — ‏MariaDB‏ و‏BookStack‏ — على شبكة مخصصة:\n\n```yaml\nservices:\n  mariadb:\n    image: mariadb:10.11\n    environment:\n      MYSQL_ROOT_PASSWORD: changeme_root\n      MYSQL_DATABASE: bookstack\n      MYSQL_USER: bookstack\n      MYSQL_PASSWORD: changeme_bk\n    volumes:\n      - .\u002Fdata\u002Fmariadb:\u002Fvar\u002Flib\u002Fmysql\n    networks: [bookstack]\n\n  bookstack:\n    image: lscr.io\u002Flinuxserver\u002Fbookstack:latest\n    environment:\n      PUID: 1000\n      PGID: 1000\n      APP_URL: https:\u002F\u002Fwiki.yourdomain.com\n      DB_HOST: mariadb\n      DB_USER: bookstack\n      DB_PASS: changeme_bk\n      DB_DATABASE: bookstack\n      MAIL_DRIVER: smtp\n      MAIL_HOST: smtp.yourdomain.com\n      MAIL_PORT: 587\n      MAIL_FROM: wiki@yourdomain.com\n      MAIL_USERNAME: wiki@yourdomain.com\n      MAIL_PASSWORD: your_smtp_password\n    ports:\n      - \"6875:80\"\n    volumes:\n      - .\u002Fdata\u002Fbookstack:\u002Fconfig\n    depends_on: [mariadb]\n    networks: [bookstack]\n\nnetworks:\n  bookstack:\n```\n\nيجب أن يتطابق `APP_URL`‏ تمامًا مع عنوان ‏HTTPS‏ النهائي. قيمة خاطئة تكسر الروابط الداخلية وعمليات الرفع.",{"title":95,"body":96},"تشغيل الحزمة والتحقق من السجلات","```bash\ndocker compose up -d\ndocker compose logs -f bookstack\n```\n\nعند التشغيل الأول، تنفّذ ‏BookStack‏ تلقائيًا ترحيلات ‏Laravel‏ لإنشاء مخطط قاعدة البيانات. انتظر السطر `Server running on http:\u002F\u002F0.0.0.0:80`‏ قبل المتابعة — يستغرق ذلك من 30 إلى 60 ثانية.",{"title":98,"body":99},"إعداد reverse proxy وSSL","مع **Caddy** (إدارة تلقائية للشهادة):\n\n```\nwiki.yourdomain.com {\n    reverse_proxy localhost:6875\n}\n```\n\nأعِد تحميل ‏Caddy‏: `systemctl reload caddy`‏.\n\nمع **Nginx + Certbot**:\n\n```nginx\nserver {\n    listen 80;\n    server_name wiki.yourdomain.com;\n    return 301 https:\u002F\u002F$host$request_uri;\n}\nserver {\n    listen 443 ssl;\n    server_name wiki.yourdomain.com;\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fwiki.yourdomain.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fwiki.yourdomain.com\u002Fprivkey.pem;\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:6875;\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\naحصل على الشهادة مع `certbot --nginx -d wiki.yourdomain.com`‏.",{"title":101,"body":102},"أول تسجيل دخول وتأمين حساب المسؤول","افتح `https:\u002F\u002Fwiki.yourdomain.com`‏. الحساب الافتراضي هو `admin@admin.com`‏ بكلمة المرور `password`‏. غيّرهما فورًا في **الإعدادات ← الملف الشخصي**.\n\nتحقّق بعد ذلك من عمل ‏SMTP‏: **الإعدادات ← إعداد البريد الإلكتروني ← إرسال بريد اختباري**. إذا فشل الاختبار، تحقّق من السجلات: `docker compose logs bookstack | grep -i mail`‏.",{"type":38,"title":104,"body":105},"الإعداد المتقدم: SSO وLDAP وSAML","تدعم ‏BookStack‏ عدة آليات للمصادقة المركزية، قابلة للتهيئة عبر متغيرات البيئة في ملف `docker-compose.yml`‏.\n\n**LDAP \u002F Active Directory**: أضِف المتغيرات `AUTH_METHOD=ldap`‏ و‏`LDAP_SERVER`‏ و‏`LDAP_BASE_DN`‏ و‏`LDAP_USER_FILTER`‏ و‏`LDAP_VERSION`‏. يسجّل المستخدمون الدخول بإثباتيات الهوية المؤسسية دون حساب ‏BookStack‏ منفصل.\n\n**SAML 2.0** (لمزودين مثل ‏Authentik‏ و‏Keycloak‏ و‏Azure AD‏): عيّن `AUTH_METHOD=saml2`‏ وادخل `SAML2_IDP_ENTITYID`‏ و‏`SAML2_IDP_SSO`‏ و‏`SAML2_IDP_SLO`‏. توثيق ‏BookStack‏ الرسمي يوفر أمثلة لكل مزوّد.\n\n**OAuth الاجتماعي** (‏GitHub‏ و‏Google‏ و‏Slack‏): لكل مزوّد زوجه من المتغيرات `*_APP_ID`‏ \u002F `*_APP_SECRET`‏. هذا الخيار مناسب للفرق التي تريد تجنّب إدارة كلمات المرور دون نشر خادم ‏LDAP‏.",{"type":38,"title":107,"body":108},"النسخ الاحتياطي واستعادة BookStack","تعتمد نسخة ‏BookStack‏ على **ثلاثة عناصر**: قاعدة بيانات ‏MariaDB‏، ومجلد `uploads`‏ (الصور والمرفقات)، وقيمة `APP_KEY`‏ في الإعداد. من دون `APP_KEY`‏ لا يمكن استرداد المحتوى المشفَّر بعد الاستعادة.\n\nسكريبت نسخ احتياطي يومي يُوضع في `\u002Fetc\u002Fcron.daily\u002Fbookstack-backup`‏:\n\n```bash\n#!\u002Fbin\u002Fbash\nBACKUP_DIR=\u002Fvar\u002Fbackups\u002Fbookstack\nmkdir -p $BACKUP_DIR\nDATE=$(date +%Y%m%d)\ndocker exec $(docker ps -qf name=mariadb) \\\n  mysqldump -u bookstack -pchangeme_bk bookstack \\\n  > $BACKUP_DIR\u002Fbookstack-db-$DATE.sql\ntar -czf $BACKUP_DIR\u002Fbookstack-uploads-$DATE.tar.gz \u002Fopt\u002Fbookstack\u002Fdata\u002Fbookstack\u002Fuploads\nfind $BACKUP_DIR -mtime +14 -delete\n```\n\nانسخ هذه الأرشيفات بعد ذلك إلى تخزين خارجي (‏S3‏ أو ‏Backblaze B2‏ أو تخزين الكائنات في خادم ‏VPS‏). احتفظ بـ`APP_KEY`‏ في مدير أسرار خارج الخادم — فهو العنصر الوحيد الذي لا يمكن إعادة إنشائه.",{"type":38,"title":110,"body":111},"تشخيص الأخطاء: المشكلات الشائعة","تظهر بعض الأخطاء بانتظام أثناء التثبيت الجديد أو التحديث.",{"type":42,"title":113,"items":114},"المشكلات المتكررة وحلولها",[115,116,117,118,119],"**خطأ SMTP «Connection refused» أو انتهاء المهلة**: تحقّق أن `MAIL_PORT`‏ يطابق المنفذ الفعلي (587 لـ‏STARTTLS‏، 465 لـ‏SSL‏). بعض خوادم ‏SMTP‏ تحجب المنفذ 25 الصادر. اختبر الاتصال من الحاوية: `docker exec -it bookstack curl -v telnet:\u002F\u002Fsmtp.yourdomain.com:587`‏.","**أذونات `storage\u002F`: خطأ 500 أو صفحة بيضاء**: يجب أن يملك مجلد `\u002Fopt\u002Fbookstack\u002Fdata\u002Fbookstack`‏ المعرِّف ‏UID 1000‏ (المتغير `PUID`‏). صحّح بـ`chown -R 1000:1000 \u002Fopt\u002Fbookstack\u002Fdata\u002Fbookstack`‏ ثم أعِد تشغيل الحاوية.","**بطء أو انتهاء مهلة MariaDB عند الإقلاع**: تنتظر ‏BookStack‏ أن تصبح ‏MariaDB‏ جاهزة. إذا أعادت حاوية ‏BookStack‏ التشغيل في حلقة خلال الثواني الأولى فهذا طبيعي. أضِف `healthcheck`‏ لخدمة `mariadb`‏ في ملف ‏Compose‏ أو انتظر 30 ثانية قبل فحص السجلات.","**الصور لا تظهر بعد تغيير النطاق**: يجب أن يتطابق `APP_URL`‏ تمامًا مع عنوان ‏HTTPS‏ العام. إذا غيّرت النطاق، حدّث `APP_URL`‏ في ملف ‏Compose‏، وأعِد تشغيل الحاوية، ثم نفّذ `php artisan bookstack:update-url`‏ من داخل الحاوية لتحديث ‏URL‏ المخزّنة في قاعدة البيانات.","**توقف الترحيلات عند التشغيل الأول (OOM)**: إذا كان خادم ‏VPS‏ بذاكرة أقل من 2 غيغابايت، قد تُوقَف ترحيلات ‏Laravel‏ بواسطة ‏OOM killer‏. أضِف ملف مبادلة (‏swap‏) بحجم 2 غيغابايت (`fallocate -l 2G \u002Fswapfile && mkswap \u002Fswapfile && swapon \u002Fswapfile`‏) أو زِد ذاكرة ‏VPS‏ قبل إعادة المحاولة.",{"type":38,"title":121,"body":122},"تحديث BookStack","تستقبل الصورة `lscr.io\u002Flinuxserver\u002Fbookstack:latest`‏ الإصدارات الجديدة بُعيد نشرها على ‏GitHub‏. للتحديث:\n\n```bash\ncd \u002Fopt\u002Fbookstack\ndocker compose pull\ndocker compose up -d\ndocker compose logs -f bookstack\n```\n\nتُطبَّق ترحيلات قاعدة البيانات تلقائيًا عند الإقلاع. راجع \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FBookStackApp\u002FBookStack\u002Freleases\">ملاحظات إصدار BookStack\u003C\u002Fa> قبل أي تحديث رئيسي: تُدخل بعض الإصدارات تغييرات في المخطط أو الإعداد.",{"type":124,"title":125,"body":126},"tip","نصيحة أمنية","أعدّ إدخال `robots.txt`‏ أو احمِ نسخة ‏BookStack‏ خاصتك وراء جدار حماية تطبيقي إذا كانت تحتوي على إجراءات داخلية حسّاسة. لا توفّر ‏BookStack‏ وضع «إنترانت فقط» افتراضيًا — عنوان ‏URL‏ العام في متناول أي شخص يعرف العنوان. للتوثيق الخاص حقًا، اجمع أذونات ‏BookStack‏ الدقيقة مع قاعدة ‏UFW‏ أو شبكة ‏WireGuard VPN‏ تقصر الوصول على المنفذ 443.",{"type":42,"title":128,"items":129},"لمزيد من المعلومات",[130,131,132],"\u003Ca href=\"\u002Fblog\u002Fheberger-nextcloud\">استضافة Nextcloud على VPS\u003C\u002Fa> — التخزين السحابي والتعاون الوثائقي.","\u003Ca href=\"\u002Fblog\u002Fheberger-gitea\">استضافة Gitea على VPS\u003C\u002Fa> — منصة Git ذاتية الاستضافة لفرق التطوير.","\u003Ca href=\"\u002Fblog\u002Fself-host-authentik-vps\">‏Authentik على VPS‏\u003C\u002Fa> — SSO مفتوح المصدر لمركزة مصادقة BookStack وتطبيقاتك الأخرى.","ثبّت BookStack على خادم VPS من ServOrbit بنقرة واحدة","يتوفّر BookStack في Marketplace ServOrbit. اطلب خادم VPS Cloud ويُثبَّت الويكي المنظَّم تلقائيًا، مع MariaDB مضمَّنة.","عرض بطاقة BookStack","\u002Fapplications\u002Fالتعاون-والإنتاجية\u002Fbookstack",[138,157],{"id":139,"slug":140,"slugs":141,"title":145,"excerpt":146,"readTime":147,"views":148,"isPinned":19,"noindex":19,"publishedAt":149,"updatedAt":150,"category":151,"categories":152,"featuredImage":29,"bgImage":30,"posterImage":154,"relatedSolution":155},81,"استضافة-wikijs-على-خادمك-الافتراضي-الخاص-vps",{"fr":142,"en":143,"ar":140,"es":144},"heberger-wiki-js","host-wikijs-on-your-own-vps","alojar-wiki-js-en-un-vps","استضافة Wiki.js على خادمك الافتراضي الخاص (VPS)","ثبّت Wiki.js على خادمك الافتراضي (VPS): ويكي حديث بصيغة Markdown مع Git وPostgreSQL والمصادقة وSSL عبر Docker. شرح خطوة بخطوة.",4,1,"2026-03-31T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[153],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-wiki-js-poster.svg",{"categorySlug":24,"appSlug":156},"wiki-js",{"id":158,"slug":159,"slugs":160,"title":164,"excerpt":165,"readTime":166,"views":148,"isPinned":19,"noindex":19,"publishedAt":167,"updatedAt":168,"category":169,"categories":170,"featuredImage":29,"bgImage":30,"posterImage":172,"relatedSolution":173},71,"استضافة-nextcloud-على-خادمك-الـvps-الخاص",{"fr":161,"en":162,"ar":159,"es":163},"heberger-nextcloud","hosting-nextcloud-on-your-own-vps","alojar-nextcloud-en-su-propio-vps","استضافة Nextcloud على VPS: دليل NC 35 وPHP 8.3 وMariaDB 11","استضافة Nextcloud على VPS: ‏Docker Compose وRedis ونسخ MariaDB، ورفع ملفات تتجاوز 40 جيجابايت خلف Cloudflare، وبديل لـ ‎Office 2021.",20,"2026-04-10T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[171],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":24,"appSlug":174},"nextcloud",true,1794270202603]