BookStack یا Wiki.js یا Outline؛ کدام ویکی بهتر است؟
مقایسه BookStack، Wiki.js و Outline از نظر نصب، ویرایش، ورود و جستوجو؛ با معرفی انتخاب مناسب برای مدیر تنها و تیمها و نکته احراز هویت 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.09 است که در 24 سپتامبر 2026 عرضه شد و جدیدترین نسخه پایدار 26.09.1 است. از نسخه 26.09 به بعد، باید یک مقدار APP_KEY تنظیم شود که مراحل کانتینری زیر آن را پوشش میدهند.
این پروژه اسکریپتهای نصب را فقط برای نسخههای پشتیبانیشده Ubuntu LTS منتشر میکند که در حال حاضر شامل 22.04، 24.04 و 26.04 هستند. اسکریپت 24.04 برای شما Apache، MySQL 8.0 و PHP 8.3 را نصب میکند. در نسخه 26.04، در دستورات زیر از installation-ubuntu-26.04.sh استفاده کنید؛ این دستور MySQL 8.4 و PHP 8.5 را نصب میکند.
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 را نصب میکند و میتواند هرگونه تنظیمات وب موجود روی دستگاه را بازنویسی (OVERWRITE) کند». روی سروری که هماکنون به پورت 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 خالی است یا اعتبارنامههای دیتابیس مطابقت ندارند. بهطور پیشفرض، BookStack خطاهای خود را بهجای خروجی کانتینر در یک فایل لاگ مینویسد، بنابراین ./config/log/bookstack/laravel.log را روی هاست باز کنید تا ببینید کدامیک از این دو مورد است. 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 استفاده نکنید، زیرا جهش نسخه اصلی، طرحواره پایگاه داده را در یک نمونه در حال اجرا تغییر میدهد.
نسخه 2 نسخهای است که باید اجرا شود. تا اکتبر 2026، جدیدترین نسخه منتشرشده از سری 2، نسخه 2.5.316 است که در اکتبر 2026 عرضه شد. نسخههای سری 2 اکنون از یک مخزن requarks/wiki-v2 جداگانه منتشر میشوند و تگ ایمیج :2 همچنان آنها را دنبال میکند. نسخه 3 در مرحله بتای عمومی است. مستندات نصب آن بیان میکند که ایمیجهایش با 3.0.0-beta تگگذاری شدهاند و تگهای ساده 3 و 3.0 تا پایان مرحله بتا کار نخواهند کرد. با آن به عنوان یک پیشنمایش برخورد کنید، نه یک هدف برای محیط عملیاتی (production). نسخه 2.5.316 همچنین یک ابزار خروجی برای انتقال محتوا به نسخه 3 در آینده اضافه میکند.
در اولین بارگذاری، Wiki.js شما را از طریق یک تنظیمات درونمرورگری راهنمایی میکند که حساب مدیر را ایجاد میکند. تا زمانی که این مرحله را به پایان نرسانید، هر کسی که به پورت دسترسی پیدا کند، آن ویزارد را میبیند؛ بنابراین پیش از باز کردن فایروال، سرویس را پشت reverse proxy و TLS (امنیت لایه انتقال) خود قرار دهید. یک ویکی با نام دامنه اختصاصی، زمانی که سرور بیش از این یک سرویس را میزبانی میکند، بهطور طبیعی پشت Traefik در مقابل چندین برنامه Docker قرار میگیرد.
انتخاب ویرایشگر دلیلی است که افراد Wiki.js را انتخاب میکنند. یک نمونه میتواند صفحات Markdown، صفحات ویرایشگر بصری، صفحات HTML خام و صفحات AsciiDoc را در کنار هم نگه دارد. این ویژگی هنگام وارد کردن محتوای قدیمی با فرمتی که ترجیح میدهید تبدیل نکنید، کمککننده است. همچنین این راهی برای رسیدن به چهار سبک نگارشی متفاوت در یک ویکی است، بنابراین ویرایشگر پیشفرض را از روز اول تعیین کنید و آن تصمیم را یادداشت نمایید.
Outline: بهترین ویرایشگر، سنگینترین پیشنیازها
Outline همان چیزی است که کاربران معمولاً وقتی میگویند ابزاری شبیه به نرمافزارهای تجاری یادداشتبرداری میخواهند، به آن اشاره دارند. این یک برنامه Node.js است و نسخه فعلی آن تا تاریخ 17 اکتبر 2026، نسخه 1.11.0 است که در 12 اکتبر 2026 منتشر شده است. فایل نمونه محیط (environment file) آن، نیازهایش را فهرست میکند: PostgreSQL از طریق DATABASE_URL، Redis از طریق REDIS_URL، دو مقدار مخفی تصادفی و یک 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/dataPGSSLMODE=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 وارد میشود، آن بخش آخر فقط 10 دقیقه از وقت شما را میگیرد و 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 و یک سرویس احراز هویت خارجی (identity provider) نیز وابسته است.
آیا میتوانم از 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.316 است که در اکتبر 2026 عرضه شده و نسخه 3 همچنان در مرحله بتا قرار دارد که ایمیجهای آن دارای تگ 3.0.0-beta هستند. ایمیج خود را روی ghcr.io/requarks/wiki:2 قفل (pin) کنید و از latest استفاده نکنید، زیرا تغییر نسخه اصلی (major version) باعث تغییر در ساختار دیتابیس (schema) در نمونه در حال اجرا میشود.
کدامیک بهترین قابلیت جستجو را دارد؟
هر کدام نقاط قوت متفاوتی دارند. BookStack به کاربران یک زبان پرسوجو (query language) با قابلیت جستجوی عبارات دقیق، فیلترهای برچسب مانند [location=london] و فیلترهای متادیتا مانند {created_after:2016-12-30} میدهد و هر یک از این عبارات را میتوان با قرار دادن - در ابتدای آن، نفی کرد. Outline نیاز به پیکربندی ندارد و متن داخل فایلهای آپلود شده را نیز جستجو میکند. Wiki.js قابلتنظیمترین گزینه است، زیرا شما موتور جستجو را انتخاب میکنید و به محض اینکه تعداد صفحات ویکی شما از چند صد صفحه فراتر رفت، استفاده از موتور PostgreSQL توصیه میشود.
آیا میتوانم بعداً محتوای خود را از یکی به دیگری منتقل کنم؟
تا حدی، اما باید انتظار کار دستی را داشته باشید. هر سه برنامه از فرمت Markdown برای خروجی و ورودی پشتیبانی میکنند، بنابراین متن صفحات معمولاً حفظ میشود. ساختار به درستی منتقل نمیشود: کتابها و فصلهای BookStack معادل مستقیمی در اسناد تو در توی Outline ندارند و مسیرهای Wiki.js با سلسلهمراتب ثابت BookStack مطابقت ندارند. فایلهای پیوست، مجوزها و تاریخچه صفحات بیشترین احتمال از دست رفتن را دارند؛ بنابراین پیش از نهایی کردن مهاجرت، یک نمونه را خروجی بگیرید و بررسی کنید.