لماذا تستضيف Outline ذاتيًا على خادم VPS
تخزّن Outline غالبًا أكثر ما تملكه الشركة استراتيجيةً: الإجراءات الداخلية، وrunbooks، وقرارات المعمارية، والإعداد التمهيدي (onboarding). في نسخة SaaS، تدفع لكل مقعد ويعيش محتواك على بنية تحتية لطرف ثالث. وبتثبيتها على خادم VPS الخاص بك، تحدّد القواعد بنفسك: مصادقة SSO عبر مزوّدك، ونسخ احتياطية لقاعدة PostgreSQL وفق سياستك، واحتفاظ غير محدود وعدد مستخدمين غير مفوتَر. تبقى Outline خفيفة في القراءة لكنها تعتمد على حزمة دقيقة (PostgreSQL للمستندات، وRedis للجلسات وwebsockets في الوقت الحقيقي، وتخزين متوافق مع S3 للمرفقات). يتيح لك خادم VPS مخصّص تحجيم كلٍّ من هذه المكوّنات ونشر الحزمة الكاملة بملف docker-compose.yml واحد.
ما الذي تكسبه فعليًا
- مستخدمون غير محدودين دون فوترة لكل مقعد، خلافًا لعروض SaaS.
- SSO مدمج مع هوية مؤسستك (Google Workspace وOIDC وAzure AD) تحت سيطرتك.
- بحث بالنص الكامل عالي الأداء يخدمه PostgreSQL الخاص بك مباشرةً، دون تبعية خارجية.
- مرفقات وتصديرات مخزَّنة على حاوية S3 الخاصة بك أو على MinIO ذاتي الاستضافة.
- تحرير تعاوني في الوقت الحقيقي بفضل Redis، دون أي بيانات تمرّ عبر طرف ثالث.
- نسخ احتياطية واستعادة مُحكَمة: يكفي
pg_dumpواحد لأرشفة كامل قاعدة بيانات التوثيق.
المتطلبات العتادية والبرمجية
Outline مريحة مع معالجَين افتراضيَّين (2 vCPU) و4 غيغابايت من الذاكرة (RAM) لفريق من 20 إلى 50 شخصًا: يستهلك PostgreSQL وRedis قليلًا في وضع الخمول، لكن التحرير في الوقت الحقيقي والبحث يرتفعان في الحِمل بين الحين والآخر. احسب 20 غيغابايت من القرص لقاعدة البيانات والسجلّات، وأكثر إذا خزّنت المرفقات محليًا بدلًا من S3. على الجانب البرمجي: Docker Engine وإضافة docker compose الإصدار الثاني، واسم نطاق يشير إلى عنوان IP الخاص بخادم VPS (مثلًا wiki.yourcompany.com)، وحساب SMTP لرسائل الدعوة البريدية. تشترط Outline إلزاميًا مزوّد مصادقة: جهّز بيانات اعتماد OAuth (Google أو Slack أو خادم OIDC) قبل البدء، إذ لا يوجد تسجيل دخول بكلمة مرور بسيطة.
نشر Outline خطوة بخطوة
تجهيز خادم VPS وDocker
حدّث النظام عبر apt update && apt upgrade -y، وثبّت Docker عبر السكربت الرسمي، ثم تحقّق عبر docker compose version. أنشئ مجلد /opt/outline الذي سيستضيف إعدادك.
توليد الأسرار وملف البيئة
تتطلّب Outline مفتاحين: ولّدهما عبر openssl rand -hex 32 لـSECRET_KEY وUTILS_SECRET. أدخِل في ملف .env المتغيرات DATABASE_URL وREDIS_URL وURL=https://wiki.yourcompany.com وبيانات اعتماد OAuth الخاصة بمزوّدك.
تعريف حزمة PostgreSQL وRedis وOutline
في docker-compose.yml، صرِّح عن ثلاث خدمات: postgres (الصورة postgres:15 مع وحدة تخزين دائمة)، وredis (الصورة redis:7)، وoutline (الصورة outlinewiki/outline:latest). اربط Outline بالواجهتين الخلفيتين عبر متغيرات البيئة واعرض المنفذ 3000 داخليًا فقط.
تهيئة قاعدة البيانات
شغّل الترحيلات قبل التشغيل الأول عبر docker compose run --rm outline yarn db:migrate --env=production-ssl-disabled. ينشئ هذا الأمر مخطط التوثيق في PostgreSQL؛ ومن دونه سترفض Outline التشغيل.
وضع reverse proxy مع SSL
ضع Caddy أو Traefik أمام خدمة outline. مع Caddy، يولّد سطرٌ wiki.yourcompany.com { reverse_proxy outline:3000 } شهادة Let's Encrypt ويجدّدها تلقائيًا. احرص على تمرير ترويسات WebSocket للتحرير في الوقت الحقيقي.
التشغيل وإنشاء أول مساحة عمل
أطلِق الحزمة عبر docker compose up -d، ثم افتح https://wiki.yourcompany.com. سجّل الدخول عبر مزوّد OAuth الخاص بك: يصبح أول حساب مُصادَق عليه مديرًا لمساحة العمل.
فعّل تخزين S3 بدلًا من المحلي للمرفقات: وجّه AWS_S3_UPLOAD_BUCKET_URL إلى MinIO ذاتي الاستضافة على خادم VPS نفسه. تفصل بذلك وحدة تخزين الملفات عن قاعدة PostgreSQL، ما يجعل pg_dump سريعًا وخفيفًا، ويتيح لك التوسّع دون تضخيم حاوية التطبيق.