دليل عملي

الاستضافة الذاتية

Outline: ويكي تعاوني على VPS بديل عن Notion

أعادت الصفقة التي اشترت بموجبها Bending Spoons شركة Airtable، والتي أُعلن عنها في أغسطس 2026 واكتملت في 4 سبتمبر، طرح سؤال تطرحه الفرق التقنية والوكالات باستمرار: متى يتحول الاعتماد على مزوّد SaaS إلى خطر تشغيلي؟ في هذا السياق، يعود Outline إلى دائرة الاهتمام بوصفه بديلًا جادًا عن Notion وConfluence: عرض Markdown أنيق، وتحرير في الوقت الفعلي، وصلاحيات دقيقة. قبل نشره، لا بد من الانتباه إلى نقطتين: رخصته BSL 1.1 التي ليست مفتوحة المصدر بالمعنى الذي تعرّفه OSI، ومتطلبات تثبيته — مزوّد هوية إلزامي، وPostgreSQL، وRedis، ومساحة تخزين للملفات.

11 دقيقةً للقراءةعدد الخطوات: 6
المحتويات· لماذا Outline بدلًا من Notion أو Confluence على VPS1/8
  1. 01لماذا Outline بدلًا من Notion أو Confluence على VPS
  2. 02ما يقدمه Outline عمليًا
  3. 03رخصة BSL 1.1: Outline ليس مفتوح المصدر
  4. 04Outline مقابل Notion وConfluence وDocmost
  5. 05متطلبات استضافة Outline على VPS
  6. 06نشر Outline باستخدام Docker Compose
  7. 07تحديث Outline دون مفاجآت
  8. 08متى تختار Docmost بدلًا من Outline

لماذا Outline بدلًا من Notion أو Confluence على VPS

يشترك Notion وConfluence في العيب البنيوي نفسه: تسعيرهما مرتبط بعدد المستخدمين، ويرتفع بمجرد أن يكبر الفريق. في Notion، أصبح الذكاء الاصطناعي حكرًا على خطتي Business وEnterprise منذ إعلان 13 مايو 2025: سعره مدمج في كل مقعد، سواء استخدمته أم لا. تُعرض خطة Business بسعر 19.50 € لكل عضو شهريًا مع الفوترة السنوية على notion.com/pricing (السعر المعروض لزائر من منطقة اليورو) — أي 390 € شهريًا لعشرين شخصًا، قبل احتساب أرصدة Notion التي تُفوتر إضافيًا لتشغيل الوكلاء المخصصين. كل ذلك من أجل ويكي لا تتحكم في بياناته ولا في خارطة طريقه ولا في موعد الاستحواذ القادم عليه.

يكسر Outline هذا المنطق. عند استضافته على VPS خاص بك تصبح التكلفة ثابتة: تدفع ثمن الخادم، لا ثمن كل متعاون إضافي. العرض متقن — طباعة نظيفة، وكتل شيفرة مع تلوين نحوي، وصور مدمجة، وجداول — والتحرير المتزامن يعمل عبر WebSockets. البحث النصي الكامل مفهرس مباشرة في PostgreSQL: لا خدمة خارجية ولا تكلفة إضافية. لفريق تقني من 10 إلى 50 شخصًا، هو من أكمل أنظمة الويكي المستضافة ذاتيًا.

ليست حجة الاستحواذ على Airtable تفصيلًا عابرًا. تخصصت Bending Spoons في شراء أدوات SaaS شائعة — Evernote وMeetup وWeTransfer — ثم إعادة تشكيل نموذجها الاقتصادي. وهي تعلن نيتها الاستثمار في Airtable، لكن حين تعتمد وثائق شركتك على SaaS خارجي، قد يعني تغيير المالك رفع الأسعار أو تقليص الميزات المجانية أو التحول إلى نموذج لا يناسب استخدامك. استضافة Outline على بنيتك الخاصة تُخرجك من هذا الخطر.

ما يقدمه Outline عمليًا

  • عرض Markdown في الوقت الفعلي — محرر يشبه Notion دون الكتل الاحتكارية
  • تحرير تعاوني — عدة محررين على المستند نفسه عبر WebSockets وRedis
  • صلاحيات لكل مجموعة مستندات ولكل فريق — قراءة فقط، تعليق، تحرير، إدارة
  • بحث نصي كامل — مفهرس في PostgreSQL ويعمل منذ التثبيت
  • المرفقات والصور — على قرص الـ VPS افتراضيًا، أو على تخزين متوافق مع S3 (MinIO أو Backblaze B2 أو AWS S3)
  • واجهة API موثقة — قابلة للدمج في خطوط CI/CD أو في سكربتاتك، وتفيد أيضًا في أتمتة تصدير المحتوى
  • استيراد من Notion وMarkdown — يمر استيراد Notion عبر تكامل يجب التصريح به، أما مستورد Confluence فمخصص لإصداري Business وEnterprise

رخصة BSL 1.1: Outline ليس مفتوح المصدر

هذه هي النقطة التي تتجاهلها المقارنات غالبًا. Outline منشور تحت Business Source License 1.1 (BSL 1.1). وملف الرخصة في المستودع يقولها صراحة: «not an Open Source license» — ليس هذا تأويلًا، بل صياغة المؤلفين أنفسهم.

عمليًا، تمنح الرخصة حق استخدام البرنامج بشرط واحد: ألا تستغله بوصفه «Document Service»، أي ألا تقدم Outline خدمةً توثيقية لأطراف ثالثة. والصفحة الرسمية للقيود واضحة: بيع Outline أو إعادة بيعه أو استضافته كخدمة يُعد خرقًا، والخرق ينهي الرخصة تلقائيًا. فالناشر الذي يريد تقديم ويكي Outline مدفوع لعملائه خارج نطاق الرخصة، والوكالة التي تستضيفه لعملائها عليها أن تسأل الناشر قبل النشر.

أما الاستخدام الداخلي للفريق — قاعدة معرفة، وتوثيق منتج، وكتيبات تشغيل، وتأهيل الموظفين — فيمكنك استضافته ذاتيًا بحرية.

لا يوجد تاريخ واحد للتحول إلى Apache 2.0: لكل إصدار تاريخه الخاص، بعد أربع سنوات من صدوره. ملف LICENSE للإصدار 1.12.0، الصادر في 23 أكتوبر 2026، يحدد هذا التحول في 2030-10-23. فالإصدار الذي تنشره اليوم لن يصبح متساهلًا بالكامل إلا في 2030، وكل تحديث يؤجل الموعد بالنسبة للشيفرة الجديدة.

خلاصة عملية: الاستخدام الداخلي لا مشكلة فيه. إعادة البيع أو تقديم خدمة للعملاء: اقرأ الرخصة واسأل الناشر قبل النشر. ولوضع BSL بين رخص «source available»، راجع تحليلنا لرخصتي BSL وSSPL.

Outline مقابل Notion وConfluence وDocmost

مرّر الجدول أفقيًا

OutlineNotionConfluenceDocmost
نموذج الرخصةBSL 1.1 (كل إصدار ← Apache 2.0 بعد 4 سنوات)SaaS احتكاريSaaS احتكاريAGPL-3.0 (النواة) + إصدارات مدفوعة
الاستضافة الذاتيةنعم — Docker + VPSلانعم (Data Center، مكلف)نعم — Docker + VPS
التسعيرتكلفة خادم ثابتةلكل عضو شهريًالكل مستخدمتكلفة خادم ثابتة (الإصدار الحر)
التحرير في الوقت الفعلينعم (WebSockets + Redis)نعمنعمنعم (WebSockets + Redis)
البنية المطلوبةPostgreSQL + Redis + تخزين الملفاتلا ينطبق (SaaS)PostgreSQL/Oracle + بنية ثقيلةPostgreSQL + Redis
البحث النصي الكاملمدمج في PostgreSQLنعم (SaaS)نعممدمج في PostgreSQL
استيراد Notion / ConfluenceNotion نعم؛ Confluence في الإصدار المدفوعتصدير فقطتصدير فقطNotion نعم؛ Confluence في الإصدار المدفوع
تسجيل الدخولSSO إلزامي (OIDC، Google، Slack، Microsoft، Discord)حساب Notionحساب Atlassianبريد وكلمة مرور؛ SSO في الإصدار المدفوع

متطلبات استضافة Outline على VPS

يتكون Outline من ثلاث خدمات يجب أن تعمل معًا.

PostgreSQL (الإصدار 14 أو أحدث) يخزن كل المستندات والمستخدمين والصلاحيات: فهو الذي يحمل حالة الويكي. Redis (الإصدار 4 أو أحدث) يدير الجلسات وWebSockets التحرير الفوري وطوابير المهام الخلفية، وإذا توقف توقف التحرير المتزامن. تخزين الملفات يستقبل المرفقات والصور: على قرص الـ VPS افتراضيًا (FILE_STORAGE=local، المجلد /var/lib/outline/data)، أو في حاوية متوافقة مع S3 (FILE_STORAGE=s3) — MinIO على الـ VPS نفسه، أو Backblaze B2، أو AWS S3. نقل الملفات إلى S3 يُبقي نسخ PostgreSQL الاحتياطية خفيفة ويسمح بنمو المرفقات دون المساس بخادم التطبيق.

التحجيم: تشترط الوثائق الرسمية ذاكرة لا تقل عن 512 ميغابايت، وتنصح بـ 1 غيغابايت أو أكثر عند كثرة المستخدمين. لفريق من 20 إلى 50 شخصًا مع PostgreSQL وRedis على الجهاز نفسه، استهدف 2 vCPU و4 غيغابايت RAM و20 غيغابايت SSD، وأكثر إذا بقيت المرفقات محلية. يترك VPS Power (4 vCPU، 8 GB) هامشًا لذروات التحرير المتزامن. يُضبط عدد العمليات عبر WEB_CONCURRENCY: احسب عملية واحدة لكل 512 ميغابايت من الذاكرة المتاحة.

المصادقة هي الشرط الذي يُكتشف متأخرًا. لا يتيح Outline تسجيل الدخول بالبريد وكلمة المرور: يلزم مزوّد واحد على الأقل — Slack أو Google أو Microsoft Entra أو Discord أو خادم OIDC عام (Authentik، Keycloak…) — وإلا لن يوفر التثبيت أي وسيلة للدخول. أما SAML فمخصص لإصداري Business وEnterprise. جهّز أيضًا خادم SMTP: فهو يرسل الإشعارات («تم تحديث المستند») ويتيح الدخول عبر رابط بالبريد.

على المضيف: Docker وDocker Compose v2، وخادم وكيل عكسي (Nginx أو Caddy)، وشهادة TLS صالحة، واسم نطاق مخصص (wiki.yourdomain.com): يجب أن يطابق المتغير URL العنوان العام تمامًا.

نشر Outline باستخدام Docker Compose

  1. إنشاء ملف `docker-compose.yml`

    أنشئ مجلدًا مخصصًا:

    mkdir -p /opt/outline && cd /opt/outline

    ثم ملف التركيب. ثبّت إصدارًا محددًا بدل latest، ولا تنشر المنفذ 3000 إلا على الواجهة المحلية:

    services:
      outline:
        image: docker.getoutline.com/outlinewiki/outline:1.12.0
        env_file: .env
        ports:
          - "127.0.0.1:3000:3000"
        volumes:
          - outline_data:/var/lib/outline/data
        depends_on:
          - postgres
          - redis
    
      postgres:
        image: postgres:18
        environment:
          POSTGRES_USER: outline
          POSTGRES_PASSWORD: password
          POSTGRES_DB: outline
        volumes:
          - postgres_data:/var/lib/postgresql
    
      redis:
        image: redis:7
        volumes:
          - redis_data:/data
    
    volumes:
      outline_data:
      postgres_data:
      redis_data:

    تنشئ صورة Postgres المستخدم وقاعدة البيانات عند أول تشغيل انطلاقًا من POSTGRES_USER وPOSTGRES_PASSWORD وPOSTGRES_DB: بلا كلمة مرور ترفض الحاوية الإقلاع.

  2. إعداد ملف `.env`

    ولّد المفتاح السري ومفتاح الأدوات:

    openssl rand -hex 32   # SECRET_KEY
    openssl rand -hex 32   # UTILS_SECRET

    المتغيرات الأساسية في .env (مثال مع مزوّد OIDC):

    URL=https://wiki.yourdomain.com
    PORT=3000
    SECRET_KEY=<generated key>
    UTILS_SECRET=<generated key>
    DATABASE_URL=postgres://outline:password@postgres:5432/outline
    PGSSLMODE=disable
    REDIS_URL=redis://redis:6379
    FORCE_HTTPS=true
    WEB_CONCURRENCY=2
    FILE_STORAGE=local
    FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data
    OIDC_CLIENT_ID=<client-id>
    OIDC_CLIENT_SECRET=<client-secret>
    OIDC_AUTH_URI=https://auth.yourdomain.com/application/o/authorize/
    OIDC_TOKEN_URI=https://auth.yourdomain.com/application/o/token/
    OIDC_USERINFO_URI=https://auth.yourdomain.com/application/o/userinfo/
    SMTP_SERVICE=<service>
    SMTP_USERNAME=<user>
    SMTP_PASSWORD=<password>
    [email protected]

    المتغير PGSSLMODE=disable ضروري حين يعمل PostgreSQL على الجهاز نفسه دون TLS: بدونه يحاول Outline اتصالًا مشفرًا فيفشل. مع Google أو Slack أو Microsoft أو Discord، استبدل كتلة OIDC بمتغيرات المزوّد (GOOGLE_CLIENT_ID، SLACK_CLIENT_ID…) الواردة في ملف المثال الرسمي .env.sample في المستودع. احفظ نسخة من هذا الملف خارج الخادم: فقدان SECRET_KEY يجعل البيانات المشفرة في القاعدة غير مقروءة.

  3. تشغيل الحزمة

    docker compose up -d
    docker compose logs -f outline
    docker compose ps

    تُنفذ ترحيلات قاعدة البيانات تلقائيًا عند إقلاع حاوية Outline: تابع السجلات حتى تظهر رسالة الاستماع على المنفذ 3000، ثم تحقق من أن الخدمات الثلاث في حالة running.

  4. إعداد الخادم الوكيل العكسي

    يستمع Outline على المنفذ 3000 محليًا. مثال لكتلة Nginx:

    server {
        listen 443 ssl;
        server_name wiki.yourdomain.com;
    
        ssl_certificate /etc/letsencrypt/live/wiki.yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/wiki.yourdomain.com/privkey.pem;
        client_max_body_size 260m;
    
        location / {
            proxy_pass http://127.0.0.1:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }
    }

    الرأسان Upgrade وConnection لا غنى عنهما لـ WebSockets التحرير الفوري، ويجب أن يغطي client_max_body_size حجم الرفع الذي يسمح به Outline (FILE_STORAGE_UPLOAD_MAX_SIZE). مع Caddy يكفي سطران، وتُستخرج شهادة Let's Encrypt وتُجدد تلقائيًا:

    wiki.yourdomain.com {
        reverse_proxy 127.0.0.1:3000
    }
  5. إنشاء أول حساب مدير

    افتح https://wiki.yourdomain.com وسجّل الدخول عبر مزوّد الهوية المُعدّ: أول حساب يُصادق عليه يصبح مدير مساحة العمل.

    لدعوة زملائك، انتقل إلى الإعدادات ← الأعضاء ← دعوة. تُرسل الدعوات والإشعارات عبر خادم SMTP المُصرّح به في .env.

  6. جدولة النسخ الاحتياطية

    ما يجب نسخه: قاعدة PostgreSQL، ومجلد الملفات إذا كان FILE_STORAGE=local، وملف .env. مثال لمهمة cron يومية:

    cd /opt/outline
    docker compose exec -T postgres pg_dump -U outline outline | gzip > outline-$(date +%F).sql.gz
    docker run --rm -v outline_outline_data:/data -v "$PWD":/backup alpine \
      tar czf /backup/outline-files-$(date +%F).tar.gz -C /data .

    توصي وثائق Outline بنسخة احتياطية واحدة يوميًا على الأقل، تُحفظ قرابة شهر. وإضافة إلى ذلك، تُنتج الإعدادات ← تصدير أرشيفًا بصيغة HTML أو Markdown أو JSON يُقرأ دون Outline.

تحديث Outline دون مفاجآت

ينشر Outline صور Docker موسومة بإصداراتها: تجنب latest في الإنتاج واستهدف إصدارًا محددًا (outlinewiki/outline:1.12.0 حتى 7 نوفمبر 2026)، بعد قراءة ملاحظات الإصدار في صفحة الإصدارات.

تُطبق الترحيلات تلقائيًا عند إعادة تشغيل الحاوية، وتنبه الوثائق إلى أنها ليست متوافقة مع الإصدارات السابقة دائمًا: العودة إلى الصورة السابقة لا تكفي دائمًا. لذا فالنسخة الاحتياطية للقاعدة قبل كل تحديث إلزامية لا اختيارية.

cd /opt/outline
docker compose exec -T postgres pg_dump -U outline outline | gzip > before-update.sql.gz
# change the image tag in docker-compose.yml, then:
docker compose pull outline
docker compose up -d outline
docker compose logs -f outline

على ويكي كبير، اختبر الإصدار الجديد أولًا على نسخة من القاعدة مستعادة في بيئة اختبار.

متى تختار Docmost بدلًا من Outline

Outline هو الخيار المناسب إذا أردت عرض Markdown متقنًا يضاهي Notion، وتحريرًا متزامنًا متينًا، وربطًا بمزوّد هوية قائم (OIDC أو Google أو Microsoft). وتيرة إصداراته المنتظمة — 1.11.0 و1.12.0 في أكتوبر 2026 — ومجتمعه النشط حجتان قويتان لفريق يراهن على المدى الطويل. التعليقات وسجل المراجعات والتكامل مع Slack وGitHub وLinear تجعله من أكمل الأدوات في فئة الاستضافة الذاتية.

Docmost بديل أحدث (2023)، تُنشر نواته تحت AGPL-3.0 — رخصة مفتوحة المصدر حقيقية بمعنى OSI، دون قيد على استخدامه كخدمة. لكن ميزاته المتقدمة (SSO عبر SAML/OIDC/LDAP، ومفاتيح API، ومستورد Confluence، وقواعد البيانات) تتبع إصدارات مدفوعة برخصة مستقلة. بنيته مماثلة — PostgreSQL وRedis — لكنه لا يفرض أي مزوّد هوية، إذ يقبل الإصدار الحر تسجيل الدخول بالبريد وكلمة المرور. إذا كان تكييف الرخصة معيارًا حاسمًا — خاصة إن كنت تطور منتجًا يضم قاعدة معرفة يصل إليها مستخدموك النهائيون — فإن Docmost يستحق التقييم بالتوازي. يركز هذا المقال على Outline؛ للتثبيت خطوة بخطوة راجع دليلنا المخصص لـ Docmost، وللانتقال من Notion راجع تحليلنا لزيادة أسعار Notion.

يتعايش الاثنان دون أن يلتهم أحدهما الآخر: لدى Outline ميزات متقدمة أكثر في إصداره المجاني ومجتمع أرسخ، ولدى Docmost رخصة أكثر تساهلًا وتسجيل دخول دون SSO إلزامي. يتوقف الاختيار على سياقك القانوني واحتياجاتك التقنية.

انشر ويكي فريقك على VPS

يغطي VPS Power (4 vCPU، 8 GB) بيسر البنية الكاملة لـ Outline — PostgreSQL وRedis وتخزين المرفقات — لفريق يقل عن 50 شخصًا.