SSD Nodes Learn Hosting plans →
راهنماها Matt Connorتوسط Matt Connor · به‌روزرسانی شده 2026-08-13

مقایسه BookStack، Wiki.js و Outline برای ویکی شخصی

بهترین نرم‌افزار ویکی self-hosted را بر اساس مدل ویرایش، مدیریت کاربران و پیچیدگی نصب انتخاب کنید. بررسی تخصصی تفاوت‌های BookStack، Wiki.js و Outline برای تیم‌ها و کاربران انفرادی.

کدام ویکی self-hosted را باید اجرا کنید

یک ویکی self-hosted اسناد تیم شما را در یک مکان قابل جستجو روی سروری که تحت کنترل شماست، قرار می‌دهد. BookStack، Wiki.js و Outline همگی این وظیفه را انجام می‌دهند. تفاوت اصلی آن‌ها در میزان آماده‌سازی لازم پیش از بارگذاری اولین صفحه و همچنین در نحوه مدیریت دسترسی کاربران برای ورود به سیستم است.

نصب BookStack از همه سبک‌تر است و ساختار آن بسیار مشخص و از پیش تعیین‌شده است. Wiki.js گسترده‌ترین انتخاب ویرایشگرها را برای یک درخت صفحه واحد در اختیار شما می‌گذارد. Outline بهترین تجربه نوشتن را در میان این سه گزینه دارد و تا زمانی که یک ارائه‌دهنده هویت (identity provider) خارجی به آن متصل نکنید، به هیچ‌کس اجازه ورود نمی‌دهد.

تمام مطالب زیر از مستندات رسمی پروژه‌ها و فایل‌های پیکربندی منتشرشده توسط آن‌ها استخراج شده است. این یک مقایسه قابلیت‌هاست، نه یک بنچمارک. شماره نسخه‌ها و نیازمندی‌ها با تاریخ مشخص شده‌اند، زیرا هر سه پروژه به‌طور مداوم در حال تغییر هستند.

ساختار، انتخاب واقعی است

BookStack شکل محتوای شما را تعیین می‌کند. یک صفحه درون یک کتاب قرار می‌گیرد، یک کتاب می‌تواند شامل فصل‌ها باشد و قفسه‌ها کتاب‌ها را دسته‌بندی می‌کنند. شما نمی‌توانید سطح پنجمی ابداع کنید. این محدودیت، خودِ محصول است: نویسنده جدید می‌داند صفحه کجا قرار می‌گیرد، چون فقط یک جای ممکن برای آن وجود دارد. هزینه این کار این است که محتوایی که در این قالب نمی‌گنجد، به‌اجبار در آن جای داده می‌شود.

Wiki.js از یک درخت مسیر استفاده می‌کند، مشابه پوشه‌ها در دیسک. یک صفحه در ops/backup/restic هر کجا که آن را قرار دهید می‌نشیند و شما عمق آن را انتخاب می‌کنید. هیچ‌چیز مانع از آن نمی‌شود که دو نفر یک موضوع واحد را در دو شاخه متفاوت بایگانی کنند، بنابراین یک نمونه Wiki.js به یک نفر نیاز دارد که مالکیت درخت را بر عهده بگیرد.

Outline از مجموعه‌هایی با اسناد تو در تو درون اسناد دیگر استفاده می‌کند. جابه‌جایی یک سند با کشیدن و رها کردن توسط ماوس انجام می‌شود. این ابزار منعطف‌ترین گزینه در میان این سه مورد است، بنابراین ساده‌ترین گزینه برای دچار شدن به آشفتگی و بی‌نظمی نیز محسوب می‌شود.

BookStack: کوچک‌ترین نصب

BookStack یک برنامه PHP است که از MySQL پشتیبانی می‌کند. از ژوئیه 2026، نیازمندی‌های مستندشده شامل PHP 8.2 یا جدیدتر و MySQL 8.0 یا MariaDB 10.6 یا جدیدتر، به علاوه Composer 2.2 یا جدیدتر (در صورت نصب از سورس) است. سری انتشار فعلی 26.05 است.

این پروژه برای هر نسخه از Ubuntu یک اسکریپت نصب منتشر می‌کند. اسکریپت نسخه 24.04، به صورت خودکار Apache، MySQL 8.0 و PHP 8.3 را برای شما نصب می‌کند.

wget https://codeberg.org/bookstack/devops/raw/branch/main/scripts/installation-ubuntu-24.04.sh
chmod a+x installation-ubuntu-24.04.sh
sudo ./installation-ubuntu-24.04.sh

پیش از اجرای اسکریپت، هشدار مربوط به آن را مطالعه کنید. مستندات تأکید می‌کنند که این اسکریپت «فقط برای سیستم‌عامل تازه نصب‌شده است؛ Apache، MySQL 8.0 و PHP 8.3 را نصب می‌کند و ممکن است هرگونه تنظیمات وب موجود روی دستگاه را بازنویسی کند». روی سروری که هم‌اکنون روی پورت 80 پاسخ می‌دهد، اسکریپت آن پورت را تصاحب کرده و پیکربندی Apache را بازنویسی می‌کند. در چنین شرایطی از کانتینرها استفاده کنید یا BookStack را به‌صورت دستی روی یک LAMP stack موجود در Ubuntu 24.04 نصب کنید.

روش کانتینری از ایمیج LinuxServer.io استفاده می‌کند که همان گزینه‌ای است که مستندات BookStack پیشنهاد می‌دهد. BookStack به یک کلید رمزنگاری نشست (session encryption key) نیاز دارد و بدون آن صفحات را نمایش نمی‌دهد؛ بنابراین ابتدا آن را تولید کنید.

docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey

مقدار چاپ‌شده را در APP_KEY کپی کنید و سپس سرویس را بنویسید:

services:
  bookstack:
    image: lscr.io/linuxserver/bookstack:latest
    container_name: bookstack
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - APP_URL=https://wiki.example.com
      - APP_KEY=paste_the_generated_key_here
      - DB_HOST=bookstack_db
      - DB_PORT=3306
      - DB_USERNAME=bookstack
      - DB_PASSWORD=change_me
      - DB_DATABASE=bookstackapp
    volumes:
      - ./config:/config
    ports:
      - 6875:80
    restart: unless-stopped

مقدار APP_URL باید با آدرسی که کاربران واقعاً تایپ می‌کنند، شامل طرح (scheme) و هرگونه پورت، مطابقت داشته باشد. اگر آن را روی http://localhost تنظیم کنید و سایت را از طریق HTTPS ارائه دهید، لینک‌ها و تغییر مسیرهای تولیدشده به میزبان اشتباه اشاره می‌کنند که کاربران آن را به صورت یک صفحه ورود که به خودش بازمی‌گردد، مشاهده خواهند کرد. اگر با فایل‌های compose آشنا نیستید، پیش از این مرحله با مبانی Docker Compose روی یک VPS شروع کنید.

سرویس را بالا بیاورید و بررسی کنید که برنامه پاسخ می‌دهد؛ صرفاً فعال بودن کانتینر کافی نیست:

docker compose up -d
docker compose ps
curl -sI http://127.0.0.1:6875/login

یک 200 OK به این معنی است که برنامه PHP بالا آمده و به دیتابیس متصل شده است. یک 500 تقریباً همیشه به این معنی است که APP_KEY خالی است یا اعتبارنامه‌های دیتابیس مطابقت ندارند، و docker compose logs bookstack مشخص می‌کند که کدام‌یک از این دو مورد است.

Wiki.js: یک درخت، چندین ویرایشگر

Wiki.js یک برنامه Node.js است. تنظیمات Docker مستندشده، آن را با PostgreSQL جفت می‌کند، اگرچه این نرم‌افزار از MySQL، MariaDB، MSSQL و SQLite نیز پشتیبانی می‌کند. این فایل compose از صفحه Docker خود پروژه است:

services:
  db:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: wikijsrocks
      POSTGRES_USER: wikijs
    logging:
      driver: none
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
  wiki:
    image: ghcr.io/requarks/wiki:2
    depends_on:
      - db
    init: true
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "80:3000"
volumes:
  db-data:

پیش از اجرا، POSTGRES_PASSWORD و DB_PASS را با هم تغییر دهید، زیرا آن‌ها یک جفت اعتبارنامه هستند و مقدار نمونه عمومی است. تگ به عمد روی ghcr.io/requarks/wiki:2 قفل شده است. مستندات توصیه می‌کنند از latest استفاده نکنید، زیرا جهش نسخه اصلی، طرح‌واره (schema) پایگاه داده را در یک نمونه در حال اجرا تغییر می‌دهد.

نسخه 2 نسخه‌ای است که باید اجرا شود. تا ژوئیه 2026، جدیدترین نسخه 2، نسخه 2.5.314 است که در مه 2026 منتشر شده است. نسخه 3 وجود دارد و مستندات آن می‌گوید: "این سایت برای نسخه بتای ناپایدار Wiki.js 3.0 است. شما نباید این نسخه را در محیط عملیاتی (production) نصب کنید." با تگ :3 به عنوان یک پیش‌نمایش برخورد کنید.

در اولین بارگذاری، Wiki.js شما را از طریق یک تنظیمات درون‌مرورگری راهنمایی می‌کند که حساب مدیر را ایجاد می‌کند. تا زمانی که آن را تمام نکنید، هر کسی که به پورت دسترسی پیدا کند، آن ویزارد را می‌بیند؛ بنابراین پیش از باز کردن فایروال، سرویس را پشت reverse proxy و TLS (امنیت لایه انتقال) خود قرار دهید. وقتی سرور بیش از این یک سرویس را میزبانی می‌کند، یک ویکی روی نام دامنه اختصاصی خود به‌طور طبیعی پشت Traefik در مقابل چندین برنامه Docker قرار می‌گیرد.

انتخاب ویرایشگر دلیلی است که افراد Wiki.js را انتخاب می‌کنند. یک نمونه می‌تواند صفحات Markdown، صفحات ویرایشگر بصری، صفحات HTML خام و صفحات AsciiDoc را در کنار هم نگه دارد. این موضوع هنگام وارد کردن محتوای قدیمی با فرمتی که ترجیح می‌دهید تبدیل نکنید، کمک می‌کند. همچنین این راهی است که ممکن است در نهایت با چهار سبک نگارشی در یک ویکی مواجه شوید، بنابراین ویرایشگر پیش‌فرض را در همان روز اول انتخاب کنید و آن تصمیم را مکتوب کنید.

طرح کلی: بهترین ویرایشگر، سنگین‌ترین پیش‌نیازها

وقتی کاربران می‌گویند ابزاری می‌خواهند که حس و حال یک نرم‌افزار یادداشت‌برداری تجاری را داشته باشد، معمولاً منظورشان Outline است. این یک برنامه Node.js است و نسخه فعلی آن تا ژوئیه 2026، 1.9.2 می‌باشد. فایل محیطی نمونه آن، پیش‌نیازهای لازم را فهرست می‌کند: PostgreSQL از طریق DATABASE_URL، Redis از طریق REDIS_URL، دو secret تصادفی و یک URL که از طریق اینترنت در دسترس باشد.

openssl rand -hex 32
openssl rand -hex 32

آن را دو بار اجرا کنید و هر دو مقدار را نگه دارید. اولی تبدیل به SECRET_KEY و دومی تبدیل به UTILS_SECRET می‌شود. هسته فایل محیطی در این حالت به شکل زیر است:

NODE_ENV=production
URL=https://docs.example.com
PORT=3000
SECRET_KEY=<first openssl value>
UTILS_SECRET=<second openssl value>
DATABASE_URL=postgres://outline:change_me@postgres:5432/outline
PGSSLMODE=disable
REDIS_URL=redis://redis:6379
FILE_STORAGE=local
FILE_STORAGE_LOCAL_ROOT_DIR=/var/lib/outline/data

مقدار PGSSLMODE=disable تنها زمانی صحیح است که پایگاه داده روی همان ماشین یا همان شبکه Docker قرار داشته باشد. برای پایگاه داده‌ای که از طریق شبکه به آن متصل می‌شوید، این مقدار را خالی بگذارید، در غیر این صورت اتصال به‌صورت متن آشکار (clear text) برقرار می‌شود. پیوست‌ها دیگر شما را مجبور به استفاده از object storage نمی‌کنند: FILE_STORAGE=local فایل‌های آپلود شده را در دایرکتوری بالا می‌نویسد که باید یک volume با قابلیت نوشتن برای کانتینر باشد و در بک‌آپ‌های شما نیز لحاظ شود. اگر می‌خواهید آن فایل‌ها در یک bucket سازگار با S3 ذخیره شوند، FILE_STORAGE=s3 را با مقادیر AWS_* تنظیم کنید.

و حالا بخشی که کاربران را غافلگیر می‌کند. Outline هیچ سیستم داخلی برای ورود با نام کاربری و رمز عبور ندارد. پیکربندی نمونه خودِ برنامه تأکید می‌کند که اعتبارنامه‌های ورود شخص ثالث الزامی است: «برای یک نصب فعال، حداقل یکی از این موارد مورد نیاز است، در غیر این صورت هیچ گزینه‌ای برای ورود نخواهید داشت». ارائه‌دهندگان مستند شده شامل Google، Slack، Microsoft Entra، Discord و هر سرور OpenID Connect (OIDC) عمومی از طریق OIDC_CLIENT_ID، OIDC_CLIENT_SECRET، OIDC_AUTH_URI، OIDC_TOKEN_URI و OIDC_USERINFO_URI هستند.

بنابراین هزینه واقعی Outline برابر است با Outline به اضافه PostgreSQL و Redis و یک ارائه‌دهنده هویت (identity provider). اگر تیم شما از قبل با Google Workspace یا Microsoft Entra وارد سیستم می‌شود، آن بخش آخر تنها ده دقیقه از وقت شما را می‌گیرد و Outline بسیار جذاب می‌شود. اگر این‌طور نیست، شما باید سرویسی مانند Keycloak یا Authentik را نیز خودتان میزبانی کنید که این یعنی یک سرویس دوم برای وصله کردن (patch) و بک‌آپ گرفتن. حافظه را متناسب با آن در نظر بگیرید: طبق راهنمای خودِ Outline، حدود 512 مگابایت برای هر پردازش وب که توسط WEB_CONCURRENCY تعیین می‌شود، علاوه بر حافظه مورد نیاز برای پایگاه داده و Redis، لازم است.

نحوه مدیریت دسترسی به محتوا در هر یک از این سرویس‌ها

نرم‌افزار BookStack به‌صورت پیش‌فرض از حساب‌های کاربری محلی (ایمیل و رمز عبور) پشتیبانی می‌کند و برای جایگزینی، امکان استفاده از LDAP، SAML2 و OIDC را نیز فراهم کرده است. سطوح دسترسی بر اساس نقش‌ها (Role) تعیین می‌شوند و می‌توان آن‌ها را برای یک قفسه (Shelf)، کتاب، فصل یا صفحه به‌صورت اختصاصی بازنویسی کرد. از آنجا که سلسله‌مراتب در این سیستم ثابت است، مجوزها به‌طور قابل‌پیش‌بینی از سطوح بالا به پایین به ارث می‌رسند.

نرم‌افزار Wiki.js نیز علاوه بر حساب‌های کاربری محلی، فهرست گسترده‌ای از روش‌های احراز هویت را ارائه می‌دهد که می‌توانید آن‌ها را در بخش مدیریت فعال کنید. قوانین دسترسی در این سیستم بر اساس الگوهای مسیر (Path pattern) اجازه دسترسی می‌دهند یا آن را مسدود می‌کنند. این قابلیت بسیار قدرتمند است اما احتمال اشتباه در آن وجود دارد؛ زیرا قانونی که برای ops/* نوشته شده است، به‌طور خودکار تمام صفحاتی را که بعداً در آن مسیر ایجاد می‌کنید نیز تحت تأثیر قرار می‌دهد.

نرم‌افزار Outline مدیریت دسترسی را به‌طور کامل به سرویس احراز هویت واگذار می‌کند. عضویت کاربران از طریق Identity Provider شما مدیریت می‌شود و در داخل Outline، کنترل دسترسی‌ها بر اساس مجموعه (Collection) و گروه (Group) انجام می‌گیرد. در این مدل، هنگام خروج یک کارمند از شرکت، هیچ حساب کاربری محلی باقی نمی‌ماند؛ این یک مزیت واقعی است، زیرا Identity Provider همان سیستمی است که شما فرآیند حذف دسترسی‌ها را از طریق آن انجام می‌دهید.

نحوه عملکرد جستجو در هر کدام

جستجو بخشی است که تعیین می‌کند یک ویکی جایگاه خود را حفظ می‌کند یا به پوشه‌ای از فایل‌های فراموش‌شده تبدیل می‌شود.

BookStack پایگاه داده را جستجو می‌کند و به خوانندگان یک زبان پرس‌وجو ارائه می‌دهد که در یک دقیقه قابل یادگیری است. قرار دادن یک عبارت داخل گیومه، مانند "london meeting"، مستلزم تطابق دقیق آن رشته است. کروشه‌ها برای جستجوی برچسب‌ها استفاده می‌شوند: [location=london] بر اساس نام برچسب، مقدار یا هر دو جستجو می‌کند و شامل مقایسه‌گرهایی مانند !=، >= و like است. آکولادها برای فیلتر کردن بر اساس متاداده به کار می‌روند، مانند {created_after:2016-12-30}. هر عبارت دقیق، برچسب یا فیلتر را می‌توان با افزودن پیشوند - نقیض کرد. BookStack تعداد عبارات از هر نوع در یک پرس‌وجو را محدود می‌کند، بنابراین پرس‌وجوهای بسیار طولانی به جای اجرا شدن، کوتاه می‌شوند.

Wiki.js جستجو را به عنوان یک ماژول قابل‌افزودن (pluggable) در نظر می‌گیرد. موتورهای مستندشده شامل یک موتور پایگاه داده پایه، موتور PostgreSQL، Elasticsearch، Algolia، AWS CloudSearch و Azure Search هستند. موتور پایه برای چند صد صفحه مناسب است. اگر از PostgreSQL استفاده می‌کنید، در بخش مدیریت به موتور PostgreSQL تغییر وضعیت دهید، زیرا این موتور به جای تطابق ساده، از ایندکس متن کامل (full text index) خود پایگاه داده استفاده می‌کند. Elasticsearch را برای ویکی‌هایی نگه دارید که به اندازه‌ای بزرگ هستند که اجرای یک سرویس جستجوی مجزا و نگهداری آن برایتان توجیه‌پذیر باشد.

Outline ایندکس‌های متن کامل PostgreSQL را جستجو می‌کند. هیچ موتوری برای انتخاب وجود ندارد و چیزی برای تنظیم کردن نیست؛ همچنین این ابزار متن داخل اسناد بارگذاری‌شده را نیز جستجو می‌کند. برای یک ویکی تیمی با چند هزار سند، این گزینه کم‌دردسرترین مورد در میان این سه است. البته اگر سرعت آن دیگر کافی نباشد، هیچ اهرم یا تنظیمی برای بهبود آن وجود ندارد.

کدام گزینه برای شما مناسب است

اگر می‌خواهید همین امروز بعدازظهر ویکی خود را راه‌اندازی کنید و ترجیح می‌دهید به‌جای بحث درباره ساختار، روی محتوا تمرکز کنید، BookStack را انتخاب کنید. این ابزار کمترین اجزای متحرک را دارد: یک برنامه PHP و یک دیتابیس MySQL. این گزینه برای کتابچه‌های راهنمای داخلی و مستندات مشتری مناسب است و برای تیم‌هایی که اکثر نویسندگان آن‌ها مهندس نیستند، کارایی دارد. همچنین، پشتیبان‌گیری از آن در میان این سه گزینه از همه آسان‌تر است، زیرا کل وضعیت برنامه شامل یک خروجی دیتابیس و دایرکتوری فایل‌های آپلود شده است.

اگر به ویرایشگر خاصی نیاز دارید یا استراتژی احراز هویت ویژه‌ای مد نظر دارید که سایر گزینه‌ها ارائه نمی‌دهند، یا اگر قصد دارید حجم بزرگی از فایل‌های Markdown یا AsciiDoc موجود را وارد کنید و می‌خواهید ساختار مسیرها حفظ شود، Wiki.js را انتخاب کنید. بپذیرید که در حال اجرای یک پشته سنگین‌تر هستید و تگ نسخه اصلی (major version) را ثابت نگه دارید.

اگر کیفیت نوشتار اولویت اصلی شماست، ویکی برای یک تیم است (نه برای عموم) و از قبل یک سرویس‌دهنده هویت (identity provider) دارید، Outline را انتخاب کنید. این ابزار با ارائه ویرایشگری که کاربران واقعاً از کار با آن لذت می‌برند، این پیکربندی را جبران می‌کند. آن را به‌عنوان اولین برنامه self-hosted خود انتخاب نکنید.

اگر هیچ‌کدام از این سه گزینه مناسب نیست، معمولاً عدم تطابق به نوع محتوا برمی‌گردد. فاکتورها و قراردادهای اسکن‌شده به یک سیستم مدیریت اسناد مانند Paperless-ngx تعلق دارند، نه به یک ویکی؛ و اجبار به قرار دادن آن‌ها در ویکی، دلیلی است که بسیاری از ویکی‌ها در نهایت متروکه می‌شوند. عدم تطابق رایج دیگر، نیاز به یک فضای کاری (workspace) به‌جای ویکی است؛ فضایی که اسناد، جداول و تخته‌سفید را روی یک بوم واحد ارائه دهد که در این صورت یک فضای کاری self-hosted مانند AFFiNE بهتر از هر سه گزینه بالا عمل می‌کند. برای دیدگاهی گسترده‌تر از آنچه ارزش میزبانی روی سرور شخصی شما را دارد، لیست کوتاه self-hosting برای سال 2026 را ببینید.

تخمین منابع و پشتیبان‌گیری

هر سه سرویس روی یک VPS کوچک قابل اجرا هستند، اما حداقل منابع مورد نیاز بسته به ماهیت هر سرویس متفاوت است. BookStack شامل یک پردازش برنامه و MySQL است. Wiki.js از یک پردازش Node و PostgreSQL استفاده می‌کند. Outline شامل یک پردازش Node، PostgreSQL و Redis است و معمولاً به یک سرویس احراز هویت (identity provider) نیز نیاز دارد؛ به همین دلیل است که Outline به حافظه رم بیشتری نیاز دارد.

پایگاه داده و فایل‌های آپلود شده را همزمان پشتیبان‌گیری کنید و پیش از آنکه به پشتیبان خود تکیه کنید، حتماً یک بار هر دو را در یک نمونه (instance) آزمایشی بازیابی کنید. پشتیبانی که هرگز بازیابی نشده، صرفاً یک حدس است. برای BookStack، این کار به معنای تهیه نسخه از mysqldump و volume مربوط به /config است. برای Wiki.js و Outline، این کار شامل pg_dump به همراه volume داده‌هاست و برای Outline، باید محتویات FILE_STORAGE_LOCAL_ROOT_DIR را نیز در نظر بگیرید.

FAQ

کدام ویکی self-hosted برای نصب از همه ساده‌تر است؟

BookStack. این یک برنامه PHP واحد با دیتابیس MySQL است و پروژه یک اسکریپت نصب برای Ubuntu 24.04 ارائه می‌دهد که Apache، MySQL 8.0 و PHP 8.3 را در یک مرحله راه‌اندازی می‌کند. ایمیج کانتینر فقط به یک APP_KEY و اعتبارنامه‌های دیتابیس نیاز دارد. Wiki.js یک Node runtime و یک سرور PostgreSQL اضافه می‌کند و Outline علاوه بر آن‌ها، به Redis و یک ارائه‌دهنده هویت خارجی نیز نیاز دارد.

آیا می‌توانم از Outline بدون Google یا سایر ارائه‌دهندگان SSO استفاده کنم؟

خیر. Outline قابلیت ورود با نام کاربری و رمز عبور محلی ندارد. پیکربندی نمونه آن بیان می‌کند که حداقل به یک ارائه‌دهنده ورود شخص ثالث نیاز است، در غیر این صورت هیچ گزینه ورودی نخواهید داشت. می‌توانید از Google، Slack، Microsoft Entra، Discord یا هر سرور OpenID Connect عمومی مانند Keycloak یا Authentik که خودتان میزبانی می‌کنید، استفاده کنید. اجرای آن ارائه‌دهنده بخشی از هزینه اجرای Outline است.

آیا باید Wiki.js 3 را نصب کنم یا Wiki.js 2 را؟

نسخه 2. تا ژوئیه 2026، جدیدترین نسخه منتشر شده از سری 2، نسخه 2.5.314 است که در مه 2026 عرضه شده است. مستندات نسخه 3 به‌صراحت بیان می‌کند که این یک نسخه بتای ناپایدار است و نباید در محیط production نصب شود. ایمیج خود را روی ghcr.io/requarks/wiki:2 قفل (pin) کنید و نه latest، زیرا تغییر نسخه اصلی (major version) باعث تغییر طرح‌واره (schema) دیتابیس در یک نمونه در حال اجرا می‌شود.

کدام‌یک بهترین جستجو را دارد؟

هرکدام نقاط قوت متفاوتی دارند. BookStack به خوانندگان یک زبان پرس‌وجو با عبارات دقیق، فیلترهای برچسب مانند [location=london] و فیلترهای متادیتا مانند {created_after:2016-12-30} می‌دهد و هر یک از این عبارات را می‌توان با یک - در ابتدای آن نفی کرد. Outline نیازی به پیکربندی ندارد و متن داخل فایل‌های آپلود شده را جستجو می‌کند. Wiki.js قابل‌تنظیم‌ترین گزینه است، زیرا شما موتور جستجو را انتخاب می‌کنید و به‌محض اینکه تعداد صفحات ویکی شما از چند صد صفحه فراتر رفت، ارزش دارد که به موتور PostgreSQL سوییچ کنید.

آیا می‌توانم بعداً محتوای خود را از یکی به دیگری منتقل کنم؟

تا حدی، اما باید انتظار کار دستی را داشته باشید. هر سه برنامه Markdown را export و import می‌کنند، بنابراین متن صفحات معمولاً حفظ می‌شود. ساختار به‌طور تمیز منتقل نمی‌شود: کتاب‌ها و فصل‌های BookStack معادل دقیقی در اسناد تو در توی Outline ندارند و مسیرهای Wiki.js با سلسله‌مراتب ثابت BookStack مطابقت ندارند. فایل‌های پیوست، مجوزها و تاریخچه صفحات بخش‌هایی هستند که احتمال از دست رفتن آن‌ها بیشتر است؛ بنابراین پیش از نهایی کردن مهاجرت، یک نمونه را export کرده و آن‌ها را بررسی کنید.

#bookstack#wikijs#outline#wiki#self-hosting#knowledge-base